我正在尝试执行x秒的命令然后在之后停止它。我想通常你会用timeout
命令执行此操作,但是这个程序似乎在我的机器上不可用,所以我仍然试图让它以不同的方式工作。
这是我尝试过的命令之一:
./some_program & sleep 5; kill `pidof some_program`
通常当我使用ctrl + c手动中断some_program
时,它会生成结果的csv文件,但上面的命令似乎只是停止它,并且没有创建的csv文件。如果我使用kill -9
,它将终止程序,但同样,不会生成任何csv文件。
如何在x秒后自动停止程序并仍然使其生成csv文件? (我已尝试kill -2
,kill -3
和kill -15
。)
答案 0 :(得分:0)
要获得与 C-c 相同的效果(假设程序不会更改tty设置以非标准方式处理它),您需要发送SIGINT
。此外,避免运行pidof
- 当您使用kill时,bash会为您提供%+
的最后一个后台作业。
你应该能够
./some_program & sleep 5; kill -INT %+
示范
$ time bash -c 'sleep 15 & sleep 3; kill -INT %+'
real 0m3.005s
user 0m0.001s
sys 0m0.004s