Processes (ps)

ps allows us to control user processes from the shell.

The command in its most minimal application returns the following

  PID TTY       TIME     CMD
  2437 pts/2    00:00:01 zsh
  7112 pts/2    00:00:00 ps

With the -e modifier we can list more processes:

 PID TTY          TIME CMD
      1 ?        00:00:05 systemd
      2 ?        00:00:00 kthreadd
      3 ?        00:00:00 rcu_gp
      4 ?        00:00:00 rcu_par_gp
      5 ?        00:00:00 netns
      7 ?        00:00:00 kworker/0:0H-events_highpri
      9 ?        00:00:00 mm_percpu_wq
     11 ?        00:00:00 rcu_tasks_kthread
     12 ?        00:00:00 rcu_tasks_rude_kthread
     13 ?        00:00:00 rcu_tasks_trace_kthread
     14 ?        00:00:08 ksoftirqd/0
     15 ?        00:03:20 rcu_preempt
     16 ?        00:00:00 rcub/0
     17 ?        00:00:00 migration/0
     18 ?        00:00:00 idle_inject/0
     20 ?        00:00:00 cpuhp/0
     21 ?        00:00:00 cpuhp/1
     22 ?        00:00:00 idle_inject/1
     23 ?        00:00:00 migration/1
pid
Process ID: every currently running process has a unique ID
tty
The terminal device where the process is running
Time
The amount of CPU time in minutes and seconds that the process has used so far. The total amount of time that the process has spent running instructions on the processor.
cmd
The command used to run the program. Note this can change during the running of the program.

Modifiers

ps x
Show all running processes
ps ax
Show all processes not just the ones you, the current user, own
ps u
Show detailed info on processes
ps w
Show full command names

Process termination

The general schema is: kill [pid]. This allows for process clean-up. If this doesn’t succeed you can force with KILL [pid] which will terminate the process immediately but is obviously more risky.

We can also start/stop processes with modifiers on kill:

  • kill -STOP pid
  • kill -CONT pid