Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 串行运行多个命令,并确保所有命令都运行_Linux_Shell_Unix - Fatal编程技术网

Linux 串行运行多个命令,并确保所有命令都运行

Linux 串行运行多个命令,并确保所有命令都运行,linux,shell,unix,Linux,Shell,Unix,我想一个接一个地运行一系列unix命令。如果这些命令中的任何一个因任何原因而死亡,则后续命令应继续运行 例如,我有3个命令,分别称为“setup”、“long running job”和“teardown”。如果“长时间运行的作业”以任何退出代码结束,或者意外死亡,我想确保“拆卸”在任何情况下都能运行 简单地用分号连接所有命令似乎不起作用。我试着运行touch test.txt;pinglocalhost;在macOS终端中的rm test.txt,在运行时关闭了终端选项卡,发现“test.te

我想一个接一个地运行一系列unix命令。如果这些命令中的任何一个因任何原因而死亡,则后续命令应继续运行

例如,我有3个命令,分别称为“setup”、“long running job”和“teardown”。如果“长时间运行的作业”以任何退出代码结束,或者意外死亡,我想确保“拆卸”在任何情况下都能运行

简单地用分号连接所有命令似乎不起作用。我试着运行
touch test.txt;pinglocalhost;在macOS终端中的rm test.txt
,在运行时关闭了终端选项卡,发现“test.text”没有被删除。

您尝试过吗?似乎是满足您需求的理想工具

$> parallel ::: setup long-running-job teardown

Parallel提供了大量选项来控制暂停、失败、跳转、重试等。有关示例,请参阅手册和教程

如果要确保即使交互式窗口关闭,命令仍能继续执行,并且所有命令都按指定的顺序依次执行,请使用此答案中的方法:

基本上是针对你问题中的命令行

nohup sh -c 'touch test.txt; ping localhost; rm test.txt'

这意味着通过关闭终端发送的挂起信号将被忽略。

关闭终端与命令无法运行不同。如果你想在你不在的时候运行一些东西,你可以把它们放在后台。当然最好把它放在脚本中,但是你可能可以做
trap'rm test.txt'0;ping localhost
(假设bash:对于其他shell,您可能需要更具体地了解您想要捕获的信号)。嗯?OP特别希望命令连续运行。任何阅读@triplee comment的人都可能犯同样的错误。您需要查看手册,以确定哪些要手动运行,哪些要连续运行。你可以控制每项工作和你想要的并行度。如果你能编辑你的答案来澄清这一点,我将能够收回我的否决票。提前谢谢你,我也很抱歉这么做。如果光是这一点就足以提高阅读理解力的话,我会这么做的。