Unix分离了多个具有“&”(后台执行)的命令

在Unix中分离常规命令是将分号放在最后,如下所示:

cd /path/to/file;./someExecutable; 

但它似乎不适用于这样的命令:

 ./myProgram1 > /dev/null & ./myProgram2 > /dev/null & =>./myProgram1 > /dev/null &;./myProgram2 > /dev/null &; 

有什么办法可以分开这些命令吗?

另外,如果我复制粘贴到命令提示符下,如果是低于2的情况下是相当的? 谢谢。

 cd /path/to/file;./someExecutable; cd /path/to/file; ./someExecutable; 

那么“;” 使shell等待命令完成,然后继续下一个命令。

“&”会将任何进程直接发送到后台并继续执行下一个命令 – 无论第一个命令是完成还是仍在运行。

所以“&” 将不会像你所期望的那样工作。

但实际上我不确定你的期望。

在你的shell中试试这个:

 sleep 2 && echo 1 & echo 2 & sleep 3 && echo 3 

它会输出:2 1 3

现在比较一下

 sleep 2 ; echo 1 & echo 2 & sleep 3 ; echo 3 

这将输出1 2 3

问候。

command1 & command2将执行command1 ,将进程发送到后台,并立即开始执行command2 ,即使command1还没有完成。

command1 ; command2 command1 ; command2执行command1 ,然后在command1完成后执行command2 ,无论command1是否成功退出。

command1 && command2只会在command1成功执行完成后执行command2 。 如果command1失败, command2将不会执行。

(…也是为了完整…)

command1 || command2 如果command1失败, command1 || command2将仅执行command2 (以非零退出代码退出)。