Regresar   Foro de marcianitos.org > Emuladores y programas de todo tipo > Sistemas operativos > Linux

 
 
Old 03-ago-2008, 18:18   #1
NiNTeNDeRo
Editor Marciano
Trucos para linux

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

Quote:
set -o ignoreeof Desactiva Ctrl+D
set +o ignoreeof Reactiva Ctrl+D
Matar todos los procesos de determinada aplicación:

Muy útil cuando un programa consume demasiados recursos. Abrimos una terminal y tecleamos 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 firefox por 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 | grep firefox y no deberá aparecer.

Los alias


Los alias son, como su nombre indica, alias. Cuando introducimos un comando con un alias, el shell lo sustituye por su valor. Por ejemplo, si definimos un alias así: alias buscar="find . -name", cuando introduzcamos en la línea de comandos buscar nombre_archivo el shell ejecutará find . -name nombre_archivo y buscará el archivo que le digamos a partir de la ruta actual.
Por tanto para asignar un alias:

Quote:
alias nombre_del_alias="comando_que_ejecutará_el_alias"
Para quitar un alias se usa el comando unalias:

Quote:
unalias nombre_del_alias
Para ver los alias definidos en el sistema teclearemos simplemente:

Quote:
alias
Averiguar cuanto tiempo ha tardado en ejecutarse un comando

En ocasiones puede resultar útil saber cuanto tiempo ha tardado en ejecutarse un comando. Para ello simplemente ejecutaremos la orden con el comando time por delante:

Quote:
[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
Quote:
[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 "&".

Quote:
ls -lrt &
tar -cvf backup.tar documentos directorio &
Los 10 comandos que más usas en Linux

Para saberlos basta simplemente con ejecutar en consola la siguiente orden:

Quote:
history|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c|sort -rn|head -10
history muestra una lista de todos los comandos que hemos ejecutado recientemente (utilizado por bash y otras shells para mostrar el comando anterior y posterior al pulsar las teclas de flecha arriba y flecha abajo, al usar !! para ejecutar el comando anterior, etc) siendo los que tienen los números más pequeños los más antiguos. Se utiliza awk para quedarnos con el comando en sí, sin argumentos ni flags. Utiliza sort para ordenar la lista de comandos alfabéticamente. Después uniq, que dada una lista en la que tenemos n líneas idénticas sucesivas deja sólo una de las líneas, añadiendo el número de líneas iguales que había antes (flag -c) al comienzo de la línea. Se vuelve a ordenar la lista de forma que la ordenación sea por el número de veces que se ejecutó el comando, que ahora es la primera cadena de la línea (-n para que sea ordenación numérica), y de mayor a menor (-r, reversed). Por último, se utiliza head para mostrar las 10 (-10) primeras líneas.

Paginar la salida por pantalla de un comando

Muchas veces ejecutamos comandos cuya salida por pantalla es superior a la que cabe por pantalla. Cuando preveemos que el resultado por pantalla de un comando puede superar la pantalla, podemos hacer que esa salida por pantalla sea paginada, es decir, que nos la vaya mostrando poco y no nos la muestre toda de golpe.

Quote:
ls -l | less
ls -l | more
ls -l | pg
En é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):

Quote:
$ ls > lista
$ sort < lista > lista_ordenada
Cuando redireccionamos la salida de un comando con ">" o ">>",si por alguna razon ese comando da algun error lo va a volcar en la pantalla y no hacia donde estemos redireccionando. Para redireccionar la salida de error a un arhivo, tenemos que usar "2>" o "2>>".

Quote:
l $ ls archivo4
ls: archivo4: No such file or directory
Quote:
$ ls archivo4 2> errores
$ cat errores
ls: archivo4: No such file or directory
Tambien podemos usar la combinacion de ambos, por ejemplo:

Quote:
$ miscript > log 2> logerrores
$ miscript &> todo_a_lmismo_log
Tuberías

Es posible en linux, que dos programas trabajen a la vez, mediante tuberías. Las tuberías se escriben en la línea de comandos con el carácter '|'. En el ejemplo anterior hemos visto como generar una lista ordenada con redireccionamientos, pero dependíamos de un fichero temporal. Ese fichero nos lo podemos ahorrar con las tuberías de ésta manera: ls | sort.
Ejemplos habituales del uso de tuberías:

Quote:
$ dmesg | tail
$ history | grep comando
$ ls -l | less
Evitar sobreescritura de archivos

Este tip es para proteger los archivos cuando se redirecciona la salida estándar de Unix stdout para evitar que se sobreescriban los archivos que
ya tenemos.

Quote:
$set -o noclobber De ésta manera activamos la protección de sobreescritura.
$set +o noclobber Así volveríamos a dejarlo como estaba.
Un ejemplo:

Quote:
$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

Existe un comando en linux para crear ciertos atributos de inmunidad sobre algunos archivos o todos los archivos que uno quiera proteger. Si se desea proteger un archivo contra borrarlo o ante ataques se utilizará el siguiente comando:

Quote:
chattr +i nombrearchivo
Así solamente el superusuario puede evitar que se borren archivos, lo cual puede ser importantísimo para archivos de configuración como apache, entre otros. Para desactivar esa inmunidad en el archivo escribimos:

Quote:
chattr -i nombrearchivo
Aumentar espacio de Linux sin tocar la tabla de particiones

Linux trata los dispositivos como si fueran ficheros, por lo que podemos aprovechar esa ventaja. Así pues, lo que voy a hacer es explicar cómo crear un sistema de ficheros en un fichero (que, naturalmente, colocaremos en la partición del otro sistema operativo). El ejemplo lo pongo con windows, ya que es lo más utilizado. Bien, lo primero es ir donde tengamos montada nuestra partición Windows, por ejemplo,/mnt/windows. Ahí es donde crearemos el fichero en cuestión, de la siguiente manera:

Quote:
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:

Quote:
mkfs.ext3 /mnt/windows/nueva_particion
Por último procedemos a montarlo:

Quote:
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:

Quote:
/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:

Quote:
find . -perm -2 -print
Así 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.

Quote:
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:

Quote:
find /dev -perm -2 -print
Copiar archivos de un servidor a otro usando la shell

Quote:
scp archivo_origen usuaio_destino@servidor_destino:/directorio/destino/archivo_destino

Apagar, reiniciar, modo consola...


Apagar la máquina:

Quote:
[root@localhost ~]# init 0
Reiniciar la máquina:

Quote:
[root@localhost ~]# init 6
Entrar a la terminal:

Quote:
[root@localhost ~]# init 3
Volver de la terminal a modo gráfico:

Quote:
[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:

Quote:
export VARIABLE=/home/usuario/directorio
Para usarla solo se coloca el comando y se usa el simbolo $ para llamara a la variable. Ejemplo:

Quote:
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

Quote:
echo $VARIABLE (muestra el valor una variable)
unset $VARIABLE (borra la variable)
Algunas variables de sistema utiles:

Quote:
$HOME
$PATH
$PS1

fuente: informatica practica