Estaba yo configurando y retocando mi elive gem, recien instalado (gracias diego por la descarga :P), cuando decido que demora demasiado en arrancar, ok, una de las formas de hacer que linux (o cualquier otro sistema operativo) arranque mas rapidamente, es.. logico ! que cargue menos aplicaciones al hacerlo. Para lograr mi cometido, me dirijo a una consola (logueado como root, por supuesto), voy hasta uno de mis directorios favoritos “/etc“, y luego a “rc5.d“, ya que utilizo modo grafico, y en debian el runlevel para ese modo es el 5. Borro algunos archivos (los enlaces, claro), que veo innecesarios.. y entre rm y rm.. en una de esos momentos en que uno viaja al infinito y toca las estrellas y todas esas cosas.. presiono la combinacion de teclas exactas para escribir lo siguiente:
# rm archivo_que_no_recuerdo * <ENTER>
rm: no se puede borrar “archivo_que_no_recuerdo”: No existe el fichero o directorio.
Que ? como que no existe ? hmm.. regreso a la tierra y repaso el comando introducido…
# rm archivo_que_no_recuerdo *
borrara archivo_que_no_recuerdo y luego TODOS los archivos, incluyendo archivo_que_no_recuerdo, que ya no existe. RAYOS !!! borre todo ! nooooo… y soy root, fuck !! y aurora ? bueno.. tengo el listado de archivos producido por un “ls” justo antes de borrarlos.. y ya que esos son enlaces y los destinos estan todos en el mismo directorio, supongo que me servira de algo.. sin dudarlo, guardo esa lista en un archivo:
# cat > lista <<EOF
> (selecciono el listado y lo pego)
> EOF
edito la lista para dejar un archivo por linea (me sirve como esta, pero queda mas bonito asi :D)
# nano lista # (no, no uso el vi xq apesta XD)
luego veremos como puedo utilizarlo a mi favor, supongo el “for” me ayudara en esto..
# for a in `cat lista`; do echo $a; done
y obtengo el listado de archivos, tal y como lo tengo guardado, con el formato:
S[0-9]{2}[a-z.-]+ –> ej. S99rc.local
los enlaces siguen la siguiente regla (supongo):
S([0-9]{2})([a-z.-]+) apunta a ../init.d/$2
por lo que tendria modificar la cadena.. para obtener el nombre del archivo separado del “S[0-9]{2}“, no es de las cosas que se hacer mejor, pero supongo podre arreglarmelas.. ![]()
Veamos, se que existe una utilidad llamada “sed“, que “man sed” me dice acepta expresiones regulares tipo perl, eso me gusta :), una simple prueba, para ver si es lo que necesito:
# echo “ab”|sed -r ’s/(a)(b)/\2\1/’
ba
Correcto !, ahora aplicarlo a mi lista:
# for a in `cat list`; do echo $a|sed -r “s/S([0-9]{2})(.*)/\2/”; done
y los nombres son impresos correctamente, de la forma: rc.local, ahora a crear los enlaces:
# for a in `cat list`; do echo $a|sed -r “s~(S[0-9]{2})(.*)~ln -s ../init.d/\2 \1\2~”; done
eso me imprime algo como:
ln -s ../init.d/rc.local S99rc.local
…
que es justo lo que necesito, y para terminar, agrego un “eval“:
# for a in `cat list`; do eval “`echo $a|sed -r ’s~(S[0-9]{2})(.*)~ln -s ../init.d/\2 \1\2~’`”; done
# ls
y listo, tengo todos los archivos que necesito donde los necesito ;).. eaea !.. si, ya se que estaras pensando “hay una forma mas (simple|rapida|mejor|eficiente|*) de hacerlo”, pero bueno, era para salir de un apuro
Moraleja: no tome si se loguea como root ! XDD
PD: Desconozco la razon por la cual tipee “*” al final de la instruccion “rm” (por las dudas
)
3 Comments
#1. Daniel 11.12.2007
Salado laburo (Y)
pero con el VI no te metas eh! jeejej
salutes o/
#2. Marcelo 12.20.2007
Creo que en realidad en lugar de borrar los enlaces es mejor que vayas a /etc/rc5.d y renombres los enlaces a los servicios que empiezan con “S” a “K” para que no se enlacen durante el arranque.
O también puedes ir a /etc/init.d y hacer un chmod -x a los servicios que no necesites.
#3. Gonzalo Arreche 12.21.2007
@Daniel: bueno, al menos parece que existe gente que usa el vi.. a veces pienso q es algo q ponen en las distros simplemente por nostalgia
@Marcelo: jaja.. bue, eliminarlos era mas.. (divertido?).. jajaja.. espero recordar eso para la siguiente XDD..
Saludos..
Leave a Comment