Linux进程管理命令

一、进程
程序由一条条指令构成,在运行一个程序的时候就是把这些指令从第一条执行到最后一条,而进程是一个正在运行的程序。

比如说,一个main.c文件是不可以直接运行的,对main.c进行编译链接之后生成一个main.exe(在Windows系统中)或main(在Linux系统中),这里的main.exe或者main叫做可执行程序,这个可执行程序是二进制的。所以,其实程序是一个二进制文件,计算机把它运行或者执行起来,它就会产生一个进程。操作系统管理这些进程。

每一个进程都有一个id号为pid,这个pid就是用来唯一标识一个进程的,每个进程的id都是唯一的。

二、进程管理命令

1.ps命令,默认显示与当前终端有关的进程信息

(1)ps
显示的是当前终端中所运行的进程,而不是整个系统所运行的进程:

Linux进程管理命令_第1张图片

从显示的结果可以看出,当前终端中有2个进程,bash打印的内容为:

在这里插入图片描述

ps打印的就是当前终端的进程信息。

【注意】执行3次ps:

Linux进程管理命令_第2张图片
我们可以发现,ps进程的id号逐渐变大,这是因为在第一个ps进程结束以后,它对应的id就会被释放出来,释放出来的id号可以被别的进程再次使用,被复用,但是并不是刚释放出来就被别的进程去使用;当第二次再运行ps时,它的id号会在原有的基础上增加,当id值一直增加到它的最大值以后,才会后头重新寻找没有被使用的id值,也就是被释放出来的id值。

(2)ps -f,显示更多的进程属性信息(全格式),即详细信息。

在这里插入图片描述

(3)ps -e,显示系统中所有的进程信息。我们发现第一个进程的编号是从1开始:

Linux进程管理命令_第3张图片

(4)ps -ef,显示系统中所有的进程的详细信息:

Linux进程管理命令_第4张图片

(5)ps -L,显示进程中的线程ID,LWP就代表线程id:

在这里插入图片描述

2.sleep n,表示睡眠(阻塞)n秒钟。

重新打开一个终端,输入sleep 400,表示睡眠400秒:

Linux进程管理命令_第5张图片

再回到之前打开的终端输入ps,并不能看到刚刚重新打开的终端中的sleep进程:

在这里插入图片描述
输入ps -ef来查看系统中所有进程的详细信息,这时我们就可以看到刚刚在新的终端中运行的sleep进程:

在这里插入图片描述

但是这样很麻烦,我们可以通过管道和过滤来查看,ps -ef | grep "sleep"

在这里插入图片描述

这样就非常方便。

3.Ctrl+c用来结束前台运行进程

结束刚刚sleep 400的进程:

Linux进程管理命令_第6张图片

4.kill命令

(1)kill pid结束或者挂起一个进程,后台和前台的进程都可以通过kill来结束。

先重新打开一个终端,输入sleep 600,表示睡眠600秒:

Linux进程管理命令_第7张图片

然后在另一个终端找到刚刚创建的新的终端中进程sleep的id:

Linux进程管理命令_第8张图片

可以看到整个进程的id是3451。

然后输入kill 3451,表示通过id号来结束整个进程:

Linux进程管理命令_第9张图片

(2)kill -9 pid,强制结束进程

在一个终端中输入sleep 400,表示睡眠400秒,然后按Ctrl+z停止这个进程:

Linux进程管理命令_第10张图片

查看当前终端中的所有进程,发现sleep还在:

在这里插入图片描述

然后通过kill ipd去结束这个进程,发现结束不了:

Linux进程管理命令_第11张图片

这时就需要通过kill -9 pid强制结束这个进程:

Linux进程管理命令_第12张图片
(3)kill -stop pid,挂起一个进程。

5.命令 &,表示这个进程在后台运行

Linux进程管理命令_第13张图片

如果该进程在后台运行,我们在终端就还可以进行操作,比如说上面的ps命令查看进程信息;但是如果该进程在前台运行,那么我们在终端不能进行操作,只有在该进程结束后,才能进行其他操作。

6.pstree命令,以树状图形式显示进程之间的关系

Linux进程管理命令_第14张图片

7.jobs命令,显示当前后台的任务

如下图所示,当前后台没有任务:

在这里插入图片描述

创建一个在后台执行的进程,然后通过jobs来显示当前后台的任务:

在这里插入图片描述

8.前台和后台之间的切换

(1)fg %任务号将后台运行的或挂起的进程挪到前台执行:

在这里插入图片描述

(2)bg %任务号将挂起的进程唤醒到后台执行

先在前台创建一个睡眠400秒的进程:sleep 400,然后通过Ctrl+z停止这个进程:

在这里插入图片描述

然后通过jobs命令显示后台的进程,发现sleep 400这个进程的状态是停止:

在这里插入图片描述

这时,通过bg %任务号,将停止的进程sleep 400唤醒到后台执行:

在这里插入图片描述

你可能感兴趣的:(Linux,linux,运维,服务器)