Procesos
Todo proceso tiene un PID ( ID del proceso ) PPID padre del proceso Los procesos se ejecutan en orden gerarquico.
■ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 101377 1627 1185 0 80 0 - 32936 - pts/2 00:00:00 bash
0 S 101377 1668 1627 0 80 0 - 41373 - pts/2 00:00:00 zsh
0 R 101377 1858 1668 0 80 0 - 35775 - pts/2 00:00:00 ps
■ ps
PID TTY TIME CMD
1627 pts/2 00:00:00 bash
1668 pts/2 00:00:00 zsh
1863 pts/2 00:00:00 ps
- ps tiene como padre zsh
- zsh tiene como padre bash
Árbol de procesos
pstree -ps <num proceso>
-p proceso
-s arbol
-a mostrar todo sin agrupaciones
ps
-u mi usuario
-a all e toria
-ax parta ver todos x para ver del sistema
Proceso numero 1 es el systemd ( initd ) padre de todos los procesos Los procesos que empiezan por K son del kernel
Ver identificadores de los procesos bash
pgrep -l bash # veo numero de proceso y proceso
pidof bash
Matar procesos
kill envia señales, las señales se envian entre procesos pkill -l
lista los diferentes tipos de señales disponibles
- 15 SIGTERM ( señal terminar procesos, es la señal por defecto de kill)
- 9 SIGKILL ( señal matar ) Solo si se queda colgado, puedes perder información al matar a lo bestia.
kill <numero proceso>
killall <nombre proceso>
pkill <nombre proceso>
killall -u user1 # matar todos los procesos de un usuario especifico
kill %2 # matar segundo proceso de backgroud
xkill (clicar con el cursor encima ventana)
Backgroud/Foregraund
Background ejecutar ordenes en segundo plano con &
al final de la orden.
Ejemplo: $ sleep 154856 &
jobs
ver procesos en segundo plano
■ prova jobs
[1] running tree / &> /dev/null
[2] - running sleep 145879
[3] + running sleep 145879
- signo
+
indica el ultimo proceso. - signo
-
indica el penúltimo proceso. [1]
número de proceso en background.
Jobs esta asociado a una sesion de trabajo La orden que esta en background no tiene que generar salida en stdout ni stderr, porque al mostrar por la terminal el resultado te molesta en la ejecución de los siguientes comandos. Los programas que están en background no pueden utilizar stdin
Para traer de foregraund a background fg %2
número de proceso si quieres luego que vuelva a backgroud Ctrl Z
y se muestra como stopped y se pueden reanudar ( poner en running ) con bg
.
Otra manera de parar un proceso en background es con la señal stoped SIGSTOP kill -19 %5
Ejemplo:
# creo tres procesos en backgroud
debian ➜ sleep 12345678 &
[1] 1886
debian ➜ sleep 12345678 &
[2] 1895
debian ➜ sleep 5555555 &
[3] 1967
# compruebo
debian ➜ jobs
[1] running sleep 12345678
[2] - running sleep 12345678
[3] + running sleep 5555555
# traigo a forgraund el proceso 3
debian ➜ fg %3
[3] - 1967 running sleep 5555555
# lo vuelvo a mandar a background con Ctrl Z
^Z
[3] + 1967 suspended sleep 5555555
# Al mandarlo a background se suspende
debian jobs
[1] running sleep 12345678
[2] - running sleep 12345678
[3] + suspended sleep 5555555
# reactivo el proceso
debian ➜ bg %3
[3] - 1967 continued sleep 5555555
debian ➜ curs git:(master) ✗ jobs
[1] running sleep 12345678
[2] + running sleep 12345678
[3] - running sleep 5555555
bacgkround des-asociado
Para realizar un proceso y des-asociarlo de nuestra sesión se puede utilizar nohup
, este comando te permite lanzar un comando des-asociado y así poder cerrar tu sesión, que el comando seguirá ejecutándose hasta que acabe o apagues el pc.
Útil para backups
Obviamente el comando no puede tener stdout ni stderr
nohup du -h / > du.txt 2> /dev/null &
debian ➜ nohup sleep 1547857 &
[1] 7033
nohup: se descarta la entrada y se añade la salida a 'nohup.out'
# una vez cerrada la sesión y avierta otra
debian ➜ ps ax | grep sleep
7033 ? SN 0:00 sleep 1547857
Con disown
podemos des-asociar un proceso que este en background.
disown -a # todos los procesos en backgroud
disown %3 # proceso especifico
debian ➜ ps ax | grep sleep
1886 pts/1 SN 0:00 sleep 12345678
1895 pts/1 SN 0:00 sleep 12345678
1967 pts/1 SN 0:00 sleep 5555555
debian ➜ disown %3
# cierro y abro otra sesión
debian ➜ ps ax | grep sleep
1967 ? SN 0:00 sleep 5555555
uptime
Muestra la hora y el tiempo que está encendida la máquina, cuantos usuarios conectados y el promedio de uso de la cpu ( un promedio de rendimiento)
Top
Nos muestra los procesos que hay en marcha
Atributos del top
-
top -p < número de identificador del proceso >
-
- muestra sólo esa línea
-
top -d < se refresca cada número de segundos que introduzcas >
-
top -n < sale del top al actualizar el número de veces que le has indicado.>
Dentro del top tiene otros atributos.
- p → ordena por cpu
- m → ordena por memoria
- shit + L → filtra por lo que escribas
También tenemos la opción de htop
Básicamente es lo mismo pero más claro y con ciertas opciones en la parte inferior como matar procesos, subir o bajar prioridad, filtrados, etc…
iotop → lista procesos y transferencia de Bytes que escribe o lee en la cpu
Prioridades
Las prioridades son la importancia que le da el kernel a los procesos para ejecutarse.
Nos es útil si queremos que un programa vaya más o menos rápido según el momento.
La prioridad va de:
- Máxima -20
- Mínima +19
- Por defecto 0
Formas de cambiar prioridades.
nice nos permite cambiar prioridades mediante un comando y si queremos renombrar la prioridad utilizaremos renice
nice -n <NºPrioridad> -p <proceso>
htop también nos permite cambiar prioridades con las opciones inferiores nice+F8 y nice-F7
Modo gráfico tenemos monitor de sistema, te muestra los procesos gráficamente