我想要延迟后台执行,对于我sleep [anyseconds] && [execution]
使用的后台延迟nohup
单独的简单例子nohup
:
nohup date &>> out.log &
当然,您可以找到date
in执行的打印结果out.log
。
但我想延迟执行,比如15秒,所以有点组合:
nohup sleep 15 && date &>> out.log &
这次它无法正常工作,sleep 15
被执行,而date
并不总是如此 - 如果您关闭终端,它不会在&&
.
出什么问题了nohup
?它屈服于&&
??
我假设你在 bash 中,其中nohup
有系统命令(coreutils)。
在 bash 中&&
标记命令行的结束。在您的情况下,nohup
仅从 shell 获取参数sleep 15
。剩下的就是 shell 的下一个命令。
由于nohup
它不是 shell,因此不能使用括号将参数“扩展”为nohup
,因为nohup
无法解释它并且不知道如何处理它。
一种解决方案是创建一个脚本(例如sleepdate
),其中包含sleep 15 && date
并将其用作参数nohup
:
nohup ./sleepdate &>> out.log &
Run Code Online (Sandbox Code Playgroud)
或使用 bash (可以解释&&
)作为参数nohup
nohup bash -c 'sleep 15 && date' &>> out.log &
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2578 次 |
最近记录: |