在Linux操作系统中,进程是指一个程序的运行实例,它需要存储器来存储程序本身及其操作数据。内核负责创建和跟踪进程。当程序运行时,内核首先准备好一些内存,将可执行代码从文件系统加载到内存里,然后开始运行代码。内核保存此进程的运行信息,其中最常见的是称为进程标识符(PID)的数字,每个进程都有PID。计算机开机时,Linux内核只创建一个名为init(ubuntu19为systemd)的进程作为一切进程的源头,因此Linux的所有进程构成了一个树状结构,这个树状结构以init进程为根。可以通过
pstree
命令来显示整个进程树。
ps aux
命令列出当前运行的进程,并通过显示其PID来帮助识别它们。一旦知道进程的PID,可以通过
kill 进程的PID
命令发送一个终止进程的信号(如果用户拥有该进程的权限)来结束进程。
如果一个命令后跟“&”符号,则命令解释器也可以在后台运行程序。通过使用&符号,即使程序仍在运行(从当前视图中隐藏成为后台进程),也可以立即恢复对shell的控制。如
ping localhost &
指令将发送ICMP包的进程转移到了后台进行,此时用户仍可在shell中输入指令。
jobs
这条指令列出在后台运行的进程以及它们的job-number。
fg %job-number
指令(意为foreground)将后台运行的进程还原到前台。
当一个命令在前台运行时(通过正常的shell命令启动,或是通过fg命令还原到前台),使用CTRL+Z组合键会暂停进程并恢复对命令行的控制。然后可以使用
bg %job-number
指令(意为background)在后台重新启动该进程。