linux作业控制,Linux信号发送与作业控制(示例代码)

前言

Linux中进程间通信又称为IPC(Inter process communication),大致上可以分为这么几类:消息队列(message queue),旗语(semerpore),共享内存(shared memory),信号(signal),Unix域套接字,socket等。

一、信号发送

signal用来向进程传递微小的信息。

显示可用信号:kill -l

man 7 signal

1.kill命令

格式:kill [-SIGNAL] PID

SIGNAL:(1) 信号的完整名称,例如SIGHUP、SIGINT、SIGKILL、SIGTERM、SIGCONT、SIGSTOP

(2) 信号简称:HUP、KILL

(3) 信号数据标识:1,2, ...

SIGHUP:1, 让进程重读配置文件中的信息,而无须重启进程;

SIGINT:2, interrupt,打断正在运行中进程;相当于Ctrl+c

SIGKILL: 9, 强行中止正在运行的进程

SIGTERM:15, 优雅关闭正在运行的进程 SIGSTOP:19, 暂停进程

SIGCONT: 18,继续暂停进程

实例:[[email protected] ~]# ps aux|grep httpd

root      56893  1.0  0.1 226128  5056 ?        Ss   21:47   0:00 /usr/sbin/httpd -DFOREGROUND

apache    56894  0.0  0.1 228212  3120 ?        S    21:47   0:00 /usr/sbin/httpd -DFOREGROUND

apache    56895  0.0  0.1 228212  3120 ?        S    21:47   0:00 /usr/sbin/httpd -DFOREGROUND

apache    56896  0.0  0.1 228212  3120 ?        S    21:47   0:00 /usr/sbin/httpd -DFOREGROUND

apache    56897  0.0  0.1 228212  3120 ?        S    21:47   0:00 /usr/sbin/httpd -DFOREGROUND

apache    56898  0.0  0.1 228212  3120 ?        S    21:47   0:00 /usr/sbin/httpd -DFOREGROUND

root      56966  0.0  0.0 112644   948 pts/0    R+   21:47   0:00 grep --color=auto httpd

[[email protected] ~]# kill -1 56893 #让httpd重读其配置文件

2.killall命令

按命令名字发送信号。

格式:killall [-SIGNAL] COMMAND

实例:[[email protected] ~]# killall -15 httpd

[[email protected] ~]# ps aux|grep httpd

root      61513  0.0  0.0 112644   952 pts/0    R+   21:55   0:00 grep --color=auto httpd

[[email protected] ~]#

3.pkill命令

pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。

格式:pkill [options] pattern

常用选项:-SIGNAL

-u uid: effective user,生效者

-U uid: real user,真正发起运行命令者

-t terminal: 与指定终端相关的进程

-P pid: 显示父进程为此处指定的进程的进程列表

实例:[[email protected] ~]# pkill httpd

[[email protected] ~]# pkill -U apache

二、Linux作业控制

1.系统job作业

(1)job种类:前台作业(foregroud):通过终端启动,且启动后会一直占据终端;

后台作业(backgroud):可以通过终端启动,但启动后即转入后台运行(释放终端);

(2)让作业运行于后台

1) 运行中的作业:Ctrl+z

送往后台后,作业会转为停止态;相当于发送kill -19信号

2) 尚未启动的作业:# COMMAND &

此类作业虽然被送往后台,但其依然与终端相关;如果希望把送往后台的作业剥离与终端的关系:# nohup COMMAND &

实例:[[email protected] ~]# nohup yes &

[1] 8444

[[email protected] ~]# nohup: ignoring input and appending output to `nohup.out‘

(3)查看所有的作业:#jobs命令

实例:[[email protected] ~]# jobs -l  # -l选项显示进程PID

[1]+ 23602 Running                 nohup yes &

+/- 表示优先级;当调用时不加作业号会默认调用+的命令[[email protected] ~]# jobs -l

[1]  79973 Running                 sleep 100 &

[2]  80066 Running                 sleep 200 &

[3]- 80255 Running                 sleep 300 &

[4]+ 80414 Running                 sleep 400 &

[[email protected] ~]# fg

sleep 400

(4)可实现作业控制的常用命令:#fg  [[%]JOB_NUM]:把指定的作业调回前台;

#bg  [[%]JOB_NUM]:让送往后台的作业在后台继续运行;

#kill  %JOB_NUM:终止指定的作业;

实例:[[email protected] ~]# sleep 100 &

[1] 72535

[[email protected] ~]# fg 1

sleep 100

^Z     #crtl+z放到后台挂起

[1]+  Stopped                 sleep 100

[[email protected] ~]# jobs -l

[1]+ 72535 Stopped                 sleep 100

[[email protected] ~]# bg %1

[1]+ sleep 100 &

[[email protected] ~]# jobs

[1]+  Running                 sleep 100 &

[[email protected] ~]# kill %1

[[email protected] ~]# jobs

[1]+  Terminated              sleep 100

小贴士:同时运行多个进程方法(提高效率)1)vi all.sh

f1.sh&

f2.sh&

f3.sh&

2)(f1.sh&);(f2.sh&);(f3.sh&)

3){ f1.sh& f2.sh& f3.sh& }

三、进程优先级调整:nice, renice

静态优先级:100-139

进程默认启动时的nice值为0,优先级为120

只有root用户才能降低nice值(提高优先性),普通用户只能提高自己的nice值(降低优先级)

一般使用者仅可调整自己程序的 Nice 值,且范围仅为 0 ~ 19 (避免一般用户抢占系统资源);

nice调整范围: -20, 19

注:值越低优先级越高

(1) 以指定的nice值启动一个进程:nice -n # COMMAND

实例:[[email protected] ~]# nice -n -16 top&

[[email protected] ~]# ps axo ni,comm|grep top

-16 top

(2) 调整运行中的进程的nice值:renice -n # PID

实例:[[email protected] ~]# renice -n 10 89822

89822 (process ID) old priority -16, new priority 10

[[email protected] ~]# ps axo ni,comm|grep top

10 top

注意:普通用户仅有权限调大nice值;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值