进程作业管理2-kill,前后台作业,并行执行

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& } 

要有多努力才能对得起奔波的脚步和身上的期望
原文地址:https://www.cnblogs.com/hxfcodelife/p/11976338.html