44

ここでは Linux 初心者です。

2 つのコマンド ライン入力を受け取る perl スクリプトがあります。バックグラウンドで実行しようとしましたが、これが得られたものです:

[~user]$ nohup sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
[2] 19603
[~user]$ nohup: appending output to `nohup.out'

システムが「nohup: appending output to `nohup.out'」を返した後、新しいプロンプトは表示されません。次に、他のコマンドを入力している限り、シェルはプロセスが停止したことを通知します。

[~user]$ nohup sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
[2] 19603
[~user]$ nohup: appending output to `nohup.out'
ls
ascii_loader_script.pl  format_wrds_trd.txt  nohup.out  norm_wrds_trd.cfg
[2]+  Stopped                 nohup sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv

この投稿を見て、コマンドを実行する前に「sudo date」を実行しようとしました。それでも同じものが得られました。 http://www.sudo.ws/pipermail/sudo-users/2003-July/001648.html

4

10 に答える 10

53

解決策は、sudo に -b フラグを使用してコマンドをバックグラウンドで実行することです。

$ sudo -b ./ascii_loader_script.pl 20070502 ctm_20070502.csv

現在の端末セッションを閉じた後もプログラムを続行したい場合にのみ nohup を使用してください。

于 2013-11-13T22:34:26.203 に答える
23

ここでの問題は、私見ですが、nohup ではなく、バックグラウンド処理の sudo です。

プロセスをバックグラウンド (コマンドの最後に &) に配置していますが、おそらく sudo にはパスワード認証が必要なため、プロセスが停止します。

次のいずれかを試してください。

1) コマンドの末尾からアンパサンドを削除し、passord プロンプトに応答し、あとがきでバックグラウンドに置きます (CTRL-Z を入力すると、プロセスが停止し、bg コマンドを発行してバックグラウンドに送信されます)。

2) /etc/sudoers を次の行を含めて、ユーザーのパスワードを要求しないように変更します: myusername ALL=(ALL) NOPASSWD: ALL

アプリケーションがパスワード応答以外の入力を待機する場合は、次のように入力をコマンドにパイプできます: $ cat response.txt|sudo mycommand.php

h番目

于 2013-07-04T18:13:27.367 に答える
5

最初に sudo を使用し、次に nohup を使用する必要があります。

sudo nohup ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
于 2015-03-17T12:53:54.100 に答える
1

これはうまくいくはずです

sudo -b -u userName ./myScript > logFile

./myScript がバックグラウンドで正常に実行された後、この logFile を電子メールとして送信できることを理解したいと思っています。

于 2014-11-21T09:32:15.140 に答える
1

まず、 と を切り替える必要がsudoありnohupます。その後:

if sudo echo Starting ...
then
    sudo nohup <yourProcess> &
fi

echo Starting ...、あまり機能しない任意のコマンドに置き換えることができます。のダミーコマンドとしてのみ使用しsudoます。

これによりsudo、if 条件でパスワード チェックがトリガーされます。OK の場合、sudoセッションはログインされ、2 番目の呼び出しは成功します。それ以外の場合ifは失敗し、実際のコマンドは実行されません。

于 2015-02-16T13:56:32.073 に答える
1

You can set it as your alias:

sudo sh -c 'nohup openvpn /etc/openvpn/client.ovpn 2>&1 > /dev/null &'
于 2016-11-18T01:58:01.293 に答える
0

試す:

xterm -e "sudo -b nohup php -S localhost:80 -t /media/malcolm/Workspace/sites &>/dev/null"

xterm を閉じると、PHPWeb サーバーはまだ有効です。前に
置かないでください。そうしないと、 xterm を閉じた後に Web サーバーが強制終了されます。nohupsudoPHP

于 2014-04-03T01:56:54.157 に答える