linux杀死进程命令代码_linux命令杀死结束进程

Դ网易

ߣ搜索引擎优化

14

2021-11-07 13:04:49

从普通人的角度来看,一个流程就是一个运行的程序。

从程序员的角度来看,认知要复杂得多。是程序正在运行的实例。它由程序指令、从文件和其他程序中读取的数据或系统用户的输入组成。它也是一个动态运行的实体,运行在应用层,占用内存,经常与内核交互。

进程是内核定义的抽象实体,内核为进程分配各种系统资源来执行程序。

从内核层面来看,这个过程由用户内存空间和一系列内核数据结构组成。其中,用户内存空间包含程序代码和代码使用的变量,内核数据结构用于维护进程的状态信息。记录在内核数据结构中的信息包括:进程ID IDs、虚拟内存表、打开文件描述符表、与信号传输和处理相关的信息、进程资源的使用和限制、当前工作目录、环境变量、命令行等等。

1 进程的类型

Linux中有两种主要类型的进程:

前台进程

这也称为交互过程——这些过程由终端或图形界面启动,并响应用户的操作。也就是说,用户需要开始这样的过程。虽然其中一些可以设置为引导,但它们不会作为Linux操作系统功能/服务的一部分自动启动。

背景过程

也称为非交互/自动进程,这些进程不连接到终端,也不需要任何用户输入。这些流程大多是系统级服务。

需要提到的是,Linux中还有一个非常重要的进程,那就是守护进程deamon。事实上,这个deamon进程属于一种特殊类型的后台进程,它在系统启动时启动,并一直作为服务运行。他们不会死的。它们作为系统任务自发启动(作为服务运行)。但是,它们可以由用户通过初始化过程来控制。

2 linux上进程的4种状态

1.运行Running,系统中的当前进程,或者准备运行(等待CPU单元分配)。

2等待,进程正在等待一个事件或系统资源。

内核还区分了两种不同类型的等待进程。一个是可中断的等待进程,可以被信号中断,另一个是不间断的等待进程,正在等待硬件条件,不能被任何事件/信号中断。

3.Stop Stopped,进程已经停止,通常是因为收到SIGSTOP、SIGSTP、SIGTIN、SIGTOU等信号后停止运行。正在调试的进程通常处于这种状态。

4.僵尸死了,进程已经终止,但是在进程表中仍然有它的条目,进程描述符仍然存在,直到父进程调用wait4()系统调用并释放它。

linux杀死进程命令代码(linux命令kill结束进程)

3 Linux 如何识别进程?

没有名字,怎么会被别人叫?同样,一切都是相通的。Linux如何识别一个没有标记的进程?

Linux是一个多用户、多进程的系统。不同的用户可以在系统上运行不同的程序,同一程序可以运行多个进程。例如,许多人可以登录到您的Linux系统,启用终端tty,您也可以启动多个tty。内核必须唯一标识程序运行的每个实例。

程序由它的进程标识(PID)和它的父进程标识(PPID)标识,因此进程可以分为父进程和子进程。

父进程这些是在运行时创建其他进程的进程。

子进程这些是运行时由其他进程创建的进程。

查找进程 ID

您可以使用pidoff命令来查找进程的进程标识。例如,Linux上所有进程的祖先pidof init进程是1:

$ pidof init

一个

如果用一个程序打开多个实例,比如chrome打开多个网页,pid的操作风格如下:

$pidof chrome

8885 7610 7588 6429 5100 5085 4547 4382 4355 4307 3598 3580 3559

3546 3514 3488 3453 3447 3413 3387 3367 3359 3355 3338 3302 3286

3270 3237 3224 3158 2874 2861 2833 2806 2677 2565 2553 2550 2528

2524 2523 2512

有两个shell命令来查找当前shell的进程标识及其父进程的进程标识。

$回声$PPID

258父进程

ID $ echo $$ 8518 当SHELL进程D

4 后台任务

从终端启动一个进程,在命令的最后使用&符号做参数,该进程就被立即送进后台。比如下面的命令系列:

linux杀死进程命令代码(linux命令kill结束进程)

也可以按Ctrl + Z 暂停执行一个程序,并把它发送到后台(按Ctrl+Z,这样当前终端会给进程发送 SIGSTOP 信号),从而暂停它的执行;它就会变为空闲进程。

linux杀死进程命令代码(linux命令kill结束进程)

要在后台继续运行上面被暂停的命令,使用 bg 命令。接上面的例子。

linux杀死进程命令代码(linux命令kill结束进程)

要把后台进程发送到前台,使用 fg 命令以及任务的 ID,类似:

linux杀死进程命令代码(linux命令kill结束进程)

5 在 Linux 中用shell命令查看活跃进程

ps、top,查看进程

ps 和 top 命令是两个最为常用的进程查看命令。这个命令的功能都很强大。熟悉这两个命令的常见用法,是在Linux中进行日常操作管理的基础。

显示进程信息,包括无终端的(x)和针对用户(u)的进程:如USER, PID, %CPU, %MEM等

