美文网首页
Linux的作业控制

Linux的作业控制

作者: ghbsunny | 来源:发表于2017-08-26 19:36 被阅读0次

    1 概述

    linux的作业有两个方式,一个是工作于前台,一个是工作于后台

    前台作业:通过终端启动,且启动后一直占据终端;

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

    2 让作业运行于后台

    (1) 运行中的作业:Ctrl+z,程序被放到后台,但是不执行,状态是stop

    (2) 尚未启动的作业:COMMAND & 直接将程序放到后台运行

    以上两个方式 后台作业虽然被送往后台运行,但其依然与终端相关;退出终端,将关闭后台作业。

    如果希望送往后台后,剥离与终端的关系,要使用以下两个方式运行语句

    方法一

    nohup COMMAND &>/dev/null  &

    方法二

    先执行screen

    screen;

    然后在screen的窗口下执行命令。不要在这个screen窗口中执行终止命令的操作

    COMMAND;

    关闭该screen窗口或者直接退出终端,后台这个命令还是会执行。

    建议用screen的下运行命令,不需要看到命令的输出,且还需要在该screen窗口下操作

    建议输入命令 COMMAND &>/dev/null &   这样命令直接在后台运行,不干扰当前screen操作

    这种方式也可以同时在该screen下输入多个后台运行的命令

    用screen执行命令,会使得命令在后台执行,即使断网了,后台还是能执行命令,当终端断网是,screen的进程会独立出来,所以命令会继续运行

    注意

    在6上后台执行的命令&,终端网络断开,命令还是会继续执行

    在7上后台执行的命令&,终端网络断开,命令不会继续执行,建议用screen或者用调用nohup的方式执行

    3 作业控制

    3.1 查看作业

    查看当前终端所有作业,执行命令 jobs

    如果已经关闭终端,但是要查看命令的PID,可以用以下命令进程查看

    ps -ef | grep CMD

    3.2 作业控制

    3.2.1 fg

    fg[[%]JOB_NUM]:把指定的后台作业调回前台

    先用job查看后台是否有进程,假设后台有一个进程id 2,不管是running 还是stop只要用

    fg 2,就会调到前台来运行,但是,到前台运行后,按ctrl+c 就会停止进程

    3.2.2 bg

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

    假设终端前台本来有一个指令在运行,此时被按下ctrl+z,则该指令会被放到后台,但是此时状态是stopped

    通过命令bg 1会再次将指令放到后台运行,此时ctrl-c已经不能停止命令,如果是普通窗口下运行命令,

    则关闭终端就会使得该后台命令停止运行

    但是,如果是在screen下运行bg,则必须通过kill 杀掉对应进程的id来停止命令

    3.2.3 kill

    kill [%JOB_NUM]:终止指定的作业

    kill 信号 PID

    如 kill -9 1028 杀掉进程号为1028的进程

    相关文章

      网友评论

          本文标题:Linux的作业控制

          本文链接:https://www.haomeiwen.com/subject/fwdvdxtx.html