打开然后从bash中杀死子进程

oct*_*pus 3 bash kill parent-child

执行命令然后在一段时间后杀死命令的最佳方法是什么?这就是我所拥有的; 它完成了这项工作,但是我得到了amp: command not found,虽然我不知道为什么放大器在那里,但我知道如果没有放大器,杀戮就行不通.

feh "$output""$ext" &
echo $!
sleep 1
kill -s 9 $!
exit 1
Run Code Online (Sandbox Code Playgroud)

问题是我不知道我正在执行的进程的PID.我可以在执行时指定一个吗?

dax*_*rod 7

GNU超时是coreutils最新版本的一部分,它完全符合您的要求.

timeout 1 feh "$output""$ext"
Run Code Online (Sandbox Code Playgroud)

运行feh一秒然后杀死它,如果它还没有结束.

本评论的其余部分涉及您当前的食谱:

您当前使用的食谱feh使用&.在amp;以后这是一个错误,可能从一些过分热心的HTML编码器(&是你如何拼写&的HTML).

启动时,内核会为每个进程分配一个PID.$!是最近后台进程的pid的shell变量.

  • 据我所知,`timeout`的第一个稳定版本是在2009年推出的coreutils 7.1中. (2认同)
  • 优雅直观!非常好的答案.+1给我. (2认同)