Shell jobs 任务管理

作者: 字母数字或汉字 | 来源:发表于2016-11-20 02:39 被阅读137次

    在一个 tty 里,我们可以运行多个任务,并切换激活不同的任务到前台。注意,任务管理仅限于同一个 tty 执行的任务。

    状态

    • Running 运行中
    • Stopped 已暂停
    • Done 执行完毕

    <command> &

    在一个命令后添加 & 即可简单的放入后台运行。

    通过 & 放置到后台的命令,仍保持 Running 状态,默认的标准输出和标准错误输出仍为终端,也就是说你仍然会看到它打印出的信息,这应该通过重定向来解决。如果输出的内容不需要,可以简单的重定向到 /dev/null

    当 tty 断开连接时,任务会收到 SIGHUP 信号而被杀死,如果需要持续运行,则需使用 nohup 命令将其放置到系统后台,而非当前 tty 的后台,如:

    $ nohup php job.php 2>&1 &
    

    这将放入系统后台运行 php job.php,并将 stderr 重定向到 stdout。

    CTRL+Z

    这将暂停当前任务,成为 Stopped 状态,并放入任务列表。

    jobs

    显示所有当前任务,如:

    $ jobs
    [1]+ Stopped vim
    [2]- Running php job.php 2>&1 &
    

    fg

    通过 fg [%n] 来激活任务到前台,如果省略 %n 参数,则默认激活标记为 + 的任务,且标记为 - 的任务将被标记为 +

    bg

    通过 bg [%n] 来运行 Stopped 状态的后台任务,任务将继续运行,状态变为 Running,且命令后增添了 & 字样。

    当你忘记将任务放入后台运行,即可组合使用 CTRL+Zbg 来弥补它。

    kill

    通过 kill –signal %n 来快捷地杀死后台任务。

    signal 常见的有:

    • 1 SIGHUP 终端断开连接
    • 2 SIGINT 中断(CTRL+C
    • 3 SIGQUIT 退出(CTRL+\\
    • 9 SIGKILL 强行终止
    • 15 SIGTERM 终止
    • 18 SIGCONT 继续(fgbg
    • 19 SIGSTOP 暂停(CTRL+Z

    相关文章

      网友评论

        本文标题:Shell jobs 任务管理

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