1. ホーム
  2. linux

[解決済み] sudoとnohupを連動させる

2022-02-15 14:06:55

質問

Linux初心者です。

私は、2つのコマンドライン入力を受け取るperlスクリプトを持っています。私はそれをバックグラウンドで実行しようとしましたが、これは私が得たものです。

[~user]$ nohup sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
[2] 19603
[~user]$ 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

解決方法は?

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

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

これらのいずれかを試してみてください。

1) コマンドの末尾のアンパサンドを削除し、passord プロンプトに返信した後、バックグラウンドにする (CTRL-Z - とタイプしてプロセスを停止し、bg コマンドを発行してバックグラウンドにする)。

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

パスワードの返答以外に、アプリケーションが他の入力を待っている場合、次のようにコマンドに入力をパイプすることができます。 $ cat responses.txt|sudo mycommand.php

hth