查看进程
什么是进程?
任何正在执行的程序都称为进程。进程包括工作存储,管理信息(例如正在使用哪些文件),可变信息环境和进程号。这些进程号称为PID
。操作系统内核的工作是创建进程,分配CPU时间和存储空间,以及在任务完成后进行清理。进程可以调用操作系统内核以访问文件,设备或网络资源。可以将进程分为父进程或子进程。父进程是为产生另一个进程(称为子进程)的进程指定的名称。
系统上的第一个过程的PID为1
。这表示这是启动时创建的过程。该程序也称为初始化过程
。init
过程负责引导系统。
Linux为我们提供了一些非常好的监视过程的工具。
ps命令
我们要看的第一个命令是ps
。此命令报告当前系统的快照,显示有关活动进程的信息。最简单的形式:
john@john-desktop:~/test_examples$ ps PID TTY TIME CMD 4701 pts/0 00:00:00 bash 6635 pts/0 00:00:00 ps
在上面,我们有一个正在运行的bash
shell和一个ps
命令。
PID
列标识过程号。TTY
给出了终端的名称。TIME
是进程使用的CPU时间量。CMS
是执行的进程名称。
进程状态
Linux系统上的进程通常属于以下类别之一:
运行的(R)-可以为该进程分配CPU。
睡眠(S)-睡眠,进程正在等待事件。
僵尸(Z)-这是一个已完成的过程,但是其父进程未获取其退出代码。这意味着该进程不能死亡
,而是保持不死
状态。
ps
命令的基本用法
将PID传递给过程将显示基本信息:
john@john-desktop:~/test_examples$ ps 1 PID TTY STAT TIME COMMAND 1 ? Ss 0:00 /sbin/init
定制ps
命令输出的选项
ps -eo uname,pid,ppid,nlwp,pcpu,pmem,psr,start_time,tty,time,args
显示当前shell中当前进程信息
john@john-desktop:~/test_examples$ ps PID TTY TIME CMD 4701 pts/0 00:00:00 bash 6939 pts/0 00:00:00 ps john@john-desktop:~/test_examples$ ps 4701 PID TTY STAT TIME COMMAND 4701 pts/0 Ss 0:00 bash john@john-desktop:~/test_examples$ ps $$ PID TTY STAT TIME COMMAND 4701 pts/0 Ss 0:00 bash john@john-desktop:~/test_examples$ ps l $$ F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 0 1000 4701 4692 20 0 7808 3936 wait Ss pts/0 0:00 bash
$$
是一个shell变量,显示您当前shell的PID。
- UID表示进程所有者的用户
id
。 - PPID是父进程ID。
- PRI是进程的优先级。数字越高,优先级越低。
- VSZ是内存中的进程大小(KiB)。
- RSS是RAM(KiB)中进程的当前大小。
所有过程信息都存储在/ proc文件系统中。
常见的ps
命令示例
ps -ef 显示当前系统上运行的所有进程。
ps -eF 显示以扩展格式运行的所有进程。
ps -elF 显示带有附加线程信息的所有进程。
ps --forest 显示进程层次结构
nice和renice命令
nice值和nice命令
每个Linux进程都有一个关联的优先级,该优先级用于确定其他进程之间如何共享CPU时间片。nice
数字的值越高,优先级越低。
默认情况下,进程的nice值0
开始。执行ps
命令时可以看到这些nice的设置。
为了很好地启动进程,我们可以执行类似于nice -n 10 program
的命令。
通过指定值10
,我们的程序将允许其他进程具有对CPU的更高访问权限。
renice命令
如我们所见,nice
命令仅在启动程序时使用。要更改正在运行的进程的nice值,我们必须使用一个名为renice
的命令。renice 10 1234
将进程1234的nice调整为10。
top
top命令是几乎所有Linux发行版附带的强大工具。top命令允许用户或管理员查看系统上正在运行的进程,并确定进程正在使用多少资源。您也可以使用此工具kill
进程或取消进程。