web-dev-qa-db-ja.com

出力なしで現在のディレクトリでプロセスを実行し、それを否認するワンライナー?

私はかなり単純なことをしようとしています:

$ ( cd /opt/myprogram && ./myprocess.sh >/dev/null 2>&1 & ; disown $! )
-bash: syntax error near unexpected token `;'

サブシェルで、特定のフォルダーから特定のスクリプトを実行し、出力をnullにしてバックグラウンドに送信するために、ワンライナーを無効にするにはどうすればよいですか?

3
Naftuli Kay

問題は、&;の両方を一緒に使用していることです。これらは両方ともコマンドターミネータであり、同時に使用することはできません。修正された例は次のとおりです。

( cd /opt/myprogram && ./myprocess.sh >/dev/null 2>&1 & disown )
11
jordanm

Nohup ユーティリティはあなたが探しているもののほとんどのために設計されました:

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'.
1
tylerl