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!