Linux进程与作业管理

时间:2023-02-14 21:53:19
  1. 作业控制

    • 放入后台

      nohup command & 将命令放入后台执行,即使用户退出登录仍然运行。注意:nohup不支持bash 内置的指令;
    • 显示作业信息

      jobs -l 显示后台所有作业
      jobs -r  仅显示后台正在运行的作业
      jobs -s 仅显示后台已经暂停的作业
      结果中[]中的数字代表作业号,加号代表此作业是最后一个被放入后台运行的作业,减号代表倒数第二个被放入后台运行的作业 补充:后台运行的作业只有Running和Stopped两种状态,使用Ctrl+z放入后天运行的作业,默认都是Stopped状态
    • 控制后台作业

      bg %jobnumber   在后台运行后台中停止的作业
      fg %jobnumber 将后台中的作业放入前台运行,使用作业号指定具体的作业。如果不指定作业号则默认将最后放入后台的作业放入前台运行,还可以使用减号代表倒数第二个放入后台的作业。
      
      注意:bash 只能管理用户自己的作业而不能管理其他用户的作业,即使是root也不能将别人的bash下面的job拿来运行
    • 控制命令的优先级

      nice -n command 以优先级n启动一个命令,n越小优先级越高,n越大优先级越低,优先级高的命令会被频繁调度,命令默认优先级为0,最高为-20,最低为19pstop命令的输出中NI代表命令优先级
      
      renice -n pid 改变正在运行的进程的优先级
    • 定时执行某个命令

      watch -n  num  commandnum秒运行一次command命令
      
      eg
      watch -n 1 go run 2.go
  2. 进程与作业管理

    • kill

      kill -信号数字或信号名 进程号或%jobnumber    (信号名可以省略sig,信号名不区分大小写)
      
      选项
      -l :显示可以使用的信号 -2 :中断(interrupt)进程或作业,相当于Ctrl+c -9 :强制杀死作业或进程 -15:终止(terminated)作业或进程,与-2选项基本等价,kill默认使用的此信号 -20:相当于Ctrl+z,将前台的进程或作业放入后台,处于Stopped状态 -1 :重新读取配置文件,比如系统服务或守护进程 
      注意:root用户可以kill任何进程,普通用户只能kill自己启动的进程
    • kilall

      killall 选项  进程名
      
      选项
      -l:打印所有已知信号列表 -e:对长名称(超过15个字符)进行精确匹配 -I:忽略大小写 -g:杀死进程所属的进程组 -i:交互式杀死进程,杀死进程前需要进行确认 -q:如果没有进程被杀死,则不输出任何信息 -r:使用正规表达式匹配进程 -s:根据指定的信号名控制进程或作业 -u:杀死指定用户的进程。 
      eg
      kill -l
      kill -2 %1 终止作业1,相当于kill -s SIGINT %1
      ps -elf|grep httpd|awk '{print $4}'|xargs kill -2 终止nginx的所有进程