前言
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:
实例:
- [ ~]# 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
- [ ~]# kill -1 56893 #让httpd重读其配置文件
2.killall 命令
按命令名字发送信号。
格式:
- killall [-SIGNAL] COMMAND
实例:
- [ ~]# killall -15 httpd
- [ ~]# ps aux|grep httpd
- root 61513 0.0 0.0 112644 952 pts/0 R+ 21:55 0:00 grep --color=auto httpd
- [ ~]#
3.pkill 命令
pkill 和 killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用 kill 来杀掉。
格式:
- pkill [options] pattern
常用选项:
- -SIGNAL
- -u uid: effective user,生效者
- -U uid: real user,真正发起运行命令者
- -t terminal: 与指定终端相关的进程
- -P pid: 显示父进程为此处指定的进程的进程列表
实例:
- [ ~]# pkill httpd
- [ ~]# pkill -U apache
1. 系统 job 作业
(1)job 种类:
(2) 让作业运行于后台
1) 运行中的作业:
- Ctrl+z
送往后台后,作业会转为停止态;相当于发送
信号
- kill -19
2) 尚未启动的作业:
- # COMMAND &
此类作业虽然被送往后台,但其依然与终端相关;如果希望把送往后台的作业剥离与终端的关系:
- # nohup COMMAND &
实例:
- [ ~]# nohup yes &
- [1] 8444
- [ ~]# nohup: ignoring input and appending output to `nohup.out'
(3) 查看所有的作业:
命令
- #jobs
实例:
- [ ~]# jobs -l # -l选项显示进程PID
- [1]+ 23602 Running nohup yes &
+/- 表示优先级;当调用时不加作业号会默认调用 + 的命令
- [ ~]# jobs -l
- [1] 79973 Running sleep 100 &
- [2] 80066 Running sleep 200 &
- [3]- 80255 Running sleep 300 &
- [4]+ 80414 Running sleep 400 &
- [ ~]# fg
- sleep 400
(4) 可实现作业控制的常用命令:
- #fg [[%]JOB_NUM]:把指定的作业调回前台;
- #bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行;
- #kill %JOB_NUM:终止指定的作业;
实例:
- [ ~]# sleep 100 &
- [1] 72535
- [ ~]# fg 1
- sleep 100
- ^Z #crtl+z放到后台挂起
- [1]+ Stopped sleep 100
- [ ~]# jobs -l
- [1]+ 72535 Stopped sleep 100
- [ ~]# bg %1
- [1]+ sleep 100 &
- [ ~]# jobs
- [1]+ Running sleep 100 &
- [ ~]# kill %1
- [ ~]# 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 调整范围: -20, 19
注:值越低优先级越高
(1) 以指定的 nice 值启动一个进程:
- nice -n # COMMAND
实例:
- [ ~]# nice -n -16 top&
- [ ~]# ps axo ni,comm|grep top
- -16 top
(2) 调整运行中的进程的 nice 值:
- renice -n # PID
实例:
- [ ~]# renice -n 10 89822
- 89822 (process ID) old priority -16, new priority 10
- [ ~]# ps axo ni,comm|grep top
- 10 top
注意:普通用户仅有权限调大 nice 值;
来源: http://www.bubuko.com/infodetail-1947795.html