如果我关闭Firefox窗口或者以某种方式停止此脚本,我怎么能管理这里作为后台进程调用的morbo-server会自动关闭/终止?
#!/bin/bash
morbo Mojolicious_Lite.pl &
firefox -new-window http://localhost:3000/
答案 0 :(得分:7)
好的,让我们来解决这个问题。
#!/bin/bash
morbo Mojolicious_Lite.pl & P=$!
trap "kill $P" INT # maybe you want EXIT here too?
firefox -new-window http://localhost:3000/
wait
这个应该可以工作......当firefox退出shell时会等待剩余的工作(morbo)然后可以被Ctrl-C中断 - 在这种情况下陷阱会杀死它们。
您可以使用
直观地测试它(即查看执行的内容)bash -x run.sh
假设您的脚本名为run.sh;)
答案 1 :(得分:1)
$_
变量是您上次后台作业的PID。用它来杀死你的进程。要捕获错误/信号,请使用trap
(man bash有一个例子)。
答案 2 :(得分:1)
在bash中,$ _是上一个命令的最后一个参数。要杀死后台作业,您必须使用作业号(或PID)。使用工作号码的示例:
[15:29:29 ~]$ gvim &
[2] 28509
[15:29:31 ~]$ kill %2
[15:29:39 ~]$
[2]+ Terminated gvim
[15:29:42 ~]$
[2]是作业编号,在启动后台进程时会显示。