11.現在実行されているプロセスを表示。psコマンド
ナックス「今回はプロセスの状況を表示するコマンド、psコマンドのご紹介です」
デビー君「はーい」
ナックス「まずはとりあえずpsとでも打ってみましょう」
$ ps
ナックス「どんな結果になりましたか?」
デビー君「こんな結果になりました」
$ ps PID TTY TIME CMD 3341 pts/1 00:00:00 bash 3352 pts/1 00:00:00 ps
デビー君「前回のpstreeコマンドはもっとたくさんのプロセスが実行されているのが表示されたのに……」
ナックス「psコマンドはそのまま使ったらpsコマンドを実行した端末と結びつけられているプロセスしか表示されないそうです」
デビー君「端末?」
ナックス「実は、Linuxは同時に複数のCUI画面を使うことが出来ます。この画面の一つ一つのことを端末と言います。ここら辺の詳しい話は後日やる予定です。とりあえずそこは置いておいて、もっと他のプロセスも見たいのでオプションを使いましょう」
デビー君「オプション?」
ナックス「linuxコマンドの多くは、オプションをつけることで挙動を変更することが出来ます。オプションとは何か?百聞は一見に如かず。今回はaオプションを付けてみましょう」
$ ps a
$ ps a PID TTY STAT TIME COMMAND 2628 tty7 Ss+ 5:18 /usr/X11R6/bin/X :0 -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7 2776 tty1 Ss+ 0:00 /sbin/getty 38400 tty1 2778 tty2 Ss+ 0:00 /sbin/getty 38400 tty2 2782 tty3 Ss+ 0:00 /sbin/getty 38400 tty3 2786 tty4 Ss+ 0:00 /sbin/getty 38400 tty4 2788 tty5 Ss+ 0:00 /sbin/getty 38400 tty5 2790 tty6 Ss+ 0:00 /sbin/getty 38400 tty6 3278 pts/0 Ss 0:00 bash 3338 pts/0 S+ 0:02 vim linux11.xhtml 3341 pts/1 Ss 0:00 bash 3402 pts/1 R+ 0:00 ps a
ナックス「psの後に一つスペースを開けてaと入力し、実行しました。これは『psコマンドにaオプションをつけて実行した』ということです」
デビー君「さっきより結果が増えたね」
ナックス「はい。aオプションは『端末を持つ全てのプロセスの表示』というオプションです。が、端末を持たないプロセスも表示したいので、xオプションもつけてみます」
$ ps ax
$ ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:01 init [2]  
    2 ?        S<     0:00 [kthreadd]
    3 ?        S<     0:00 [migration/0]
    4 ?        S<     0:00 [ksoftirqd/0]
    5 ?        S<     0:00 [watchdog/0]
    6 ?        S<     0:00 [events/0]
    7 ?        S<     0:00 [khelper]
   39 ?        S<     0:00 [kblockd/0]
   41 ?        S<     0:00 [kacpid]
   42 ?        S<     0:00 [kacpi_notify]
  112 ?        S<     0:00 [kseriod]
  150 ?        S      0:00 [pdflush]
  151 ?        S<     0:00 [kswapd0]
  152 ?        S<     0:00 [aio/0]
  609 ?        S<     0:00 [ksuspend_usbd]
  610 ?        S<     0:00 [khubd]
  633 ?        S<     0:00 [ata/0]
  634 ?        S<     0:00 [ata_aux]
  804 ?        S<     0:00 [kjournald]
  880 ?        S<s    0:00 udevd --daemon
 1212 ?        S<     0:00 [pccardd]
 1215 ?        S<     0:09 [ath5k_pci]
 1322 ?        S<     0:00 [kpsmoused]
 1357 ?        S<     0:00 [kgameportd]
 1776 ?        Ss     0:00 /sbin/portmap
 1787 ?        Ss     0:00 /sbin/rpc.statd
 1983 ?        S<     0:00 [kondemand/0]
 2031 ?        Sl     0:00 /usr/sbin/rsyslogd -c3
 2042 ?        Ss     0:00 /usr/sbin/acpid
 2082 ?        Ss     0:00 /usr/bin/dbus-daemon --system
 2097 ?        Ss     0:00 avahi-daemon: running [debian.local]
 2098 ?        Ss     0:00 avahi-daemon: chroot helper
 2174 ?        Ss     0:00 /usr/sbin/cupsd
 2441 ?        Ss     0:00 /usr/sbin/exim4 -bd -q30m
 2451 ?        Ss     0:00 /usr/sbin/kerneloops
 2465 ?        Ss     0:00 /usr/sbin/dhcdbd --system
 2476 ?        Ss     0:00 /usr/sbin/hald
 2477 ?        S      0:00 hald-runner
 2495 ?        S      0:00 hald-addon-input: Listening on /dev/input/event1 /dev/input/event0 /dev/input/event2 /dev/input/event3 /dev/input/ev
 2499 ?        S      0:00 /usr/lib/hal/hald-addon-cpufreq
 2500 ?        S      0:00 hald-addon-acpi: listening on acpid socket /var/run/acpid.socket
 2509 ?        S      0:00 hald-addon-storage: polling /dev/hdc (every 2 sec)
 2517 ?        Ss     0:00 /usr/sbin/hcid -x -s
 2523 ?        S<     0:00 [btaddconn]
 2525 ?        S<     0:00 [btdelconn]
 2538 ?        S<     0:00 [krfcommd]
 2546 ?        Ssl    0:00 /usr/sbin/NetworkManager --pid-file /var/run/NetworkManager/NetworkManager.pid
 2554 ?        Ss     0:00 /usr/sbin/NetworkManagerDispatcher --pid-file /var/run/NetworkManager/NetworkManagerDispatcher.pid
 2604 ?        S      0:00 /sbin/dhclient -1 -lf /var/lib/dhcp3/dhclient.eth0.leases -pf /var/run/dhclient.eth0.pid -q -e dhc_dbus=31 -d eth0
 2612 ?        Ss     0:00 /usr/sbin/gdm
 2614 ?        S      0:00 /usr/sbin/gdm
 2622 ?        Ss     0:00 /usr/bin/system-tools-backends
 2628 tty7     Ss+    5:44 /usr/X11R6/bin/X :0 -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7
 2652 ?        Ss     0:00 /usr/sbin/atd
 2672 ?        Ss     0:00 /usr/sbin/cron
 2699 ?        Ss     0:00 /usr/sbin/apache2 -k start
 2776 tty1     Ss+    0:00 /sbin/getty 38400 tty1
 2778 tty2     Ss+    0:00 /sbin/getty 38400 tty2
 2782 tty3     Ss+    0:00 /sbin/getty 38400 tty3
 2786 tty4     Ss+    0:00 /sbin/getty 38400 tty4
 2788 tty5     Ss+    0:00 /sbin/getty 38400 tty5
 2790 tty6     Ss+    0:00 /sbin/getty 38400 tty6
 2838 ?        S      0:01 /usr/lib/libgconf2-4/gconfd-2 11
 2840 ?        S      0:00 /usr/bin/gnome-keyring-daemon -d --login
 2841 ?        Ssl    0:00 x-session-manager
 2889 ?        S      0:00 /usr/bin/uim-xim
 2890 ?        S      0:00 /bin/sh /etc/gdm/Xsession default
 2894 ?        S      0:00 /usr/lib/uim/uim-helper-server
 2897 ?        S      0:00 /usr/bin/dbus-launch --exit-with-session /usr/bin/seahorse-agent --execute x-session-manager
 2898 ?        Ss     0:00 /usr/bin/dbus-daemon --fork --print-pid 6 --print-address 9 --session
 2904 ?        Ss     0:00 /usr/bin/seahorse-agent --execute x-session-manager
 2907 ?        Sl     0:00 gnome-settings-daemon
 2926 ?        S      0:05 /usr/bin/metacity --sm-client-id=default0
 2927 ?        S      0:04 gnome-panel --sm-client-id default1
 2929 ?        S      0:00 nautilus --no-default-window --sm-client-id default2
 2931 ?        Ss     0:04 gnome-screensaver
 2937 ?        Ssl    0:00 /usr/lib/bonobo-activation/bonobo-activation-server --ac-activate --ior-output-fd=16
 2939 ?        S      0:00 bluetooth-applet --singleton
 2942 ?        S      0:00 update-notifier
 2947 ?        S      0:00 /usr/bin/python /usr/bin/system-config-printer-applet
 2949 ?        S      0:00 python /usr/share/screenlets-manager/screenlets-daemon.py
 2951 ?        S      0:00 kerneloops-applet
 2952 ?        Ss     0:00 /usr/lib/gnome-volume-manager/gnome-volume-manager --sm-disable
 2954 ?        S      0:00 /usr/lib/gnome-vfs-2.0/gnome-vfs-daemon
 2955 ?        S      0:00 python -u /usr/share/screenlets/Notes/NotesScreenlet.py
 2956 ?        S      0:01 nm-applet --sm-disable
 2959 ?        Ss     0:00 gnome-power-manager
 2965 ?        S      0:02 uim-toolbar-gtk
 2983 ?        S      0:00 /usr/lib/nautilus-cd-burner/mapping-daemon
 3013 ?        Sl     0:00 /usr/lib/gnome-applets/mixer_applet2 --oaf-activate-iid=OAFIID:GNOME_MixerApplet_Factory --oaf-ior-fd=19
 3129 ?        S      0:00 [pdflush]
 3197 ?        S      0:00 /usr/sbin/apache2 -k start
 3198 ?        S      0:00 /usr/sbin/apache2 -k start
 3199 ?        S      0:00 /usr/sbin/apache2 -k start
 3200 ?        S      0:00 /usr/sbin/apache2 -k start
 3201 ?        S      0:00 /usr/sbin/apache2 -k start
 3275 ?        Sl     0:26 gnome-terminal
 3277 ?        S      0:00 gnome-pty-helper
 3278 pts/0    Ss     0:00 bash
 3338 pts/0    S+     0:04 vim linux11.xhtml
 3341 pts/1    Rs     0:00 bash
 3354 ?        Sl     0:14 /usr/lib/iceweasel/firefox-bin -a iceweasel
 3429 pts/1    R+     0:00 ps ax
      デビー君「うわ!一気に結果が増えたね」
