Home  >  Article  >  Operation and Maintenance  >  Process management under Linux - introduction to ps, pstree and other commands

Process management under Linux - introduction to ps, pstree and other commands

齐天大圣
齐天大圣Original
2020-10-10 12:33:342473browse

Process, as the name suggests, is a running program. Process is the basic operating unit of the operating system. Each process has a unique process ID, and we manage processes through this ID.

ps

To check the running status of each program, use the ps command. Here we talk about the concepts of parent process and child process. Child processes are derived from parent processes. Processes without parent processes are called orphan processes.

View the process status of the current bash environment:

# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 43530 43528  0  80   0 - 28886 do_wai pts/0    00:00:00 bash
0 R     0 43552 43530  0  80   0 - 38336 -      pts/0    00:00:00 ps

Here UID represents the user ID, PID represents the process ID, and PPID represents the ID of the parent process.

View all process status ;

# ps aux 
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
……
root         2  0.0  0.0      0     0 ?        S    Sep29   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Sep29   0:02 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   Sep29   0:00 [kworker/0:0H]
……

You can view all process status through ps aux, but it does not list the parent process ID. We can use ps -lA or ps -ef to view all processes and display the parent process ID.

[root@localhost ~]# ps -lA
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0     1     0  0  80   0 - 47844 ep_pol ?        00:00:04 systemd
1 S     0     2     0  0  80   0 -     0 kthrea ?        00:00:00 kthreadd
1 S     0     3     2  0  80   0 -     0 smpboo ?        00:00:02 ksoftirqd/0

pstree

Although the above view all The process lists the parent process ID, but the relationship between the parent and child processes is not clear at a glance. We can use pstree to list all processes as a process tree.

# pstree -up
systemd(1)─┬─BT-Panel(5462)───{BT-Panel}(5469)
           ├─BT-Task(5361)─┬─{BT-Task}(5375)
           │               ├─{BT-Task}(5376)
           │               ├─{BT-Task}(5377)
           │               ├─{BT-Task}(5381)
           │               ├─{BT-Task}(5382)
           │               └─{BT-Task}(5390)
……

You can also view the number of processes for a specific process.

# pstree -p 5389 -up
mysqld(5389,mysql)─┬─{mysqld}(5414)
                   ├─{mysqld}(5415)
                   ├─{mysqld}(5416)
……

pidof

View the process ID number through the process name. For example, if I want to know the mysqld process ID, I can check it through the pidof command.

# pidof mysqld
5389

Note that there may be multiple identical process names on the server, so more than one process ID will be found through pidof.

# pidof php-fpm
42609 41610 41588 ……

kill, killall

For process management, we manage it through the process number PID and a signal signal.

Code Name Content
1 SIGHUP Starting a terminated program allows the PID to re-read its own configuration file, similar to restarting
2 SIGINT Equivalent to using the keyboard to enter [ctrl]-c to interrupt the progress of a program
9 SIGKILL represents forced interruption of a program The progress of
15 SIGTERM terminates the program with the normal ending program. Since it is a normal termination, subsequent actions will complete it. This signal is also the default value. When no signal is added, this value is used.
19 SIGSTOP is equivalent to using the keyboard to enter [ctrl]-z to pause a program

The difference between kill and killall is that kill manages processes through process IDs, while killall manages processes through process names.

# kill -15 4260
# killall -9 php-fpm  # 注意,这样会杀死所有php-fpm进程

The above is the detailed content of Process management under Linux - introduction to ps, pstree and other commands. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn