リダイレクトを使用してシェルコマンドを完全に分岐する方法

リダイレクトを使用してシェルコマンドを完全に分岐する方法

私は何年もかなり多くのシェルスクリプトを書いていますが(確かにシステム管理者ではありません)、常に問題を引き起こすいくつかのことがあります。停止に影響されないシェルコマンドをバックグラウンドで生成するにはどうすればよいですか? ?吹くスクリプト?

たとえば、次のような場合:

command_which_takes_time input > output

どのように「nohup」してフォークできますか?

以下は私が望む効果を出さないようです。

nohup command_which_takes_time input > output &

私が探している構文は何ですか、私が理解していないものは何ですか?

ベストアンサー1

あなたはそれを試す必要がありますsetsid(1)。次のように使用してくださいnohup

setsid command_which_takes_time input > output

これは(manページに従って)親プロセスの、をsetsid(2)実行fork(2)し、子プロセス_exit(2)呼び出しがsetsid(2)新しいプロセスグループ(セッション)を作成します。

ログアウトしても殺すことはできず、Bashジョブ制御機能の一部でもありません。すべての意図と目的に適したデーモンです。

おすすめ記事