Shell中jobs的任务管理(代码慎入)

来源:互联网 发布:淘宝网支付宝申请 编辑:程序博客网 时间:2024/05/24 06:32
在一个 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+Z 和 bg 来弥补它。

kill

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

signal 常见的有:

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

0 0
原创粉丝点击