我正在尝试做一些相当简单的事情:
$ ( cd /opt/myprogram && ./myprocess.sh >/dev/null 2>&1 & ; disown $! )
-bash: syntax error near unexpected token `;'
如何在子 shell 中执行一行代码,从给定文件夹执行给定脚本,清空输出并将其发送到后台?
答案1
问题是你同时使用了&
和;
。它们都是命令终止符,不能同时使用。这是您修复的示例:
( cd /opt/myprogram && ./myprocess.sh >/dev/null 2>&1 & disown )
答案2
这诺哈普实用程序几乎是为您正在寻找的东西而设计的:
Usage: nohup COMMAND [ARG]...
or: nohup OPTION
Run COMMAND, ignoring hangup signals.
If standard input is a terminal, redirect it from /dev/null.
If standard output is a terminal, append output to 'nohup.out' if possible,
'$HOME/nohup.out' otherwise.
If standard error is a terminal, redirect it to standard output.
To save output to FILE, use 'nohup COMMAND > FILE'.