为了账号安全,请及时绑定邮箱和手机立即绑定

命令行命令可在一定时间后自动终止命令

命令行命令可在一定时间后自动终止命令

凤凰求蛊 2019-09-21 14:00:00
我想在一段时间后自动终止命令。我想到了这样的界面:% constrain 300 ./foo args它将与“ args”一起运行“ ./foo”,但如果它在5分钟后仍在运行,则会自动将其杀死。将想法推广到其他约束可能很有用,例如,如果进程使用过多的内存,则自动杀死该进程。是否有现有的工具可以做到这一点,或者有人编写过这样的东西?补充:乔纳森(Jonathan)的解决方案正是我所想到的,它在Linux上像魅惑一样工作,但是我无法在Mac OSX上使用它。我摆脱了SIGRTMIN,它可以很好地进行编译,但是信号只是不会发送到子进程。有人知道如何在Mac上执行此操作吗?[添加:请注意,乔纳森(Jonathan)提供了可在Mac和其他地方使用的更新。
查看完整描述

3 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

也许我不明白这个问题,但这听起来直接可行,至少在bash中是这样:


( /path/to/slow command with options ) & sleep 5 ; kill $!

这将在括号内运行第一个命令五秒钟,然后将其杀死。整个操作是同步运行的,即,在忙于等待缓慢的命令时,您将无法使用您的shell。如果那不是您想要的,应该可以添加另一个&。


该$!变量是Bash内置变量,包含最近启动的子Shell的进程ID。重要的是不要在括号内包含&,否则将丢失进程ID。


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 761 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信