目录

方法一:

方法二:

kill的用法:

一、杀死后台一个进程

原理解读:

常用的只有9种信号:

二、踢出一个用户(杀死一个用户开启的所有进程)

(1)查看用户登陆信息: who

(2)查看自己的身份

(3)踢出登陆的用户

kill的注意事项:


方法一:

首先:   rm -f   /var/run/yum.pid
然后:  再次运行Yum

方法二:

kill -9 pid号 #强制杀死该进程

kill -9 2790 #杀死pid为2790的程序

kill的用法:

kill命令主要用于强制关闭进程

一、杀死后台一个进程

第一步:找到某个应用的进程号:

ps -aux | grep 应用名称    ps -ef | grep 应用名称    top  | grep 应用名称 

[root@localhost ~]# ps -aux
USER    PID %CPU  %MEM    VSZ    RSS   TTY STAT START   TIME COMMAND
root         1      0.0       0.4      128156    4076  ?        Ss  09:58      0:01  /usr/lib/sys
root         2      0.0       0.0           0          0       ?        S    09:58      0:00  [kthreadd]
root         3      0.0       0.0           0          0       ?        S    09:58      0:00  [ksoftirqd/0
root         4      0.0       0.0           0          0       ?        R    09:58      0:00  [kworker/0:0
root         5      0.0       0.0           0          0       ?        S<  09:58      0:00  [kworker/0:0
root         7      0.0       0.0           0          0       ?        S    09:58      0:00  [migration/0
root         8      0.0       0.0           0          0       ?        S    09:58      0:00  [rcu_bh]
root         9      0.0       0.0           0          0       ?        S    09:58      0:00  [rcu_sched]
root        10     0.0       0.0           0          0       ?        S<  09:58      0:00  [lru-add-

第二步:杀死进程

正常杀死进程:kill  -15  pid号

如杀死上图中pid为10的进程:kill -15 10

强制杀死进程: kill -9 pid号

注:杀死进程的时候,推荐是正常杀死进程,而不是强制杀死进程。

原理解读:

Kill命令和信号

  当你执行一个“kill”命令,你实际上发送了一个信号给系统,告诉它去终结不正常的应用。总共有60个你可以使用的信号,但是基本上你只需要知道SIGTERM(15)(正常杀死信号)和SIGKILL(9)(强制杀死信号)。

kill -l              #信号的列表

[root@localhost ~]# kill -l
 1) SIGHUP       2) SIGINT      3) SIGQUIT    4) SIGILL      5) SIGTRAP
 6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
11) SIGSEGV   12) SIGUSR2  13) SIGPIPE  14) SIGALRM  15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7  42)SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10   45) SIGRTMIN+11   46) SIGRTMIN+12 47)SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX   

共有64种信号,每种信号均有名称和对应的信号序列号,当想要发送什么信号给系统的时候,只要告知系统该信号的序列号即可。

常用的只有9种信号:

- 1         #终端断线
- 2          #中断(等同 Ctrl + C)
- 3          #退出(同 Ctrl + \)
- 15        #终止(可以使得进程在退出之前清理并释放资源)
- 9         #强制终止

- 18        #继续(与19相反)
- 19        #暂停(等同 Ctrl + Z)

二、踢出一个用户(杀死一个用户开启的所有进程)

(1)查看用户登陆信息: who

[root@localhost ~]# who
root     :0           2022-03-07 09:58 (:0)
root     pts/0        2022-03-07 10:13 (:0)

(2)查看自己的身份

        whoami               #避免把自己踢掉

(3)踢出登陆的用户

pkill  -kill  -t  pts/2 (按终端,pts/2为所被下线用户的终端)

pkill   -u   lisi       #强制下线用户lisi

killall  -9  -u  lisi    #强制下线用户lisi

kill的注意事项:

1.如果kill时,不指定信号就会默认发送信号15,终止指定进程,使得进程在退出之前清理并释放资源。

2.使用kill时,root用户将影响用户的进程,非root用户只能影响自己的进程。

3.使用kill时,当kill向进程发送信号,必须是这些进程的主人。如果杀死一个没有权限杀死的进程或杀死一个不存在的进程,就会报错。如下:
-bash: kill: (20) - No such process

4.使用kill时,如果成功地发送了信号,shell会在屏幕上显示出进程的终止信息。(按下Enter键,就会显示出来)

5.使用kill时,如果使用信号9,使进程强行终止,可能会使数据丢失或者终端无法恢复到正常状态。

6.init进程,它是一个由内核启动的用户级进程,所有进程都是init进程的子孙,init不可杀。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