Tips/Trucos para Linux
Bueno les traigo desde ESTA web algunos tips interesantes en consola para aquellos que les gusta la terminal…
Los siguientes trucos se adaptan practicamente todos a cualquier versión de Linux, puesto que la gran mayoría van dirigidos a la consola. La consola para un usuario acostumbrado a Windows e inexperto en el mundo de Linux puede parecer complicada, pero no cabe duda de que con el tiempo es la mejor forma de sacarle el mayor rendimiento a Linux. Comencemos:
Evitar salir de la sesión o cerrar la terminal con el comando Ctrl+D
set -o ignoreeof Desactiva Ctrl+Dset +o ignoreeof Reactiva Ctrl+DMatar todos los procesos de determinada aplicación:
ps aux c.
Obtendremos una completa lista de los procesos que están funcionando. En la primera columna aparece el usuario al que pertenece cada proceso, en la segunda aparece el PID del proceso, y si saltamos hasta la última veremos el nombre de la aplicación a la que pertenece cada proceso.
Para buscar la aplicación que queremos “matar” haremos
ps aux c | grep firefoxpor ejemplo, donde firefox es el nombre de la aplicación que queremos matar. Para terminar con ella solo hay que hacer
kill -9
de los PID´s de los procesos que nos hayan aparecido.
kill -9 3125 3245 ...
Por último volvemos a hacer
ps aux c | grepfirefox y no deberá aparecer.
Los alias
Por tanto para asignar un alias:
alias nombre_del_alias="comando_que_ejecutará_el_alias"
Para quitar un alias se usa el comando unalias:
unalias nombre_del_aliasPara ver los alias definidos en el sistema teclearemos simplemente:
aliasAveriguar cuanto tiempo ha tardado en ejecutarse un comando
[J.F.]$ time tar -cvf backup.tar * a 1 0K a 2 0K a 3 0K a back.tar.gz 1K real 0m0.02s user 0m0.02s sys 0m0.00s
[J.F.]$ time ls 1 2 3 back.tar.gz backup.tar real 0m0.01s user 0m0.00s sys 0m0.01s
Ejecución de comandos en segundo plano
Puede que en determinadas ocasiones necesitemos ejecutar cualquier cosa en segundo plano. Ésto resulta tremendamente útil para evitar tener
abiertas varias terminales al mismo tiempo. Para ello ejecutaremos la orden normal pero añadiendo al final “&”.
ls -lrt & tar -cvf backup.tar documentos directorio &
Los 10 comandos que más usas en Linux
history|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c|sort -rn|head -10
Paginar la salida por pantalla de un comando
ls -l | lessls -l | morels -l | pgEn éste ejemplo se muestra la salida del comando ls -l de forma que en caso de que sea muy grande, podamos leerla poco a sin problemas.
Redireccionamiento
> Escribe la salida en un fichero (Y borra todo lo que hubiese en ese fichero).
>> Añade la salida al final de un fichero (No borra nada).
Ejemplo (genera una lista ordenada del contenido de un directorio en un fichero):
$ ls > lista $ sort < lista > lista_ordenada
l $ ls archivo4 ls: archivo4: No such file or directory
$ ls archivo4 2 > errores $ cat errores ls: archivo4: No such file or directory
Tambien podemos usar la combinacion de ambos, por ejemplo:
$ miscript > log 2>; logerrores $ miscript &> todo_a_lmismo_log
Tuberías
Ejemplos habituales del uso de tuberías:
$ dmesg | tail $ history | grep comando $ ls -l | less
Evitar sobreescritura de archivos
ya tenemos.
$set -o noclobberDe ésta manera activamos la protección de sobreescritura.
$set +o noclobberAsí volveríamos a dejarlo como estaba.
Ejemplo:
$ls lista1 lista2 $set -o noclobber $ls > lista1 bash: lista1: cannot overwrite existing file
Caracteres especiales
* * -> Se sustituye por cualquier cadena de texto.
* ? -> Se sustituye por cualquier carácter.
* [] -> Su contenido define una lista de caracteres por los cuales se puede sustituir.
* \ -> Deshabilita las funciones de los otros carácteres especiales.
* ‘cadena’ -> En la cadena de texo encerrada entre comillas simples, no se tienen en cuenta los carácteres especiales ni el espacio.
* `cadena` -> La cadena de texto encerrada entre acentos graves se utiliza como argumento de una línea de comandos.
Proteger archivos contra el borrado
chattr +i nombrearchivo
chattr -i nombrearchivo
Aumentar espacio de Linux sin tocar la tabla de particiones
dd if=/dev/zero of=nueva_particion count=tamaño
Hay que sustituir tamaño por un número, que será igual a la cantidad de espacio deseado en MB multiplicado por 2048 (por ejemplo, si queremos 100MB, 100*2048=204800).
Una vez hecho ésto, obtenemos un fichero llamado nueva_particion del tamaño deseado. Ahora toca crear el sistema de ficheros:
mkfs.ext3 /mnt/windows/nueva_particion
Por último procedemos a montarlo:
mount -o loop /mnt/windows/nueva_particion /mnt/nueva_particion
Si se desea, también se puede añadir una línea a /etc/fstab:
/mnt/aux/nuevo /mnt/nueva_particion ext3 loop,rw,auto 0 2
Parece una tontería, pero es útil, ya que que los sistemas de ficheros vfat no soportan ni usuarios, ni permisos, ni enlaces. Además, ésta nueva partición la podemos montar, por ejemplo, en /home/usuario/Documentos, que si montásemos ahí la vfat, nos montaría todo el sistema de ficheros. Ya tenemos nuestra nueva partición lista para usar, por si no es evidente, para hacer ésto necesitamos tener montada la partición windows con posibilidad de escritura.
Combinaciones de teclas a la hora de tipear en consola
Retroceso o Ctrl-H (^H) Borra el caracter anterior y traslada el cursor a la posición del carácter anterior
Ctrl-U (^U) Borra toda la línea actual y traslada el cursor al principio de la línea actual
Ctrl-C (^C) Acaba la orden actual y traslada el cursor al principio de la linea siguiente
Ctrl-S (^S) Detiene el desplazamiento de la salida en pantalla ( o en la ventana de consolas).
Esta combinación ya no es frecuente pero siempre conviene tenerla en cuenta.
Ctrl-Q (^Q) Reanudar el desplazamiento de la salida en pantalla. Se utiliza junto con ^S.
Puntos a tener en cuenta para la seguridad(muy útil por ejemplo en el caso de un servidor Linux).
1. No crees archivos que tengan permiso de escritura para todo el mundo. Para esto es importante que observen que su valor de umask sea lo más grande posible. Afortunadamente el valor por defecto en linux es 0022 lo cual crea archivos con todos los permisos menos el de escritura menos para el dueño.2. Busca archivos con permisos de escritura:
find . -perm -2 -printAsí podrás evaluar el riesgo de los archivos más vulnerables en su sistema de archivos.
3. Buscar archivos que tienen permisos suid, es decir, que se pueden ejecutar como root porque tienen activado el bit correspondiente.
Introducimos esta opción como root y miramos los resultados para evaluar los binarios qué permisos tienen. Esto es importante porque se pueden vulnerar comandos básicos que por ejemplo en un crontab pueden acabar con la estabilidad del sistema si el binario ha sido modificado.
find / -type f -perm +6000 -ls
Muy pendientes a los resultados y sobre todo a los binarios que le dan a cualquier usuario permisos de root. Este punto es especialmente importante.
4. Es importante que en los dispositivos los usuarios extraños no tengan ningún acceso de escritura así que vigilaremos este aspecto buscando
dispositivos vulnerables con:
find /dev -perm -2 -print
Esta es tal vez la vulnearbilidad más temida de linux debido a que los dispositivos son tratados como carpetas y cualquier descuido puede desconfigurar una unidad de backup etc.
Copiar archivos de un servidor a otro usando la shell
scp archivo_origen usuaio_destino@servidor_destino:/directorio/destino/archivo_destino
Apagar, reiniciar, modo consola…
Apagar la máquina:
[root@localhost ~]# init 0
Reiniciar la máquina:
[root@localhost ~]# init 6
Entrar a la terminal:
[root@localhost ~]# init 3
Volver de la terminal a modo gráfico:
[root@localhost ~]# init 4
Más comandos útiles
cd ~ (nos lleva al directorio HOME del usuario acutal, ~ sirve con cualquier comando)
Crear variable de entorno. Es preferible uar mayúsculas para los nombres de variables:
export VARIABLE=/home/usuario/directorio
Para usarla solo se coloca el comando y se usa el simbolo $ para llamara a la variable. Ejemplo:
cd $VARIABLE
Esta variable sirve mientras se tenga abierta la terminal en que se creó. Para dejarla fija la variable y que no se borre solo se tiene que editar el archivo .bashrc
echo $VARIABLE (muestra el valor una variable)
unset $VARIABLE (borra la variable)
Algunas variables de sistema utiles:
$HOME $PATH $PS1
Saludos, comenten si les sirvió…
Puedes seguir cualquier respuesta a esta entrada mediante el canal RSS 2.0. Puedes dejar un comentario o enviar un trackback desde tu propio sitio.















Muy buen post!!, sabes tengo que dar una charla sobre el interprete de comandos de Unix en la Expo 2009 de Mendoza, si me dejas voy a sacar algunas ideas de aca.
Gracias por ponerme en el blogroll estas en el mio.
Saludos!
Un gusto tty0, te dejo otro post que también te puede servir, cualquier cosa pregunta…
http://www.zarpele.com.ar/2008/11/mi-amiga-la-consola/
Gracias por comentar