Consultas, desarrollo de programas y petición de presupuestos:

jueves, 12 de julio de 2012

Sistemas de procesos en gnu/linux y multitarea en terminales.

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:
  1. para que un ordenador pueda resultar dos tareas simultaneamente necesita dos microprocesadores.
  2. 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).
  1. El initrd crea un disco ram que va a contener la estructura de ficheros y directorios para que el sistema pueda arrancar.
  2. 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:
  1. abrimos otro terminal,
  2. en el 1º terminarl ejecutamos gedit (se queda cojido)
  3. en el 2º terminal ps aux
  4. 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 2
    julio 2894 6.0 0.5 92364 17788 pts/0 Sl+ 11:24 0:00 gedit
    julio 2897 0.0 0.0 5736 1092 pts/4 R+ 11:24 0:00 ps aux
    julio@julio-Aspire-5735:~$
  5. 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)

1 comentario:

  1. 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.
    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 coaching-mastery.com/5-pasos-para-conseguir-un-prestamo-personal/

    ResponderEliminar