我有一系列“命令”(实际上是对bash shell函数的调用)来计算一些统计信息。每个命令通常与其他命令无关,有些命令可能比有时需要更多时间。
到目前为止,我有一个调用这些命令的bash脚本,一个接一个。如果某个命令花费太多时间,并且我按c + C它,整个脚本就会死掉(正如预期的那样)。
我发现如果我在括号内调用它们(它们会分配shell),比如( command1 ) ; ( command2 )
,并且在命令1运行时我按c + + C,那么command2将在没有问题的情况下运行。
以上适用,我在终端直接试用。但是,如果我在脚本中执行此操作,则无效。我想ctrl + C会转到整个脚本,并终止它。
有什么方法可以帮助我想要的东西吗? bash shell的用法并不是那么严格,所以我很高兴在python中说一个解决方案,例如bash中的一个是首选。
编辑:我希望能够以某种方式“取消”一些命令,其余的后续执行(一次一个)没有问题。不要并行运行命令。
答案 0 :(得分:3)
如果您只是捕获SIGINT,您想要的是什么。例如:
#!/bin/sh trap : 2 cmd1 cmd2 cmd3
当你点击^ C时,它会将SIGINT发送到shell脚本和当前正在运行的进程(cmd1,cmd2。或cmd3)。 cmd将会死掉,shell脚本将启动下一个cmd。
答案 1 :(得分:1)