Bash 当另一个命令正在运行时,如何在一段时间后运行一个命令?

Bash 当另一个命令正在运行时,如何在一段时间后运行一个命令?,bash,Bash,我有一个bash脚本,它将运行一个主命令,比方说一个小时。由于主命令已经启动(在t_x),我想在一段时间后执行另一个命令。大概是这样的: mpirun main_command & sleep 1m && second_command 主要开始------->主要结束 | | 在时间t_x,执行第二个命令 目前我有这样的想法: mpirun main_command & sleep 1m && second_command 问题是在执行第二个命

我有一个bash脚本,它将运行一个主命令,比方说一个小时。由于主命令已经启动(在t_x),我想在一段时间后执行另一个命令。大概是这样的:

mpirun main_command & sleep 1m && second_command
主要开始------->主要结束 | | 在时间t_x,执行第二个命令

目前我有这样的想法:

mpirun main_command & sleep 1m && second_command

问题是在执行第二个命令后,主命令被终止。有人能帮我吗?谢谢

第一个命令无法锁定控制台,因为另一个进程也在使用它。您将需要重定向标准io管道,
0/dev/null 2>/dev/null
如果仍然不起作用,请使用
shell-c'mpirun main_命令'&sleep;第二个命令
您可以使用
而不是
&&
,除非当有人中断睡眠时,您需要一个失败的退出代码。

您可以尝试以下方法:
(睡眠80&);ls;睡眠5;ps
。您可以使用其他命令代替“sleep”、“ls”和“ps”。至少我不清楚实际问题是什么。@MarkSetchell:main命令的输出有缺陷(当main命令完成时);所以我想在主命令完成之前复制它的输出;我知道我应该在什么时候复印;但是我不想手动操作,而是想将其原子化。sleep的问题是它在主命令实际完成之前就杀死了它。
sleep
杀死了什么东西?我不确定;但在睡眠和第二个命令完成后,主命令被杀死。。。