kill命令:向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开 头(可省略),不区分大小写
显示当前系统可用信号: kill –l 或者 trap -l
常用信号:man 7 signal
- 1) SIGHUP 无须关闭进程而让其重读配置文件
- 2) SIGINT 中止正在运行的进程;相当于Ctrl+c
- 3) SIGQUIT 相当于ctrl+
- 9) SIGKILL 强制杀死正在运行的进程
- 15) SIGTERM 终止正在运行的进程
- 18) SIGCONT 继续运行
- 19) SIGSTOP 后台休眠
指定信号的方法 :
- (1) 信号的数字标识:1, 2, 9
- (2) 信号完整名称:SIGHUP
- (3) 信号的简写名称:HUP
killall cmd //杀掉cmd全部进程
按模式:pkill [options] pattern
- -SIGNAL
- -u uid: effective user,生效者
- -U uid: real user,真正发起运行命令者
- -t terminal: 与指定终端相关的进程
- -l: 显示进程名(pgrep可用)
- -a: 显示完整格式的进程名(pgrep可用)
- -P pid: 显示指定进程的子进程
0 信号用来检查一个进程是否正常,通过$?变量判断不正常 则启动
Linux的作业控制
- 前台作业:通过终端启动,且启动后一直占据终端
- 后台作业:可通过终端启动,但启动后即转入后台运行(释放终端),他在后台运行,你不受影响,变相的同时运行多个任务
让作业运行于后台
- (1) 运行中的作业: Ctrl+z
- (2) 尚未启动的作业: COMMAND &
下图为 各种作业模式的切换方式
查看当前终端所有作业:jobs
作业控制: fg [[%]JOB_NUM]:把指定的后台作业调回前台
bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行
kill [%JOB_NUM]: 终止指定的作业 相当于19信号?回来证实一下
并行执行,
有些场景下需要运行多个进程,提高效率,比如ping,一般执行,会等包,那我想ping多个包难道也要?效率会很慢,
比如 我ping三个主机三个包,顺序执行我需要9秒,而并行执行只需要三秒
同时运行多个进程,提高效率
方法1
vi all.sh
f1.sh&
f2.sh&
f3.sh&
方法2 (f1.sh&);(f2.sh&);(f3.sh&)
方法3 { f1.sh& f2.sh& f3.sh& }