Linux-中正确终止进程的指南-防止失误和确保系统稳固 (linux系统)
DevOps工程师或系统治理员经常须要治理系统进程。了解如何治理进程关于监控、调试和裁减运行程序是无法或缺的。每个DevOps工程师都应相熟一个基本命令即kill命令,它可以向进程发送信号以成功终止、控制或终止进程的性能。咱们须要了解不同信号的含意及其适用场景。
本文引见kill命令的演化历程、上班原理以及一些最佳通常,协助大家更好地理解和运行这个关键的进程治理工具。
1kill命令简介
在类UNIX操作系统中,kill命令的外围性能是向进程发送信号。只管"kill"这个名字或者暗示其关键目的是终止进程,但关键的是咱们要了解"kill"更多的是关于发送信号的操作,而终止(SIGTERM)只是它可以发送的泛滥信号中的一种。
以下是一些经常使用kill命令的基本示例:
$kill[pid]
$kill-SIGNAME[pid]
$kill-SIGNAME[pid1][pid2][pid3]...
$kill-l1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL5)SIGTRAP6)SIGABRT7)SIGBUS8)SIGFPE9)SIGKILL10)SIGUSR111)SIGSEGV12)SIGUSR213)SIGPIPE14)SIGALRM15)SIGTERM16)SIGSTKFLT17)SIGCHLD18)SIGCONT19)SIGSTOP20)SIGTSTP21)SIGTTIN22)SIGTTOU23)SIGURG24)SIGXCPU25)SIGXFSZ26)SIGVTALRM27)SIGPROF28)SIGWINCH29)SIGIO30)SIGPWR31)SIGSYS34)SIGRTMIN35)SIGRTMIN+136)SIGRTMIN+237)SIGRTMIN+338)SIGRTMIN+439)SIGRTMIN+540)SIGRTMIN+641)SIGRTMIN+742)SIGRTMIN+843)SIGRTMIN+944)SIGRTMIN+1045)SIGRTMIN+1146)SIGRTMIN+1247)SIGRTMIN+1348)SIGRTMIN+1449)SIGRTMIN+1550)SIGRTMAX-1451)SIGRTMAX-1352)SIGRTMAX-1253)SIGRTMAX-1154)SIGRTMAX-1055)SIGRTMAX-956)SIGRTMAX-857)SIGRTMAX-758)SIGRTMAX-659)SIGRTMAX-560)SIGRTMAX-461)SIGRTMAX-362)SIGRTMAX-263)SIGRTMAX-164)SIGRTMAX
2kill命令的历史
kill命令的来源可以追溯到20世纪60年代末和70年代初的UNIX降生。UNIX是由肯·汤普森(KenThompson)、丹尼斯·里奇(DennisRitchie)和其他人在AT&T贝尔试验室开发的。UNIX的关键目的是创立一个繁难的操作系统,支持多义务处置,用初级言语(C言语)编写,并在命令行环境中提供丰盛的适用工具集。
UNIX的指点准绳之一是做好一件事并做好它。这象征着适用工具被设计成能够高效地口头单个义务,并与其余程序良好配合。正是出于这一理念,许多小型、多用途的适用工具被发明进去,可以以各种方式组合以口头复杂的义务。kill命令是这一理念的典型例子:它的惟一目的是向进程发送信号,是无法或缺的。在UNIX系统中,kill命令是一种弱小而灵敏的工具,使咱们能够对进程启动控制和治理,为上班提供了关键的支持。
2.1kill命令的演化
3kill命令的上班原理
UNIX系统中的每个进程都有惟一的进程ID(PID)。kill命令经过向具备给定PID的进程发送指定的信号来上班。假设未指定信号,kill自动发送SIGTERM信号,这会要求进程终止,以便启动资源清算或成功任何必要的最后义务。
kill的/target=_blankclass=infotextkey>Python封装
importosimportsignalimportsysdefkill_process(pid,sig=signal.SIGTERM):try:os.kill(pid,sig)print(f"已向进程{pid}发送信号{sig}。")exceptProcessLookupError:print(f"失误:找不到进程{pid}。")exceptPermissionError:print(f"失误:无权向进程{pid}发送信号。")if__name__=="__mn__":iflen(sys.argv)<3:print("用法:pythonkill_impl.py")sys.exit(1)sig=int(sys.argv[1])pid=int(sys.argv[2])kill_process(pid,sig)
4kill命令的经常出现信号
4.1SIGTERM(15)
$kill-1512345
4.2SIGKILL(9)
$kill-912345
4.3SIGHUP(1)
$kill-112345
4.4SIGINT(2)
$kill-212345
4.5SIGQUIT(3)
$kill-312345
5kill命令的最佳通常
在DevOps环境中治理系统时,妥善且有效地经常使用kill命令十分关键。以下是DevOps工程师在经常使用kill命令时应遵照的一些最佳通常:
这些最佳通常有助于愈加安保地经常使用kill命令,缩小异常终止进程或形成系统不稳固的危险。请务必在治理系统时遵照这些准绳,以确保系统的牢靠性和稳固性。
4-6 Linux 终止进程 --- kill (kill -15 实验)
kill -15 PID —— 正常方式终止一个程序。 中断进程时应首先用 -15,以便于其能够预先清理临时文件和释放资源。 -9作为最后手段,应对那些失控的进程。 1)、kill -15 终止后台运行的进程。 红色下划线:sleep & —— 后台运行延时 秒的命令,进程 ID 为1550。 黄色下划线:ps -j —— 列出 1550 sleep 命令的进程。 (PID:进程 ID、PGID:线程组 ID、SID:会话 ID、TTY:进程运行的终端,标识那个终端控制。 (pts远程终端、tty系统终端)、TIME:进程运行的时间 和 CMD:命令的名称和参数)。 jobs -l —— 列出后台运行的命令,1550 sleep 命令正在后台运行。 蓝色下划线:kill -15 1550—— 终止1550 进程。 系统反馈Terminated终止 1550 进程。 绿色方框:ps -j 已查询不到1550 sleep 的进程。 jobs -l 也没有后台运行的命令。 2)、kill -15 配合 fg 查看终止挂起的进程。 红色下划线:sleep 延时 秒后 ctrl + z 挂起。 黄色下划线:ps -j 查看进程,有 1578 sleep 的进程。 jobs -l 查看后台,1578 sleep 的状态是 stopped 暂停状态。 蓝色下划线:kill -15 终止 1578 进程。 此时系统没有反馈信息。 绿色下划线:ps -j 查看进程,1578 sleep 进程仍在。 jobs -l 查看后台,1578 sleep 的状态是 stopped 暂停状态。 红色下划线:fg 1 把后台运行的 sleep 调至前台继续运行。 此时,系统首先提示 sleep 已经调至前台运行,然后又提示Terminated 终止进程。 蓝色下划线:ps -j 查看进程已经没有了 1578 sleep 进程。 jobs -j 查看也后台也没有命令在执行。 3)、kill -15 配合 bg 查看终止挂起的进程。 同样的,首先sleep 后 ctrl + z 挂起。 通过 ps -j 查看后台进程有 1590 sleep进程,josb -l 查看后台也有状态为 stopped 的1590 sleep 命令。 然后,kill -15 1590 终止 1590 进程。 再次通过 ps -j 查看1590 sleep进程仍在,josb -l 查看后台还有状态为 stopped 的1590 sleep 命令。 红色下划线:bg 1 把挂起的 sleep 命令继续运行。 此时,系统反馈 sleep 命令在后台运行。 黄色下划线:ps -j 查看进程,系统反馈 sleep 进程已经 Terminated 终止。 jobs -l 也查询不到sleep 在后台运行。 从实验上看: 1、后台命令运行时(Running),执行 kill -15 可以终止进程。 2、挂起命令,处于暂停状态时(Stopped),执行 kill -15 后通过 ps 还可以查询到进程, jobs还可以查询到后台命令,状态仍然是 Stopped 暂停状态。 用 fg 把暂停的后台进程调至前台运行时,系统反馈一行 sleep 命令调至前台运行。 跟着一条 Terminated 终止进程。 再用 ps 查询不到进程。 用 jobs 已经查询不到后台命令。 (这里和 kill -2 不同,kill -2 后用 fg 系统只反馈一行 sleep 命令调至前台运行,没有提示进程已中断。 ) 3、挂起命令,处于暂停状态时(Stopped),执行 kill -15 后通过 ps 还可以查询到进程, jobs还可以查询到后台命令,状态仍然是Stopped 暂停状态。 用 bg 把暂停的后台命令恢复运行时,系统反馈 sleep 命令在后台运行。 再用 ps 查询进程已经终止,用 jobs 已经查询不到后台命令。 (这里和 kill -2一样)
以下Linux命令中,用于终止某个进程的命令是( )。
【答案】:B在Linux操作系统中有多种方法终止命令的执行。 终止当前正在执行的某个命令最快的方法是按下组合键“Ctl+C。 这个方法只有在用户能够从某个虚拟控制台上控制这个程序的时候才奏效。 终止某个出错程序的另外一个办法是kill (杀)掉它的进程。 参照下面的步骤进行操作:①输入“ps”命令获取进程的PID,这个命令要求你是运行这个程序的用户或者是根用户。 如果是根用户,输入“ps -aux命令可查看所有的进程。 ②在清单中找到这个出错进程。 ③记下ps命令输出清单中进程状态行最左边的ID数字。 ④输入 kill ID”,终止该进程。 因此Linux中的kill命令用来终止指定的进程的运行,是Linux下进程管理的常用命令。 格式是kill[参数][进程号]。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。