00. 目录
01. 命令概述
kill命令用来删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或job指令查看。
02. 命令格式
语法格式:kill [参数] [进程号]
- 1
03. 常用选项
-l <信号变化哦啊>,若不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
- 1
- 2
- 3
04. 参考示例
4.1 列出所有信号名称
[deng@itcast ~]$ 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
[deng@itcast ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略,下面是常用的信号:
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
4.2 通过进程号杀死进程
[deng@itcast ~]$ sleep 3000 &
[1] 122936
[deng@itcast ~]$ ps
PID TTY TIME CMD
91509 pts/1 00:00:01 bash
122936 pts/1 00:00:00 sleep
123053 pts/1 00:00:00 ps
[deng@itcast ~]$ kill -9 122936
[deng@itcast ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
4.3 使用默认的信号杀死进程
[deng@itcast ~]$ ps
PID TTY TIME CMD
91509 pts/1 00:00:01 bash
124811 pts/1 00:00:00 sleep
124846 pts/1 00:00:00 ps
[deng@itcast ~]$ kill 124811
[1]+ 已终止 sleep 3000
[deng@itcast ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
4.4 使用9号信号的编号杀死进程
[deng@itcast ~]$ kill -SIGKILL 124811
- 1
4.5 列出指定信号的编号
[deng@itcast ~]$ kill -l SIGKILL
9
[deng@itcast ~]$ kill -l KILL
9
[deng@itcast ~]$
- 1
- 2
- 3
- 4
- 5
4.6 不允许杀死1号进程
[deng@itcast ~]$ ps -aux | grep systemd
[deng@itcast ~]$ kill -9 1
-bash: kill: (1) - 不允许的操作
[deng@itcast ~]$ kill -SIGHUP 1
-bash: kill: (1) - 不允许的操作
- 1
- 2
- 3
- 4
- 5
05. 附录
本文先熟悉下进程管理的文件kernel\base\core\los_process.c中的内部接口,读读代码,做些记录。
1、LiteOS-A内核进程全局变量
⑴是进程池,存放各个进程控制块LosProcessCB的信息。⑵处开始的g_freeProcess是空闲进程链表,挂载各个空闲进程控制块;g_processRecycleList是待回收进程控制块链表,挂载各个等待回收的进程控制块。⑶处开始的g_userInitProcess是用户根进程的进程号,数值固定为1.,g_kernelInitProcess是内核进程,内核进程的进程号固定为2,g_kernelIdleProcess是内核空闲进程,进程号固定为0。⑷处开始的g_processMaxNum表示为配置的进程的最大数目,g_processGroup维护进程组信息,所有的进程组都会挂载这个全局进程组链表节点g_processGroup->groupList上。
⑴ LITE_OS_SEC_BSS LosProcessCB *g_processCBArray = NULL;
⑵ LITE_OS_SEC_DATA_INIT STATIC LOS_DL_LIST g_freeProcess;
LITE_OS_SEC_DATA_INIT STATIC LOS_DL_LIST g_processRecycleList;
⑶ LITE_OS_SEC_BSS UINT32 g_userInitProcess = OS_INVALID_VALUE;
LITE_OS_SEC_BSS UINT32 g_kernelInitProcess = OS_INVALID_VALUE;
LITE_OS_SEC_BSS UINT32 g_kernelIdleProcess = OS_INVALID_VALUE;
⑷ LITE_OS_SEC_BSS UINT32 g_processMaxNum;
LITE_OS_SEC_BSS ProcessGroup *g_processGroup = NULL;
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
评论记录:
回复评论: