Linux kill工具和作业控制及优先级调整

1. kill

kill: kill命令用了杀死单个进程或者一类进程,杀死进程的过程其实是向进程发送各种不同的控制信号,以实现对进程的管理。

显示当前系统可用信号:

[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    

常用信号说明:

1) SIGHUP: 无需关闭进程而让其重读配置文件 - 对于一些服务类进程至关重要
2) SIGINT: 中止正在运行的进程 - 相当于ctrl + c
9) SIGKILL: 杀死正在运行的进程
15) SIGTERM: 终止正在运行的进程
18) SIGCONT
19) SIGSTOP

指定信号的方法:

(1) 指定信号的数字标识: 1,2,9
(2) 指定信号的完整名称: SIGHUP, SIGKILL
(3) 信号的简写名称: HUP, KILL, TERM, INT …

向进程发送信号:

kill [-SIGNAL] PID …

终止”名称”之下的所以进程

有些进程会由父进程创建多个子进程,若想处理所有的进程,则可以使用下面的命令:
# killall [-SICNAL] Program

示例:

开启http服务,查看http进程,并杀死所有http进程

# 开启http服务
[root@localhost ~]# systemctl start httpd

# 查看http服务状态
[root@localhost ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-08-22 16:32:51 CST; 10min ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 10761 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
    Tasks: 6
   CGroup: /system.slice/httpd.service
           ├─10761 /usr/sbin/httpd -DFOREGROUND
           ├─10763 /usr/sbin/httpd -DFOREGROUND
           ├─10764 /usr/sbin/httpd -DFOREGROUND
           ├─10765 /usr/sbin/httpd -DFOREGROUND
           ├─10766 /usr/sbin/httpd -DFOREGROUND
           └─10938 /usr/sbin/httpd -DFOREGROUND

Aug 22 16:32:51 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Aug 22 16:32:51 localhost.localdomain httpd[10761]: AH00558: httpd: Could not reliably determine ...age
Aug 22 16:32:51 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

#查看网络连接情况,80端口是否被监听
[root@localhost ~]# ss -lnt | grep -E 80
LISTEN     0      128         :::80                      :::*  
# 查看http服务进程                
[root@localhost conf]# ps -aux | grep -E "httpd"
root      12865  0.0  0.5 224020  5020 ?        Ss   17:25   0:00 /usr/sbin/httpd -DFOREGROUND
apache    12866  0.0  0.3 226244  3832 ?        S    17:25   0:00 /usr/sbin/httpd -DFOREGROUND
apache    12867  0.0  0.3 226244  3836 ?        S    17:25   0:00 /usr/sbin/httpd -DFOREGROUND
apache    12868  0.0  0.3 226244  3836 ?        S    17:25   0:00 /usr/sbin/httpd -DFOREGROUND
apache    12869  0.0  0.3 226244  3836 ?        S    17:25   0:00 /usr/sbin/httpd -DFOREGROUND
apache    12870  0.0  0.3 226104  3316 ?        S    17:25   0:00 /usr/sbin/httpd -DFOREGROUND
apache    12871  0.0  0.3 226244  3832 ?        S    17:25   0:00 /usr/sbin/httpd -DFOREGROUND
apache    12872  0.0  0.3 226244  3836 ?        S    17:25   0:00 /usr/sbin/httpd -DFOREGROUND
apache    12873  0.0  0.3 226244  3832 ?        S    17:25   0:00 /usr/sbin/httpd -DFOREGROUND
apache    12999  0.0  0.3 226104  3316 ?        S    17:26   0:00 /usr/sbin/httpd -DFOREGROUND
root      13085  0.0  0.0 112704   972 pts/2    S+   17:28   0:00 grep --color=auto -E httpd

# 杀死http服务中的某个进程(杀死root用户可将所有进程杀死)
[root@localhost ~]# kill -9 12865

[root@localhost conf]# ps -aux | grep -E "httpd"

root      13180  0.0  0.0 112704   968 pts/2    S+   17:30   0:00 grep --color=auto -E httpd

# 杀死所有http服务进程
[root@localhost ~]# killall -9 httpd

2. 作业和进程


  • 区别:进程是一个程序在一个数据集上的一次执行,而作业是用户提交给系统的一个任务。
  • 关系:一个作业通常包括几个进程,几个进程共同完成一个任务,即作业。
  • 用户提交作业以后,当作业被调度,系统会为作业创建进程,一个进程无法完成时,系统会为这个进程创建子进程。

前台作业: 通过终端启动,且启动后一直占据终端(glances, dstat等)
后台作业: 可以通过终端启动,但启动后转入后台运行
如何让作业运行于后台?
(1)运行中的作业: Ctrl + z
(2)尚未启动的作业: # COMMAND &
Note: 此类作业虽然被送往后台运行,但其依然与终端相关,如果希望送往后台后,剥离与终端的关系,使用如下命令:# nohup COMMAND &

命令说明
Ctrl + z运行中的作业置于后台
command &将尚未启动的作业置于后台
nohup command &剥离作业与终端的关系
jobs查看所有作业
fg [[%]JOB_NUM]把指定的作业调回前台
bg [[%]JOB_NUM]让送往后台的作业继续执行
kill [%IOB_NUM]终止指定的作业

3. 进程优先级调整

静态优先级:100-139
进程默认启动时的nice值为0, 优先级为120;

nice 命令:
nice [OPTION] [COMMAND [AGV]...]
renice命令:
renice [-n] priority pid ...
查看:
ps axo pid, ni, comm...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值