ps -aux

按内存资源的使用量对进程进行排序

ps -aux | sort -rnk 4

按 CPU 资源的使用量对进程进行排序

ps -aux | sort -nk 3

按UID、PID、PPID、C、STIME、TTY、TIME、CMD

ps -ef

当然,上面的还可以用grep来过滤。

ps -ef | grep tty

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top显示进程的数据包括 PID、进程属主、优先级、%CPU、%memory等。可以使用这些显示数据指示出资源使用量。

linux杀死进程命令代码(linux命令kill结束进程)

pgrep命令

这个命令扫描当前运行的进程,然后按照命令匹配条件列出匹配结果到标准输出。对于通过名字检索进程号是很有用。

linux杀死进程命令代码(linux命令kill结束进程)

使用参数”-o“,当匹配多个进程时,显示进程号最小的那个。参数”-n“则相反,显示进程号最大的那个。

~$ pgrep -l sh 显示结果如上图所示
~$ pgrep -l -o sh
157 zswap-shrink
~$ pgrep -l -n sh
17341 gnome-screensho

pgrep支持正则表达式条件,通常会与kill命令联用,在指定条件下杀死问题进程。

pstree显示进程树

pstrees以树状图来展示进程之间的关系,可以直观的查看进程父子关系。执行时最好带“-g”参数,这样可以显示进程的PID号。

linux杀死进程命令代码(linux命令kill结束进程)

htop

top只能显示系统进程状况,但它不能与用户交互。一个可以交互的是htop,这个不是系统自带的,需要“sudo apt install htop”去安装。htop通过文字图形化地显示每一个进程的CPU和内存使用量、swap使用量。使用上下光标键选择进程,F7和F8改变优先级,F9杀死进程。

linux杀死进程命令代码(linux命令kill结束进程)

top与htop运行时,都可以按q键退出。

6 在 Linux 中用shell命令干预跃进程

kill、killall 杀死进程

kill <pid>

kill命令用于发送信号来结束进程,如果上面的命令不能杀死进程,那么带“-9”参数试试。

kill -9 <pid>

不知道进程PID,或者想用名字杀死进程时候,用killall命令。

killall -9 - 杀死所有同名进程

使用kill或killall命令前一定要小心,因为进程的内部操作有可能没有完成,可能正在写入文件,你这样咔嚓一下就给杀掉了,进程没来得及清理现场就game over了,有可能带来很大风险。

htop杀死进程

因为系统进程实在太多了,在htop中如果想杀死某个进程,最好先F3查询,然后再按F9杀死。

nice、renice命令

在用top、htop显示进程时,有一列是NI,nice value,表示进程的优先级。进程优先级值的范围从-20到19。值越低,优先级越高。提高一个进程的优先级,内核会分配更多CPU时间片给这个进程。默认情况下,进程以0的优先级启动。

通过nice命令的帮助,用户可以设置和改变进程的优先级。当然,没有root权限,我们不可能达到这一目的。

sudo nice --3 kolourpaint    “kolourpaint”是一个类似于windows上的画图的工具软件 

linux杀死进程命令代码(linux命令kill结束进程)

然后就可以看到优先级为-3的kolourpaint进程。

renice这个命令可以改变正在运行的进程优先值。注意,用户只能改变属于他们自己的进程的优先值。

命令“renice -n -p PID” 改变指定进程的优先值,接上例,执行

$ sudo renice -n 6 -p 16217
16217 (process ID) 旧优先级为 -3,新优先级为 6

用htop查看,系统已经运行的kolourpaint进程NI值已经由-3变成了6。

linux杀死进程命令代码(linux命令kill结束进程)

7 其它一些与进程相关的命令

w命令。是的这个命令就是一个“w”。用来查看登录者的信息及他们的行为。

提供当前登录的用户及其正在执行的进程的信息。显示信息头包含信息,如当前时间、系统运行时长、登录用户总数、过去的1,5,15分钟内的负载均衡数

who命令,查看登录服务器的用户信息

whoami命令,显示自己在系统中的用户名

logname命令,可以显示自己初次登录到系统中的用户名

tty命令,来查看所连接的设备或终端

last命令,查看最近1个月用户登录服务器的情况

8 进程资源限制

ulimit命令,用来查看进程在系统上的资源限制。“ulimit -a“显示当前用户关联的资源限制。

linux杀死进程命令代码(linux命令kill结束进程)

该命令用于控制系统资源在shell和进程上的分配量。对于一般人员没有啥价值,反正你也不会要求太多的资源。但对系统管理员来说可是不一样,真正的大系统,资源管理量巨大。这个命令可以管理员,管理重度使用和存在性能问题的系统。限制资源大小,确保重要进程持续运行,调整其他进程不会占用过多资源。

Linux关于进程的命令非常丰富,且很多命令参数众多,功能强大,并且多个命令可以用管道、重定向等方式来组合实用。这里也只能是一个简介而已。

佭ϴý Ѷ Media8ý

在线客服

外链咨询

扫码加我微信

微信:juxia_com

返回顶部