Guia Linux - Sobrevivir a la terminal - Parte 2
Table of Contents
- 1. Tareas y Procesos
- 2. Sincronizar directorios
- 2.1. Copiar un directorio local a otro
- 2.2. Transferir todos los archivos de un directorio local a un servidor
- 2.3. Transferir un directorio local a un servidor pasandole usuario
- 2.4. Transferir desde un servidor a la maquina local
- 2.5. Transfencia segura con ssh desde el servidor a máquina local
- 2.6. Simular transferencia de archivos
- 2.7. Referencias Web
1. Tareas y Procesos
Los procesos son programas que se pueden estar ejecutando o no. Estos procesos se los llama tarea en caso de que se esten corriendo en el sistema.
Las tareas se pueden iniciar tanto en
- Primer plano (ó foreground)
- Segundo plano (ó background).
En el primer caso, se puede dar si se ejecuta la tarea desde la terminal, esta tomará el control de la consola y solo se podra hacer uso de la terminal cuando la tarea finalize o que nosotros la finalizemos.
En el segundo caso, permiten utilizar la terminal mientras la tarea se está ejecutando.
1.1. Iniciar tareas
1.1.1. Iniciar una tarea en primer plano
Esta tarea se va a seguir ejecutando hasta que se finalice desde la interfáz gráfica de ese programa, o si se finaliza desde la terminal, hasta tanto no se puede usar esa terminal para otros comandos.
# inicia el navegador firefox en primer plano firefox
1.1.2. Iniciar una tarea en segundo plano
En segundo plano se pueden agregar aquellas que no necesitan interactuar con la consola, es como un "esconder" mientras se ejecutan.
# inicia el navegador firefox en segundo plano firefox & # comprimir los archivos de la carpeta fotos tar -cvzf fotos.tar.gz fotos &
Observación: Sólo se necesita de agregar el & seguido de nombre del programa
1.1.3. Evitar imprimir mensajes de una tarea que está segundo plano
Con el comando nohup podemos seguir utilizando la terminal, sin que aparezcan los mensajes que generan los programas que tenemos en segundo plano.
# corre el programa "mkdocs" en segundo plano, y no mostrará los mensajes nohup mkdocs serve &
1.1.4. Pasar una tarea a primer o segundo plano
A veces puede ocurrir que se desee alternar
# pasa una tarea a primer plano fg numeroTarea # pasa la tarea a segundo plano fg numeroTarea
1.2. Ver procesos y tareas
Con el comando jobs podemos conocer las tareas que se ejecutan en segundo plano desde la terminal que tenemos abierta. Este nos detallará el número de proceso (que es importante para luego detenerlo), y su estado de ejecución.
Con el comando ps nos mostrará todas las tareas (dispone de varios parametros que personalizan la información)
Algunas referencias a las columnas del listado de procesos:
Columna | Descripción |
---|---|
pid | Identificador del proceso |
tty | Identifica la terminal donde esta corriendo |
comm | Es el comando que se ejecutó en la terminal |
etime | Cantidad de tiempo en ejecución |
%mem | Cuanto ocupa en memoria |
%cpu | Cuanto utiliza del procesador |
Otras referencias de los parámetros para el comando ps que lista los procesos:
Parámetro | Descripción |
---|---|
a | Muestra los procesos que tienen una terminal controladora |
x | Muestra los procesos que "no" tienen una terminal controladora |
f | Muestra las relaciones padre/hijo entre los procesos |
# devuelve una lista con las tareas en ejecución en la terminal actual jobs # devuelve todas las tareas ps
1.2.1. Obtener solo el número de proceso
Suelo optar por pgrep seguido del nombre del proceso, que es mas sencillo.
Aunque también de una más extensa sería con ps para listar los procesos, con filtrar el proceso con grep y retornar la columna del PID con awk
# devuelve el numero de id del un proceso pgrep | nombreTarea # también devuelve el numero de id del proceso ps | grep nombreTarea | awk '{print $1}'
1.2.2. Obtener solo algunos datos de los procesos
En caso de querer saber solo algunas de las columnas de ps podemos usar el parametro eo seguido de las columnas. Algunos campos podrian ser
# mostrará la columna del identificador, el comando, y tiempo en ejecución ps -eo pid,comm,etime
Observación: Es importante que las columnas este separadas por coma sin espacios.
1.2.3. Ordenar los procesos por algun campo
Para esto necesitamos del parametro –sort seguido de los campos que utilizamos como criterio para ordenar
ps -eo pid,comm,etime,%cpu --sort=-%mem | head
Observación: Si queres visualizar la cabecera de los campos, agregar head
1.2.4. Mostrar procesos padres e hijos
A veces es importante conocer si un proceso depende de varios es decir al detener este sus procesos hijos también.
# muestra los procesos padres e hijos ps --forest
1.3. Detener una tarea en ejecución
Si la tara está en primer plano podriamos usar el atajo CTRL+Z
Si la tarea está en segundo plano, utilizaremos el comando kill seguido del numero de proceso o el PID que lo identifica.
# detiene el proceso numero 1 kill %1
Observación: Al utilizar el % va seguido del número de proceso, caso contrario agregar el PID del proceso
1.4. Guardar un proceso dependiente de una terminal
Con el comando disown se puede guardar un proceso que está corriendo en segundo plano sobre una terminal, y si la misma se cierra el proceso no se interrumpirá.
Como argumento se le puede pasar el PID ó el número de proceso precedido por el %
Opción 1: con el comando pgrep:
# ejecuto el programa en segundo plano, y oculto sus mensajes nohup mkdocs serve& # busco el PID del proceso pgrep mkdocs # le paso PID para guardarlo (suponiendo que diga 3003) disown 3003
Opción 2: con el comando ps:
# ejecuto el programa en segundo plano, y oculto sus mensajes nohup mkdocs serve& # busco el PID ps -ax | grep mkdocs # le paso el PID (si es que fuese 3003) disown 3003
1.5. Practicando procesos, tareas
# corro en segundo plano ambos navegadores web firefox & ; chrome & # verifico el numero de proceso de ambos, y si estan corriendo jobs # detengo el que tenga el número de proceso 1 kill %1 # verifico el PID del programa, suponiendo que firefox se detuvo ps -a | grep chrome # detengo el proceso con PID 3021 (suponiendo que es chrome) kill 3021
2. Sincronizar directorios
El comando rsync cumple un rol fundamental para copiar, mover archivos y carpetas, se dice que es aún más rápido que utilizar cp ó scp ya que comprime los archivos antes de transferirlos.
Algunos de los parámetros son:
Parámetro | Descripción |
---|---|
a | Modo archivo |
v | Modo Verboso - Muestra el información durante la transferencia |
q | Modo Silencioso - No muestra la información que se transfiere |
z | Comprimir datos al transferir |
h | Humaniza los valores de transferencia |
2.1. Copiar un directorio local a otro
# Copia todo lo del directorio1 al directorio2 rysnc -vazh directorio1/ directorio2/
2.2. Transferir todos los archivos de un directorio local a un servidor
# transferir a un servidor rysnc -vazh carpeta/* host1:pruebas/
2.3. Transferir un directorio local a un servidor pasandole usuario
# transferir a un servidor pasando usuario rysnc -vazh directorio2/ usuario:host2:fotos/
2.4. Transferir desde un servidor a la maquina local
# transferir desde el servidor a la maquina local rysnc -vazh admin:192.168.92.1:/srv/fotos /home/juan/carpeta
2.5. Transfencia segura con ssh desde el servidor a máquina local
A diferencia del resto se agrega el parámetro e y ssh
rysnc -vazh -e ssh admin@192.168.92.1:/srv/fotos /home/juan/fotos
2.6. Simular transferencia de archivos
Si queremos probar en caso de errores podemos utilizar –dry-run
# Copia todo lo del directorio1 al directorio2 rysnc -vazh --dry-run directorio1/ directorio2/
2.7. Referencias Web
- Documentación sobre rsyncm, Linux.die [Ver Página]
- Conociendo el comando rsync, LinuxTechi [Ver Página]