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

时间:2016-08-26 04:35:37

标签: linux shell unix

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

例如,我有3个命令叫做“setup”,“long-running-job”和“teardown”。如果“long-running-job”以任何退出代码结束,或者意外死亡,我想确保“teardown”在任何情况下运行。

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

2 个答案:

答案 0 :(得分:0)

如果您想确保即使您的交互式窗口关闭,您的命令仍然继续,并且您的所有命令按照您指定的顺序依次发生,请使用此答案中的方法:https://unix.stackexchange.com/a/47231

基本上是您问题中的命令行

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

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

答案 1 :(得分:-1)

你试过GNU parallel吗?似乎是满足您需求的理想工具。

<?php

   if(try to catch submit button's post value here, to see form is submitted)
   {
      ?>
          <script>
              //do javascript tasks here
          </script>
      <?php
       //do php tasks here 

   }
?>

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