Sistemas de procesos que tiene
linux:
Procesos: la forma
que tenemos de poder gestionar las distintas tareas que estan
ejecutandose al mismo tiempo, ya que el sistema es multitarea (puede
realizar mas de un trabajo al mismo tiempo).
Existen varios tipos de multitarea:
-
para que un ordenador pueda resultar dos tareas simultaneamente necesita dos microprocesadores.
-
Las multitarea se puede hacer también, ejecutandose por asignar un trozo de tiempo para cada programa
Linux esta preparado para las dos
formas de trabajar.
Gestión de procesos desde la shell
ps: comando que nos permite ver
procesos. Te muestra los procesos que has lanzado desde ese terminal:
argumentos de ps:
“a”: (¡¡no es -a!!) te
muestra ademas de tus procesos, los procesos de otro usuario
Si tengo varios terminales abiertos me
muetra los que tenga ejecutandose
Y los /sbin/getty: programa que nos
pedirá el login.
TTY:
nos muestras los distintos terminales
ctrl+alt+f1,f2,f3 (para salir del terminal le doy ctrl+alt+f7)
STAT: sabes el estado del proceso Ss+,
que es que el proceso esta dormido. R+ se esta ejecutanddo.
“u”: identifica el usuario
que ha puesto en marcha ese proceso y cuando se inicio ese proceso.
Fijaros que hay pocesos que ha puesto
en marcha el usuario root, (los getty).
PID: Nº del programa
Las listas de procesos que me esta
dando, son listas de procesos que estan asociados a un terminal.
“x”: vemos procesos que no
dependen de un terminal.
Inicio del sistema:
0) se ejecuta el Grub
1) Se ejecuta el kernel y el
initrd (ramdisk) (disco ram es un archivo que se copia en memoria y
que se interpreta como si fuera un disco).
-
El initrd crea un disco ram que va a contener la estructura de ficheros y directorios para que el sistema pueda arrancar.
-
Una vez hecho esto ejecuta el proceso init. Que se va a encargar de lanzar el resto de los procesos.
Los comandos entre []: significa que no
estan asociados a ningun terminal (en si no son comandos sino
procesos) y que los ha ido lanzonado init, poco a poco, los que
empizan por K son los que estan relacionados con el kernel.
Columnas:
TTY: ? No esta asociado a ninguna
terminal
START: varias letras, las que nos
interezan son:
S: sleep: proceso dormido
R: run: proceso en ejección
Z: zombi: A medidas que hacemos
cosas, los procesos nacen y mueren (pasa de S a R y viceversa), y
cuando termina el programa, si todo ha ido bien, desaparece de la
lista de proceso.
Pero algunas veces por alguna razon no
finalizan correctamente (violación de segmento, etc...) y aparecen
procesos Zombis. Un proceso siempre tiene un padre (el proceso que lo
ha puesto en marcha. El proceso padre siempre espera la muerte del
proceso hijo. Y hasta que el proceso hijo no muera, el proceso padre
no sigue.
El Proceso zombie es un proceso que ha
finalizado incorrectamente, pero que el padre no se ha enterado que
ha muerto.
julio@julio-Aspire-5735:~$ ps aux
USER PID %CPU %MEM VSZ RSS
TTY STAT START TIME COMMAND
root 1 0.0 0.0 2888 1700 ? Ss 09:09 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 09:09 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 09:09 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 09:09 0:00 [migration/0]
root 5 0.0 0.0 0 0 ? S 09:09 0:00 [watchdog/0]
root 6 0.0 0.0 0 0 ? S 09:09 0:00 [migration/1]
root 7 0.0 0.0 0 0 ? S 09:09 0:00 [ksoftirqd/1]
root 8 0.0 0.0 0 0 ? S 09:09 0:00 [watchdog/1]
root 9 0.0 0.0 0 0 ? S 09:09 0:00 [events/0]
root 10 0.0 0.0 0 0 ? S 09:09 0:00 [events/1]
root 11 0.0 0.0 0 0 ? S 09:09 0:00 [cpuset]
root 12 0.0 0.0 0 0 ? S 09:09 0:00 [khelper]
root 13 0.0 0.0 0 0 ? S 09:09 0:00 [netns]
root 14 0.0 0.0 0 0 ? S 09:09 0:00 [async/mgr]
root 15 0.0 0.0 0 0 ? S 09:09 0:00 [pm]
root 17 0.0 0.0 0 0 ? S 09:09 0:00 [sync_supers]
root 18 0.0 0.0 0 0 ? S 09:09 0:00 [bdi-default]
root 19 0.0 0.0 0 0 ? S 09:09 0:00 [kintegrityd/0]
root 20 0.0 0.0 0 0 ? S 09:09 0:00 [kintegrityd/1]
root 21 0.0 0.0 0 0 ? S 09:09 0:00 [kblockd/0]
root 22 0.0 0.0 0 0 ? S 09:09 0:00 [kblockd/1]
root 23 0.0 0.0 0 0 ? S 09:09 0:00 [kacpid]
root 24 0.0 0.0 0 0 ? S 09:09 0:00 [kacpi_notify]
root 25 0.0 0.0 0 0 ? S 09:09 0:00 [kacpi_hotplug]
root 26 0.0 0.0 0 0 ? S 09:09 0:00 [ata_aux]
root 27 0.0 0.0 0 0 ? S 09:09 0:00 [ata_sff/0]
root 28 0.0 0.0 0 0 ? S 09:09 0:00 [ata_sff/1]
root 29 0.0 0.0 0 0 ? S 09:09 0:00 [khubd]
root 30 0.0 0.0 0 0 ? S 09:09 0:00 [kseriod]
root 31 0.0 0.0 0 0 ? S 09:09 0:00 [kmmcd]
root 32 0.0 0.0 0 0 ? S 09:09 0:00 [khungtaskd]
root 33 0.0 0.0 0 0 ? S 09:09 0:00 [kswapd0]
root 34 0.0 0.0 0 0 ? SN 09:09 0:00 [ksmd]
root 35 0.0 0.0 0 0 ? S 09:09 0:00 [aio/0]
root 36 0.0 0.0 0 0 ? S 09:09 0:00 [aio/1]
root 37 0.0 0.0 0 0 ? S 09:09 0:00 [ecryptfs-kthrea]
root 38 0.0 0.0 0 0 ? S 09:09 0:00 [crypto/0]
root 39 0.0 0.0 0 0 ? S 09:09 0:00 [crypto/1]
root 50 0.0 0.0 0 0 ? S 09:09 0:00 [kstriped]
root 51 0.0 0.0 0 0 ? S 09:09 0:00 [kmpathd/0]
root 52 0.0 0.0 0 0 ? S 09:09 0:00 [kmpathd/1]
root 53 0.0 0.0 0 0 ? S 09:09 0:00 [kmpath_handlerd]
root 54 0.0 0.0 0 0 ? S 09:09 0:00 [ksnapd]
root 55 0.0 0.0 0 0 ? S 09:09 0:01 [kondemand/0]
root 56 0.0 0.0 0 0 ? S 09:09 0:01 [kondemand/1]
root 57 0.0 0.0 0 0 ? S 09:09 0:00 [kconservative/0]
root 58 0.0 0.0 0 0 ? S 09:09 0:00 [kconservative/1]
root 294 0.0 0.0 0 0 ? S 09:09 0:00 [scsi_eh_0]
root 295 0.0 0.0 0 0 ? S 09:09 0:00 [scsi_eh_1]
root 296 0.0 0.0 0 0 ? S 09:09 0:00 [scsi_eh_2]
root 297 0.0 0.0 0 0 ? S 09:09 0:00 [scsi_eh_3]
root 298 0.0 0.0 0 0 ? S 09:09 0:00 [scsi_eh_4]
root 299 0.0 0.0 0 0 ? S 09:09 0:00 [scsi_eh_5]
root 306 0.0 0.0 0 0 ? S 09:09 0:00 [scsi_eh_6]
root 307 0.0 0.0 0 0 ? S 09:09 0:00 [usb-storage]
root 315 0.0 0.0 0 0 ? S 09:09 0:00 [usbhid_resumer]
root 339 0.0 0.0 0 0 ? S 09:09 0:00 [jbd2/sda5-8]
root 340 0.0 0.0 0 0 ? S 09:09 0:00 [ext4-dio-unwrit]
root 341 0.0 0.0 0 0 ? S 09:09 0:00 [ext4-dio-unwrit]
root 374 0.0 0.0 0 0 ? S 09:09 0:00 [flush-8:0]
root 402 0.0 0.0 2392 608 ? S 09:10 0:00 upstart-udev-bridge --daemon
root 405 0.0 0.0 2856 1180 ? S<s 09:10 0:00 udevd --daemon
root 512 0.0 0.0 2756 1144 ? S< 09:10 0:00 udevd --daemon
root 548 0.0 0.0 2756 1144 ? S< 09:10 0:00 udevd --daemon
root 788 0.0 0.0 0 0 ? S 09:10 0:00 [kpsmoused]
root 809 0.0 0.0 0 0 ? S 09:10 0:00 [cfg80211]
root 837 0.0 0.0 0 0 ? S 09:10 0:00 [i915]
root 838 0.0 0.0 0 0 ? S 09:10 0:00 [iwlagn]
root 842 0.0 0.0 0 0 ? S 09:10 0:00 [phy0]
root 873 0.0 0.0 5632 2216 ? Ss 09:10 0:00 /usr/sbin/sshd -D
syslog 875 0.0 0.0 34704 1496 ? Sl 09:10 0:00 rsyslogd -c4
102 904 0.0 0.0 3600 1848 ? Ss 09:10 0:00 dbus-daemon --system --fork
root 912 0.0 0.1 19256 4296 ? Ssl 09:10 0:00 NetworkManager
avahi 915 0.0 0.0 3012 1348 ? S 09:10 0:00 avahi-daemon: running [julio-Aspire-5735.local]
avahi 916 0.0 0.0 3012 440 ? S 09:10 0:00 avahi-daemon: chroot helper
root 917 0.0 0.0 4432 2432 ? S 09:10 0:00 /usr/sbin/modem-manager
root 920 0.0 0.0 4900 2368 ? S 09:10 0:00 /sbin/wpa_supplicant -u -s
root 932 0.0 0.0 0 0 ? S< 09:10 0:00 [kslowd000]
root 933 0.0 0.0 0 0 ? S< 09:10 0:00 [kslowd001]
root 940 0.0 0.1 20880 3324 ? Ssl 09:10 0:00 gdm-binary
root 950 0.0 0.1 20164 3124 ? Sl 09:10 0:00 /usr/sbin/console-kit-daemon --no-daemon
root 953 0.0 0.0 0 0 ? S 09:10 0:00 [hd-audio0]
root 1036 0.0 0.1 22944 3956 ? Sl 09:10 0:00 /usr/lib/gdm/gdm-simple-slave --display-id /org/gnome/DisplayManager/Display1
root 1088 0.0 0.0 1856 560 tty4 Ss+ 09:10 0:00 /sbin/getty -8 38400 tty4
root 1093 0.0 0.0 1856 560 tty5 Ss+ 09:10 0:00 /sbin/getty -8 38400 tty5
root 1101 0.0 0.0 1856 564 tty2 Ss+ 09:10 0:00 /sbin/getty -8 38400 tty2
root 1102 0.0 0.0 1856 560 tty3 Ss+ 09:10 0:00 /sbin/getty -8 38400 tty3
root 1106 0.0 0.0 1856 564 tty6 Ss+ 09:10 0:00 /sbin/getty -8 38400 tty6
root 1109 0.0 0.0 2112 880 ? Ss 09:10 0:00 acpid -c /etc/acpi/events -s /var/run/acpid.socket
root 1143 2.2 1.0 60628 31808 tty7 Ss+ 09:10 1:01 /usr/bin/X :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-ydDwCZ/database -nolis
daemon 1160 0.0 0.0 2316 356 ? Ss 09:10 0:00 atd
root 1161 0.0 0.0 2456 876 ? Ss 09:10 0:00 cron
gdm 1266 0.0 0.0 3456 576 ? S 09:10 0:00 /usr/bin/dbus-launch --exit-with-session
root 1286 0.0 0.0 6792 2440 ? Ss 09:10 0:00 /usr/sbin/cupsd -C /etc/cups/cupsd.conf
root 1306 0.0 0.1 21272 3248 ? Sl 09:10 0:00 /usr/lib/gdm/gdm-session-worker
root 1313 0.0 0.1 8452 3384 ? S 09:10 0:00 /usr/lib/upower/upowerd
rtkit 1316 0.0 0.0 22992 1216 ? SNl 09:10 0:00 /usr/lib/rtkit/rtkit-daemon
root 1323 0.0 0.1 6756 4124 ? S 09:10 0:00 /usr/lib/policykit-1/polkitd
julio 1398 0.0 0.0 26404 2740 ? Sl 09:10 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
julio 1417 0.0 0.2 37484 7440 ? Ssl 09:10 0:00 gnome-session
julio 1447 0.0 0.0 3348 200 ? Ss 09:10 0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session gnome-session
julio 1450 0.0 0.0 3456 576 ? S 09:10 0:00 /usr/bin/dbus-launch --exit-with-session gnome-session
julio 1451 0.0 0.0 4504 1748 ? Ss 09:10 0:00 /bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
julio 1456 0.0 0.1 10840 4452 ? S 09:10 0:01 /usr/lib/libgconf2-4/gconfd-2
julio 1457 0.0 0.2 30296 8168 ? Sl 09:10 0:00 gnome-power-manager
julio 1464 0.0 0.3 100796 11452 ? Ssl 09:10 0:00 /usr/lib/gnome-settings-daemon/gnome-settings-daemon
julio 1469 0.0 0.0 8716 2376 ? S 09:10 0:00 /usr/lib/gvfs/gvfsd
julio 1474 0.0 0.0 30652 2108 ? Ssl 09:10 0:00 /usr/lib/gvfs//gvfs-fuse-daemon /home/julio/.gvfs
julio 1479 0.0 0.3 117492 11876 ? Sl 09:10 0:00 nm-applet --sm-disable
julio 1481 0.0 0.2 29136 7724 ? Sl 09:10 0:00 bluetooth-applet
julio 1482 0.0 0.5 82128 17236 ? Sl 09:10 0:01 gnome-panel
julio 1483 0.3 0.8 72964 26920 ? Sl 09:10 0:08 /usr/bin/compiz
julio 1485 0.0 0.1 96920 4964 ? S<sl 09:10 0:02 /usr/bin/pulseaudio --start --log-target=syslog
julio 1486 0.0 0.6 125416 19608 ? Sl 09:10 0:00 nautilus
julio 1489 0.0 0.3 41432 9420 ? Sl 09:10 0:00 /usr/lib/evolution/2.30/evolution-alarm-notify
julio 1493 0.0 0.2 20764 6248 ? S 09:10 0:00 /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
julio 1503 0.0 0.1 20684 3296 ? Sl 09:10 0:00 /usr/lib/pulseaudio/pulse/gconf-helper
julio 1513 0.0 0.0 3908 912 ? S 09:10 0:00 syndaemon -i 0.5 -k
julio 1516 0.0 0.1 10360 3560 ? S 09:10 0:00 /usr/lib/gvfs/gvfs-gdu-volume-monitor
root 1518 0.0 0.1 16136 3216 ? Sl 09:10 0:00 /usr/lib/udisks/udisks-daemon
root 1520 0.0 0.0 5616 1004 ? S 09:10 0:00 udisks-daemon: polling /dev/sdb /dev/sr0
julio 1548 0.0 0.0 9220 2940 ? S 09:10 0:00 /usr/lib/gvfs/gvfsd-trash --spawner :1.11 /org/gtk/gvfs/exec_spaw/0
julio 1550 0.0 0.0 19148 2252 ? Sl 09:10 0:00 /usr/lib/gvfs/gvfs-afc-volume-monitor
julio 1553 0.0 0.0 9340 2204 ? S 09:10 0:00 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
julio 1556 0.0 0.1 53040 3760 ? Ssl 09:10 0:00 /usr/lib/bonobo-activation/bonobo-activation-server --ac-activate --ior-output-fd
julio 1565 0.0 0.3 75120 9988 ? Sl 09:10 0:00 /usr/lib/gnome-applets/trashapplet --oaf-activate-iid=OAFIID:GNOME_Panel_TrashApp
julio 1566 0.0 0.0 1896 512 ? Ss 09:10 0:00 /bin/sh -c /usr/bin/compiz-decorator
julio 1567 0.0 0.4 76656 13048 ? Sl 09:10 0:01 /usr/lib/gnome-panel/wnck-applet --oaf-activate-iid=OAFIID:GNOME_Wncklet_Factory
julio 1568 0.0 0.3 31124 10104 ? Sl 09:10 0:01 /usr/bin/gtk-window-decorator
julio 1581 0.0 0.2 32288 8920 ? Sl 09:10 0:00 /usr/lib/gnome-panel/notification-area-applet --oaf-activate-iid=OAFIID:GNOME_Not
julio 1582 0.0 0.4 40800 13864 ? Sl 09:10 0:00 /usr/lib/gnome-panel/clock-applet --oaf-activate-iid=OAFIID:GNOME_ClockApplet_Fac
julio 1583 0.0 0.4 85204 12896 ? Sl 09:10 0:00 /usr/lib/indicator-applet/indicator-applet-session --oaf-activate-iid=OAFIID:GNOM
julio 1584 0.0 0.4 85968 13276 ? Sl 09:10 0:00 /usr/lib/indicator-applet/indicator-applet --oaf-activate-iid=OAFIID:GNOME_Indica
julio 1592 0.0 0.1 19960 4248 ? S 09:10 0:00 /usr/lib/indicator-messages/indicator-messages-service
julio 1593 0.0 0.0 8556 2136 ? S 09:10 0:00 /usr/lib/gvfs/gvfsd-metadata
julio 1598 0.0 0.1 88800 5528 ? S 09:10 0:00 /usr/lib/indicator-sound/indicator-sound-service
julio 1600 0.0 0.1 15720 3644 ? S 09:10 0:00 /usr/lib/indicator-application/indicator-application-service
julio 1603 0.0 0.1 28332 5304 ? Sl 09:10 0:00 /usr/lib/indicator-session/indicator-session-service
julio 1606 0.0 0.1 29256 4932 ? Sl 09:10 0:00 /usr/lib/indicator-me/indicator-me-service
julio 1610 0.0 0.0 8860 2524 ? S 09:10 0:00 /usr/lib/gvfs/gvfsd-burn --spawner :1.11 /org/gtk/gvfs/exec_spaw/1
julio 1612 0.0 0.6 35008 18956 ? S 09:10 0:00 /usr/bin/python /usr/lib/ubuntu-sso-client/ubuntu-sso-login
root 1613 0.0 0.0 2296 1020 ? S 09:10 0:00 /sbin/dhclient -d -sf /usr/lib/NetworkManager/nm-dhcp-client.action -pf /var/run/
julio 1618 0.0 0.1 28292 3316 ? Ss 09:10 0:00 gnome-screensaver
julio 1623 0.0 0.3 75012 11840 ? Sl 09:10 0:00 /usr/lib/notify-osd/notify-osd
julio 1673 0.0 0.0 1896 508 ? S 09:10 0:00 /bin/sh /usr/lib/firefox-3.6.14/firefox
julio 1677 0.0 0.0 1896 512 ? S 09:10 0:00 /bin/sh /usr/lib/firefox-3.6.14/run-mozilla.sh /usr/lib/firefox-3.6.14/firefox-bi
julio 1681 4.3 3.3 335240 100188 ? Sl 09:10 2:00 /usr/lib/firefox-3.6.14/firefox-bin
julio 1703 0.0 0.2 20796 7008 ? S 09:10 0:00 /usr/lib/gnome-disk-utility/gdu-notification-daemon
julio 1721 0.0 0.5 34184 15944 ? S 09:10 0:00 /usr/bin/python /usr/share/system-config-printer/applet.py
julio 1733 0.1 0.6 35088 19120 ? Sl 09:10 0:04 /usr/bin/python /usr/lib/ubuntuone-client/ubuntuone-syncdaemon
julio 1766 0.0 0.3 72728 11124 ? Sl 09:11 0:00 update-notifier
root 1776 0.0 0.2 13936 8108 ? S 09:11 0:00 /usr/bin/python /usr/lib/system-service/system-service-d
julio 1931 99.8 38.6 1216548 1170324 ? R 09:16 39:40 /usr/bin/gtk-gnash -u http://spe.atdmt.com/ds/D5D5ISPANTEK/4DRIVE_728_corteIngles
julio 1954 1.1 2.9 283980 89308 ? Sl 09:19 0:26 /usr/lib/openoffice/program/soffice.bin -writer -splash-pipe=5
julio 2177 0.0 0.4 91276 13604 ? Sl 09:42 0:00 gnome-terminal
julio 2180 0.0 0.0 2052 720 ? S 09:42 0:00 gnome-pty-helper
julio 2181 0.0 0.1 8292 3676 pts/0 Ss 09:42 0:00 bash
julio 2392 0.5 0.6 64860 19908 ? S 09:45 0:03 /usr/bin/gtk-gnash -u http://s0.2mdn.net/889201/728x90.swf -U http://googleads.g.
julio 2395 0.5 0.6 64924 20208 ? S 09:45 0:03 /usr/bin/gtk-gnash -u http://s0.2mdn.net/889201/160x600.swf -U http://googleads.g
julio 2400 0.4 0.6 64232 18552 ? S 09:45 0:02 /usr/bin/gtk-gnash -u http://translate.googleapis.com/translate_static/js/element
root 2552 0.0 0.0 1856 560 tty1 Ss+ 09:50 0:00 /sbin/getty -8 38400 tty1
julio 2596 0.0 0.0 5736 1092 pts/0 R+ 09:56 0:00 ps aux
julio@julio-Aspire-5735:~$
“j”: podemos rastrear que
proceso es el padre de que proceso
julio@julio-Aspire-5735:~$
ps j
PPID
PID PGID SID TTY TPGID STAT UID TIME COMMAND
2177
2181 2181 2181 pts/0 2737 Ss 1000 0:00 bash
2181
2737 2737 2181 pts/0 2737 R+ 1000 0:00 ps j
julio@julio-Aspire-5735:~$
PPID: el pid del padre
PID: el pid del proceso
“f”: muestra de forma un
poco más gráfica (un arbol) el padre y el hijo.
julio@julio-Aspire-5735:~$
ps jf
PPID
PID PGID SID TTY TPGID STAT UID TIME COMMAND
2177
2181 2181 2181 pts/0 2743 Ss 1000 0:00 bash
2181
2743 2743 2181 pts/0 2743 R+ 1000 0:00 \_ ps jf
julio@julio-Aspire-5735:~$
De esta información lo que me interesa
el PID y el COMMAND.
Sistema multitarea en terminales:
&: En el sistema de terminales
existian dos formas de ejecutar un proceso en 1º plano (los que se
apoderan del terminal) y 2º plano (dejan el terminal libre, lo
consigo poniendo al final del nombre del programa un carácter &)
julio@julio-Aspire-5735:~$
gedit &
[1]
2749
Y se ejecuta el gedit, dejando el
terminal.
Nos que nos muestra es:
El [1] indica el trabajo que
esta haciendo
Y el 2749 es el PID que tiene
el gedit.
Ahora ejecutamos el xclock &: y
luego el ps jf para ver el arbol de procesos.
julio@julio-Aspire-5735:~$
xclock &
[3]
2761
julio@julio-Aspire-5735:~$
ps jf
PPID
PID PGID SID TTY TPGID STAT UID TIME COMMAND
2177
2181 2181 2181 pts/0 2762 Ss 1000 0:00 bash
2181
2749 2749 2181 pts/0 2762 Sl 1000 0:00 \_ gedit
2181
2759 2759 2181 pts/0 2762 S 1000 0:00 \_ xclock
2181
2761 2761 2181 pts/0 2762 S 1000 0:00 \_ xclock
2181
2762 2762 2181 pts/0 2762 R+ 1000 0:00 \_ ps jf
julio@julio-Aspire-5735:~$
El segundo plano no requieren para nada
la intervención del usuario. Solo el primer plano nos permite
interactuar con el programa. Salvo que hagamos redirecciones.
Comando Sleep:
Hace que espere un nº de segundos
indicados, y luego termina.
julio@julio-Aspire-5735:~$
sleep 5; echo "Fin"
Fin
julio@julio-Aspire-5735:~$
Espera 5 segundo y luego aparece la
palabra la palabra “Fin”.
Ahora
vamos a ejecutar esto, en 2º plano ejecutamos
julio@julio-Aspire-5735:~$
(sleep 5; echo "Fin") &
[4]
2774
julio@julio-Aspire-5735:~$
Fin
[4]+
Hecho ( sleep 5; echo "Fin" )
julio@julio-Aspire-5735:~$
Ahora podemos ver el arbol de procesos:
julio@julio-Aspire-5735:~$
ps
PID
TTY TIME CMD
2181
pts/0 00:00:00 bash
2749
pts/0 00:00:00 gedit
2759
pts/0 00:00:00 xclock
2761
pts/0 00:00:00 xclock
2776
pts/0 00:00:00 bash
2777
pts/0 00:00:00 sleep
2778
pts/0 00:00:00 ps
julio@julio-Aspire-5735:~$
ps jf
PPID
PID PGID SID TTY TPGID STAT UID TIME COMMAND
2177
2181 2181 2181 pts/0 2779 Ss 1000 0:00 bash
2181
2749 2749 2181 pts/0 2779 Sl 1000 0:00 \_ gedit
2181
2759 2759 2181 pts/0 2779 S 1000 0:00 \_ xclock
2181
2761 2761 2181 pts/0 2779 S 1000 0:00 \_ xclock
2181
2776 2776 2181 pts/0 2779 S 1000 0:00 \_ bash
2776
2777 2776 2181 pts/0 2779 S 1000 0:00 | \_ sleep 500
2181
2779 2779 2181 pts/0 2779 R+ 1000 0:00 \_ ps jf
julio@julio-Aspire-5735:~$
Comando jobs:
Muestra los trabajos que hay en 2º
plano
julio@julio-Aspire-5735:~$
jobs
[1]
Ejecutando gedit &
[2]
Ejecutando xclock &
[3]-
Ejecutando xclock &
[4]+
Ejecutando ( sleep 500; echo "Fin" ) &
julio@julio-Aspire-5735:~$
Los
que nos interesa son los numeros [].
ctrl+z:
poner en pausa un proceso que esta ejecutandose (¡¡¡no lo
he abortado!!!)
julio@julio-Aspire-5735:~$
(sleep 5000; echo "Fin")
^Z
[7]+ Detenido
( sleep 5000; echo "Fin" )
julio@julio-Aspire-5735:~$
Le ha asignado una
tarea de 2º plano y lo ha llamado [7].
Comando fg
nº:
para reanudar un
proceso en pausa en 1º plano, indicando el nº de trabajo (el que
nos da jobs)
Comando bg
nº:
para reanudar un
proceso en pausa en 2º plano, indicando el nº de trabajo (el que
nos da jobs)
Posible utilidad
de pasar un trabajo de 1º plano a 2º plano. Si un trabajo esta en
2º plano se ejecuta con un poco menos prioridad que el 1º plano.
¿como se envia
el ctrl+z a una aplicación que este en 2º plano?
Señales: son
mensajes que se envian a los procesos, programas en ejecucion. Una
señal seria ctrl+z.
Para enviar una
señal se usa este comando:
kill nº PID
Su utilidad típica
es matar procesos.
¿como ver los nº asignados?
Kill -l
julio@julio-Aspire-5735:~$
kill -l
1)
SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6)
SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11)
SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16)
SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21)
SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26)
SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31)
SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38)
SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42)
SIGRTMIN+8
43)
SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47)
SIGRTMIN+13
48)
SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52)
SIGRTMAX-12
53)
SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57)
SIGRTMAX-7
58)
SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62)
SIGRTMAX-2
63)
SIGRTMAX-1 64) SIGRTMAX
julio@julio-Aspire-5735:~$
19: sigstop: que
pare
18: sigcont: que
continua
julio@julio-Aspire-5735:~$
gedit
^Z
[8]+
Detenido gedit
julio@julio-Aspire-5735:~$
Ahora lo hacemos
de otra forma:
- abrimos otro terminal,
- en el 1º terminarl ejecutamos gedit (se queda cojido)
- en el 2º terminal ps aux
- ps aux en la penultima linea nos muestra el gedit, el nº que nos muestra es el que tenemos que usar para mandar señales al gedit. Vista de la terminal 2julio 2894 6.0 0.5 92364 17788 pts/0 Sl+ 11:24 0:00 geditjulio 2897 0.0 0.0 5736 1092 pts/4 R+ 11:24 0:00 ps auxjulio@julio-Aspire-5735:~$
- Si en el terminal 2º le digo: kill -19 2894, nos para el gedit (19 stop)
Para volver a
reanudar el gedit (en 2º o 1º planos según como estaba), podemos
poner:
$ kill -18 2894
(en la 2º terminal)
En la 1º
terminal: (8 es el nº de trabajo)
$ fg 8
La señal más
útil del comando Kill son dos:
15: señal de
terminar el proceso, y es la que tiene por defecto.
9: señal de matar
el proceso
Diferencia entre
“terminar” y “matar”.
La de “terminar”
solicita al programa que finalice, es el programa el que se cierra,
por ejemplo te dira si quieres guardar el archivo?, cierre de
archivos. Pero el programador tiene que tener encuenta esta señal.
La de “matar”,
te la resuelve el sistema operativo, sin preguntar al programa.
Comando Killall:
Tiene una ventaja
sobre kill, vale para lo mismo, pero en lugar de basarse en el nº
PID se basa en el nombre del proceso. Y mata todos los procesos
llamados asi, por ejemplo si tenemos varias gedit, las matas todas.
Comando top /
htop:
Nos muestra cada 2
segundos, los procesos en ejecución, parecido a ps pero
actualizandose cada 2 segundo.
Comando
shutdown:
solo lo puede
ejecutar el root y se encarga de apagar adecuadamente el sistema.
-r nº: reinicia y
nº de minutos que tiene para terminar
-h nº: terminar y
nº de minutos que tiene para terminar
Haciendo un sync
(vaciado de buffer de disco y/o disco de red), envia un kill a todos
los procesos que estan en ejeccion para que vayan muriendo, y luego
ejecutara el halt o el reboot.
Comando halt:
Detiene el
sistema, pero lo hace a lo bestia. (sin vaciar el buffer de disco, ni
kill a los programas)
Comando reboot:
Reinicia el
sistema, pero lo hace a lo bestia. (sin vaciar el buffer de disco, ni
kill a los programas)
e “terminar” solicita al programa que finalice, es el programa el que se cierra, por ejemplo te dira si quieres guardar el archivo?, cierre de archivos. Pero el programador tiene que tener encuenta esta señal.
ResponderEliminarLa de “matar”, te la resuelve el sistema operativo, sin preguntar al programa.
Comando Killall:
Tiene una ventaja sobre kill, vale para lo mismo, pero en lugar de basarse en el nº PID se basa en el nombre del coaching-mastery.com/5-pasos-para-conseguir-un-prestamo-personal/