执行命令然后在一段时间后杀死命令的最佳方法是什么?这就是我所拥有的;它完成了这项工作,但我得到了amp: command not found
虽然我不知道放大器为什么会放在那里,但我知道如果没有它,杀戮就行不通。
feh "$output""$ext" &
echo $!
sleep 1
kill -s 9 $!
exit 1
问题是我不知道我正在执行的进程的PID。我可以在执行时指定一个吗?
答案 0 :(得分:7)
GNU timeout是最近版本的coreutils的一部分,完全符合您的要求。
timeout 1 feh "$output""$ext"
运行feh
一秒钟,然后杀死它,如果它还没有结束。
本评论的其余部分涉及您当前的食谱:
您当前使用的食谱使用feh
将&
放入后台。 amp;
之后的错误,可能来自一些过于热心的HTML编码器(&
是您在HTML中拼写&
的方式。)
启动时内核会为每个进程分配一个PID。 $!
是最近后台进程的pid的shell变量。
答案 1 :(得分:4)
你不想要“& amp;”你只想要“&”。 &符告诉bash在后台运行该过程。
$!设置为后台进程的pid,否则你的样本应该做你想要的。
答案 2 :(得分:4)
feh "$output""$ext" &
FEHPID=$!
sleep 1
kill -s 9 $FEHPID
exit 1