Explanation of different process states in Linux and how to view or deal with them ?
Today we will look at a very interesting topic to understand various different process states available in Linux.
To understand this post lets look at the command output.
1. ps -aux Command Output showing process states. Look for STAT column.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 2896 1432 ? Ss Aug27 0:01 /sbin/init root 6 0.0 0.0 0 0 ? S Aug27 0:00 [watchdog/0] root 7 0.0 0.0 0 0 ? S Aug27 0:14 [events/0] root 34 0.0 0.0 0 0 ? SN Aug27 0:00 [ksmd] root 35 0.0 0.0 0 0 ? S Aug27 0:00 [aio/0] root 36 0.0 0.0 0 0 ? S Aug27 0:00 [crypto/0] root 413 0.0 0.1 2948 1244 ? S< s Aug27 0:00 /sbin/udevd -d root 996 0.0 0.0 0 0 ? S Aug27 0:00 [jbd2/sda1-8] root 1411 0.0 0.0 13012 812 ? S< sl Aug27 0:00 auditd root 1445 0.0 0.1 36084 1552 ? Sl Aug27 0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5 root 1505 0.0 0.0 2784 844 ? Ss Aug27 0:02 lldpad -d root 1518 0.0 0.0 0 0 ? S Aug27 0:00 [scsi_tgtd/0] root 1524 0.0 0.0 0 0 ? S< Aug27 0:00 [fcoethread/0] root 1525 0.0 0.0 0 0 ? S Aug27 0:00 [cnic_wq] root 1526 0.0 0.0 0 0 ? S Aug27 0:00 [bnx2fc] root 1527 0.0 0.0 0 0 ? S< Aug27 0:00 [bnx2fc_l2_threa] root 1528 0.0 0.0 0 0 ? S< Aug27 0:00 [bnx2fc_thread/0] root 1532 0.0 0.0 2200 368 ? Ss Aug27 0:00 /usr/sbin/fcoemon --syslog dbus 1547 0.0 0.1 13552 1524 ? Ssl Aug27 0:00 dbus-daemon --system root 1561 0.0 0.6 22512 5600 ? Ssl Aug27 0:00 NetworkManager --pid-file=/var/run/NetworkManager/NetworkManager.pid root 1567 0.0 0.2 4864 2264 ? S Aug27 0:00 /usr/sbin/modem-manager nglinux 3975 0.0 1.1 53872 10776 ? SNl Aug27 0:00 Terminal nglinux 3977 0.0 0.0 2072 624 ? SN Aug27 0:00 gnome-pty-helper nglinux 3978 0.0 0.1 5236 1676 pts/0 SNs Aug27 0:00 bash root 3998 0.0 0.3 10596 3368 pts/0 SN Aug27 0:00 sudo su - root 4004 0.0 0.3 8116 2752 pts/0 SN Aug27 0:00 su - root 4007 0.0 0.1 5240 1668 pts/0 SN+ Aug27 0:00 -bash root 4631 0.0 0.1 3208 1740 ? S< 03:10 0:00 /sbin/udevd -d root 5254 0.0 0.1 2944 1196 ? S< 09:14 0:00 /sbin/udevd -d root 5403 0.2 0.3 11752 3568 ? Ss 11:47 0:00 sshd: root@pts/1 root 5406 0.0 0.1 5128 1664 pts/1 Ss 11:47 0:00 -bash root 5433 0.0 0.1 4912 1000 pts/1 R+ 11:49 0:00 ps -aux
2. Explanation of different STAT column output.
S --> Interruptible sleep(S) process which is waiting for an event to complete. Ss --> A session leader(s) process in Interruptible sleep(S). SN --> A low priority(N) process which is nice to others is in interruptible sleep(S). S< s --> "<" indicates a high priority process and the process is a session leader(s) in interruptible sleep(S). S< sl --> A multhi-threaded(l) high priority(<) session leader(s) process in interruptible sleep(S). S< --> A high priroty(<) process in interruptible sleep(S). SNl --> A low priority(N) multi-threaded(l) process in interruptible sleep(S) state. SNs --> A low priority(N) session leader(s) process in interruptible sleep(S). SN+ --> A low priority(N) interruptible sleep(S) process running in foreground(+). R+ --> A foreground(+) running(R) process.
3. Explanation of different Process States.
1. Running or Runnable (R) 2. Sleeping or waiting Interruptible sleep mode (S) Uninterruptible sleep mode (D) 3. Stopped (T) 4. Zombie (Z)
1. Running or Runnable (R) : A running process or might be waiting for its turn to process by the scheduler.
2. Sleeping or waiting : A waiting process for some of its sub-task to finish are sent into sleeping state.
Interruptible sleep mode (S) : This sleep mode can be interrupted by us and this process can be killed/changed.
Uninterruptible sleep mode (D) : This sleep mode can't be interrupted and such processes can't be killed explicitly.
3. Stopped (T) : A stopped or suspended process.
4. Zombie (Z) : Those terminated or killed processes(or the processes which has completed their execution) which are not yet cleared from system process table.
4. Sorting Output by process states
This is very useful command and can be helpful to identify a type of processes on system, say zombie processes, uninterruptible sleep process, etc.
[root@nglinux ~]# ps -eo stat,pid,ppid,comm | sort -n -k 1 R+ 6917 6616 ps S 2 0 kthreadd S 3 2 migration/0 S 4 2 ksoftirqd/0 S 5 2 stopper/0 S 6 2 watchdog/0 S 7 2 events/0 S 8 2 events/0 S 9 2 events_long/0 S 10 2 events_power_ef S 11 2 cgroup S 12 2 khelper S 13 2 netns S 14 2 async/mgr S 15 2 pm S 16 2 sync_supers S 17 2 bdi-default S 18 2 kintegrityd/0 S 19 2 kblockd/0 S 20 2 kacpid S 21 2 kacpi_notify S 22 2 kacpi_hotplug S 23 2 ata_aux S 24 2 ata_sff/0 S 25 2 ksuspend_usbd S 26 2 khubd S 27 2 kseriod S 28 2 md/0 S 29 2 md_misc/0 S 30 2 linkwatch S 31 2 khungtaskd S 32 2 lru-add-drain/0 S 33 2 kswapd0 S 35 2 aio/0 S 36 2 crypto/0 S 43 2 kthrotld/0 S 45 2 kpsmoused S 46 2 usbhid_resumer S 47 2 deferwq S 80 2 kdmremove S 81 2 kstriped S 172 2 scsi_eh_0 S 173 2 scsi_eh_1 S 204 2 mpt_poll_0 S 205 2 mpt/0 S 206 2 scsi_eh_2 S 210 2 scsi_eh_3 S 308 2 flush-8:16 S 310 2 jbd2/sdb1-8 S 311 2 ext4-dio-unwrit S 996 2 jbd2/sda1-8 S 997 2 ext4-dio-unwrit S 1090 2 kauditd S 1151 2 ib_addr S 1156 2 infiniband/0 S 1165 2 ib_mcast S 1170 2 iw_cm_wq S 1175 2 ib_cm/0 S 1180 2 rdma_cm S 1201 2 ipoib_flush S 1518 2 scsi_tgtd/0 S 1519 2 fc_exch_workque S 1520 2 fc_rport_eq S 1523 2 fcoe_work/0 S 1525 2 cnic_wq S 1526 2 bnx2fc S 1567 1 modem-manager S 1644 1643 hald-runner S 1690 1644 hald-addon-inpu S 1693 1644 hald-addon-acpi S 1778 1 mysqld_safe S 2131 2097 httpd S 2132 2097 httpd S 2133 2097 httpd S 2134 2097 httpd S 2135 2097 httpd S 2136 2097 httpd S 2137 2097 httpd S 2138 2097 httpd S 2292 1 dbus-launch S 2304 1 devkit-power-da S 2358 1 polkitd S 3805 2144 authatieventsd. S 3922 1 udisks-daemon S 3928 3922 udisks-daemon S 3949 3932 gconf-helper S 6661 1561 dhclient S+ 6918 6616 sort S< 1524 2 fcoethread/0 S< 1527 2 bnx2fc_l2_threa S< 1528 2 bnx2fc_thread/0 S< 4631 413 udevd S< 5254 413 udevd S< s 413 1 udevd S< sl 1411 1 auditd S< sl 3932 1 pulseaudio SN 34 2 ksmd SN 3839 1 dbus-launch SN 3873 1 xfconfd SN 3892 1 xfsettingsd SN 3893 3888 xfwm4 SN 3896 3888 xfdesktop SN 3900 1 gvfsd SN 3905 1 gvfs-gdu-volume SN 3906 1 xfce4-settings- SN 3913 1 polkit-gnome-au SN 3925 3895 panel-6-systray SN 3934 1 restorecond SN 3936 1 gvfsd-trash SN 3941 1 nm-applet SN 3951 1 gconfd-2 SN 3954 3895 xfce4-oragecloc SN 3956 3895 xfce4-brightnes SN 3960 3895 panel-4-xfce4-n SN 3977 3975 gnome-pty-helpe SN 3998 3978 sudo SN 4004 3998 su SN+ 4007 4004 bash SNl 2374 1 rtkit-daemon SNl 2398 2183 gdm-session-wor SNl 3888 3831 xfce4-session SNl 3895 3888 xfce4-panel SNl 3958 3895 xfce4-mixer-plu SNl 3974 1 Thunar SNl 3975 3974 Terminal SNs 3831 2398 sh SNs 3848 3831 ssh-agent SNs 3878 1 gpg-agent SNs 3907 1 xfce4-power-man SNs 3930 1 xfce4-power-man SNs 3978 3975 bash SNsl 3840 1 dbus-daemon STAT PID PPID COMMAND Sl 1445 1 rsyslogd Sl 1985 1778 mysqld Sl 2183 2152 gdm-simple-slav Sl 2222 1 console-kit-dae Sl 3821 1 gnome-keyring-d Ss 1 0 init Ss 1505 1 lldpad Ss 1532 1 fcoemon Ss 1592 1 cupsd Ss 1626 1 wpa_supplicant Ss 1631 1 acpid Ss 1739 1 sshd Ss 2086 1 abrtd Ss 2097 1 httpd Ss 2109 1 crond Ss 2124 1 atd Ss 2144 1 atieventsd Ss 5403 1739 sshd Ss 6613 1739 sshd Ss 6616 6613 bash Ss+ 2157 1 mingetty Ss+ 2159 1 mingetty Ss+ 2161 1 mingetty Ss+ 2163 1 mingetty Ss+ 2170 1 mingetty Ss+ 2186 2183 Xorg Ss+ 5406 5403 bash Ssl 1547 1 dbus-daemon Ssl 1561 1 NetworkManager Ssl 1643 1 hald Ssl 1720 1 pcscd Ssl 2152 1 gdm-binary [root@nglinux ~]#