ナックス「はい。これで全てのプロセスが表示されていることになります。が!psコマンドで全てのプロセスを表示したい時は、一般的にはuオプション(実行ユーザーID、または実行ユーザー名を表示)も使ってauxとする事が多いそうです。つまり、こう!」
$ ps aux
$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 2100 572 ? Ss 20:33 0:01 init [2] root 2 0.0 0.0 0 0 ? S< 20:33 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S< 20:33 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S< 20:33 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 20:33 0:00 [watchdog/0] root 6 0.0 0.0 0 0 ? S< 20:33 0:01 [events/0] root 7 0.0 0.0 0 0 ? S< 20:33 0:00 [khelper] root 39 0.0 0.0 0 0 ? S< 20:33 0:00 [kblockd/0] root 41 0.0 0.0 0 0 ? S< 20:33 0:00 [kacpid] root 42 0.0 0.0 0 0 ? S< 20:33 0:00 [kacpi_notify] root 112 0.0 0.0 0 0 ? S< 20:33 0:00 [kseriod] root 150 0.0 0.0 0 0 ? S 20:33 0:00 [pdflush] root 151 0.0 0.0 0 0 ? S< 20:33 0:00 [kswapd0] root 152 0.0 0.0 0 0 ? S< 20:33 0:00 [aio/0] root 609 0.0 0.0 0 0 ? S< 20:33 0:00 [ksuspend_usbd] root 610 0.0 0.0 0 0 ? S< 20:33 0:00 [khubd] root 633 0.0 0.0 0 0 ? S< 20:33 0:00 [ata/0] root 634 0.0 0.0 0 0 ? S< 20:33 0:00 [ata_aux] root 804 0.0 0.0 0 0 ? S< 20:33 0:00 [kjournald] root 880 0.0 0.1 3080 428 ? S<s 20:33 0:00 udevd --daemon root 1212 0.0 0.0 0 0 ? S< 20:33 0:00 [pccardd] root 1215 0.3 0.0 0 0 ? S< 20:33 0:10 [ath5k_pci] root 1322 0.0 0.0 0 0 ? S< 20:33 0:00 [kpsmoused] root 1357 0.0 0.0 0 0 ? S< 20:33 0:00 [kgameportd] daemon 1776 0.0 0.1 1892 368 ? Ss 20:33 0:00 /sbin/portmap statd 1787 0.0 0.2 1956 564 ? Ss 20:33 0:00 /sbin/rpc.statd root 1983 0.0 0.0 0 0 ? S< 20:33 0:00 [kondemand/0] root 2031 0.0 0.5 27404 1248 ? Sl 20:33 0:00 /usr/sbin/rsyslogd -c3 root 2042 0.0 0.2 2292 528 ? Ss 20:33 0:00 /usr/sbin/acpid 103 2082 0.0 0.5 2884 1160 ? Ss 20:33 0:00 /usr/bin/dbus-daemon --system avahi 2097 0.0 0.4 2988 1104 ? Ss 20:33 0:00 avahi-daemon: running [debian.local] avahi 2098 0.0 0.1 2884 248 ? Ss 20:33 0:00 avahi-daemon: chroot helper root 2174 0.0 0.6 6344 1472 ? Ss 20:33 0:00 /usr/sbin/cupsd 101 2441 0.0 0.2 6296 552 ? Ss 20:33 0:00 /usr/sbin/exim4 -bd -q30m root 2451 0.0 0.3 6704 752 ? Ss 20:33 0:00 /usr/sbin/kerneloops root 2465 0.0 0.3 2052 716 ? Ss 20:33 0:00 /usr/sbin/dhcdbd --system 107 2476 0.0 0.7 5920 1688 ? Ss 20:33 0:00 /usr/sbin/hald root 2477 0.0 0.3 3324 848 ? S 20:33 0:00 hald-runner root 2495 0.0 0.3 3388 860 ? S 20:33 0:00 hald-addon-input: Listening on /dev/input/event1 /dev/input/event0 /dev/input/ root 2499 0.0 0.4 3400 932 ? S 20:33 0:00 /usr/lib/hal/hald-addon-cpufreq 107 2500 0.0 0.3 2272 672 ? S 20:33 0:00 hald-addon-acpi: listening on acpid socket /var/run/acpid.socket root 2509 0.0 0.3 3388 848 ? S 20:33 0:00 hald-addon-storage: polling /dev/hdc (every 2 sec) root 2517 0.0 0.4 3248 940 ? Ss 20:33 0:00 /usr/sbin/hcid -x -s root 2523 0.0 0.0 0 0 ? S< 20:33 0:00 [btaddconn] root 2525 0.0 0.0 0 0 ? S< 20:33 0:00 [btdelconn] root 2538 0.0 0.0 0 0 ? S< 20:33 0:00 [krfcommd] root 2546 0.0 0.7 21172 1764 ? Ssl 20:33 0:00 /usr/sbin/NetworkManager --pid-file /var/run/NetworkManager/NetworkManager.pid root 2554 0.0 0.5 3508 1152 ? Ss 20:33 0:00 /usr/sbin/NetworkManagerDispatcher --pid-file /var/run/NetworkManager/NetworkM root 2604 0.0 0.2 2180 556 ? S 20:33 0:00 /sbin/dhclient -1 -lf /var/lib/dhcp3/dhclient.eth0.leases -pf /var/run/dhclien root 2612 0.0 0.5 14176 1156 ? Ss 20:33 0:00 /usr/sbin/gdm root 2614 0.0 0.7 14688 1784 ? S 20:33 0:00 /usr/sbin/gdm root 2622 0.0 0.3 3852 800 ? Ss 20:33 0:00 /usr/bin/system-tools-backends root 2628 14.3 10.5 34820 23664 tty7 Rs+ 20:33 6:37 /usr/X11R6/bin/X :0 -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7 daemon 2652 0.0 0.1 2048 300 ? Ss 20:33 0:00 /usr/sbin/atd root 2672 0.0 0.3 3252 780 ? Ss 20:33 0:00 /usr/sbin/cron root 2699 0.0 2.8 21300 6356 ? Ss 20:34 0:00 /usr/sbin/apache2 -k start root 2776 0.0 0.1 1764 420 tty1 Ss+ 20:34 0:00 /sbin/getty 38400 tty1 root 2778 0.0 0.1 1764 420 tty2 Ss+ 20:34 0:00 /sbin/getty 38400 tty2 root 2782 0.0 0.1 1764 420 tty3 Ss+ 20:34 0:00 /sbin/getty 38400 tty3 root 2786 0.0 0.1 1764 420 tty4 Ss+ 20:34 0:00 /sbin/getty 38400 tty4 root 2788 0.0 0.1 1764 420 tty5 Ss+ 20:34 0:00 /sbin/getty 38400 tty5 root 2790 0.0 0.1 1764 420 tty6 Ss+ 20:34 0:00 /sbin/getty 38400 tty6 debby 2838 0.0 1.2 7208 2796 ? S 20:37 0:01 /usr/lib/libgconf2-4/gconfd-2 11 debby 2840 0.0 0.6 14588 1436 ? S 20:37 0:00 /usr/bin/gnome-keyring-daemon -d --login debby 2841 0.0 1.9 28228 4280 ? Ssl 20:37 0:00 x-session-manager debby 2889 0.0 0.6 7584 1556 ? S 20:37 0:00 /usr/bin/uim-xim debby 2890 0.0 0.1 4196 292 ? S 20:37 0:00 /bin/sh /etc/gdm/Xsession default debby 2894 0.0 0.2 1992 528 ? S 20:37 0:00 /usr/lib/uim/uim-helper-server debby 2897 0.0 0.1 3100 432 ? S 20:37 0:00 /usr/bin/dbus-launch --exit-with-session /usr/bin/seahorse-agent --execute x-s debby 2898 0.0 0.3 2620 708 ? Ss 20:37 0:00 /usr/bin/dbus-daemon --fork --print-pid 6 --print-address 9 --session debby 2904 0.0 1.9 24080 4364 ? Ss 20:37 0:00 /usr/bin/seahorse-agent --execute x-session-manager debby 2907 0.0 2.2 44664 4980 ? Sl 20:37 0:01 gnome-settings-daemon debby 2926 0.2 4.3 24864 9840 ? S 20:37 0:06 /usr/bin/metacity --sm-client-id=default0 debby 2927 0.1 6.4 40716 14368 ? S 20:37 0:04 gnome-panel --sm-client-id default1 debby 2929 0.0 3.9 76312 8944 ? S 20:37 0:00 nautilus --no-default-window --sm-client-id default2 debby 2931 0.1 0.8 15416 1872 ? Ss 20:37 0:04 gnome-screensaver debby 2937 0.0 0.9 41376 2156 ? Ssl 20:37 0:00 /usr/lib/bonobo-activation/bonobo-activation-server --ac-activate --ior-output debby 2939 0.0 1.7 14836 3936 ? S 20:37 0:00 bluetooth-applet --singleton debby 2942 0.0 3.8 46160 8696 ? S 20:37 0:00 update-notifier debby 2947 0.0 1.4 24624 3296 ? S 20:37 0:00 /usr/bin/python /usr/bin/system-config-printer-applet debby 2949 0.0 2.2 30528 5088 ? S 20:37 0:00 python /usr/share/screenlets-manager/screenlets-daemon.py debby 2951 0.0 1.4 14232 3312 ? S 20:37 0:00 kerneloops-applet debby 2952 0.0 1.5 19868 3452 ? Ss 20:37 0:00 /usr/lib/gnome-volume-manager/gnome-volume-manager --sm-disable debby 2954 0.0 1.1 10020 2468 ? S 20:37 0:00 /usr/lib/gnome-vfs-2.0/gnome-vfs-daemon debby 2955 0.0 3.5 38028 7920 ? S 20:37 0:00 python -u /usr/share/screenlets/Notes/NotesScreenlet.py debby 2956 0.0 2.4 22708 5496 ? S 20:37 0:02 nm-applet --sm-disable debby 2959 0.0 1.9 22996 4292 ? Ss 20:37 0:00 gnome-power-manager debby 2965 0.1 2.3 16204 5156 ? S 20:37 0:03 uim-toolbar-gtk debby 2983 0.0 0.3 2880 752 ? S 20:37 0:00 /usr/lib/nautilus-cd-burner/mapping-daemon debby 3013 0.0 2.7 37320 6060 ? Sl 20:37 0:00 /usr/lib/gnome-applets/mixer_applet2 --oaf-activate-iid=OAFIID:GNOME_MixerAppl root 3129 0.0 0.0 0 0 ? S 20:41 0:00 [pdflush] www-data 3197 0.0 1.4 21300 3144 ? S 20:41 0:00 /usr/sbin/apache2 -k start www-data 3198 0.0 1.4 21300 3144 ? S 20:41 0:00 /usr/sbin/apache2 -k start www-data 3199 0.0 1.4 21300 3144 ? S 20:41 0:00 /usr/sbin/apache2 -k start www-data 3200 0.0 1.4 21300 3144 ? S 20:41 0:00 /usr/sbin/apache2 -k start www-data 3201 0.0 1.4 21300 3144 ? S 20:41 0:00 /usr/sbin/apache2 -k start debby 3275 1.9 15.8 119276 35500 ? Sl 20:51 0:32 gnome-terminal debby 3277 0.0 0.3 2880 740 ? S 20:51 0:00 gnome-pty-helper debby 3278 0.0 1.4 5680 3160 pts/0 Ss 20:51 0:00 bash debby 3338 0.3 1.5 6320 3544 pts/0 S+ 20:52 0:05 vim linux11.xhtml debby 3341 0.0 1.4 5680 3136 pts/1 Ss 20:55 0:00 bash debby 3354 1.2 24.8 201216 55652 ? Sl 20:56 0:17 /usr/lib/iceweasel/firefox-bin -a iceweasel debby 3453 0.0 0.4 3512 1024 pts/1 R+ 21:20 0:00 ps aux
デビー君「お!左端にユーザー名が表示されてる!」
ナックス「そうですね。中には『こんなユーザー名の人は僕のLinuxを使っていないはずなんだけど……』っていう名前もあるかと思いますが、それはプログラムさん(?)の名前です。ちなみに、一番右が、実行されたプロセスを表しています」
ナックス「さて!初心者のLinuxユーザーの皆さんに知っておいてほしいことはこのリストの詳しい見方ではなく、ただ一つ『全てのプロセスには番号が振られている』ということを知っておいてほしいのです」
デビー君「番号?」
ナックス「そうです。項目で言えばPIDとなっているところですね。おそらくPIDはプロセスIDという意味でしょう。ps axの例では一番左の番号。ps auxの例では左から2番め(ユーザー名の隣)にある番号です。Linuxでは全てのプロセスに、他のプロセスの番号とは絶対に被らないように割り振られた番号があります。番号の数字が小さいほど、Linuxが起動してすぐに実行されたプロセスであることを意味し、逆に番号の数字が大きいほど、あとから実行されたプロセスであることを意味します」
デビー君「へー。あ!言われてみれば前回のpstreeの説明のときにinitは全てのプロセスの親玉っていっていたけど、psコマンドでは番号1が割り振られてるね」
ナックス「そうです。このことから、Linuxでは起動時にまずinitプロセスが作動することが分かります。ちなみに『絶対に被らないように割り振られた番号』のことをユニーク(一意)な番号と言います。『ユニークな』とか『一意に定まる』とか言う言葉は、Linuxやプログラミングなどで良く使われる言い回しなので、覚えておいて損はないでしょう」
デビー君「はーい。──でも、なんでLinuxの初心者ユーザーにこんなプロセス番号のことを教えるの?」
ナックス「『LinuxはWindowsと違ってソフトウェアがフリーズしない(動かなくならない)』という都市伝説がありますが、実はLinuxのソフトでもフリーズする(動かなくなる)ことがあります。ただ、Linuxの場合は動かなくなったプログラムをCUIのコマンドから強制終了させることができます。結果としてフリーズを簡単に解くことが出来るので、巡り巡って『LinuxはWindowsと違ってソフトウェアがフリーズしない』という都市伝説になったのだと思いますが。その動かなくなったプログラムを特定して強制終了させる方法を今後、段階を踏んで少しずつ説明しようという魂胆です」
デビー君「なるほど」
ナックス「というわけで、次回!これが本当のCUI環境だ!」
