Linuxの初心者はこちら。
2つのコマンドライン入力を受け取るPerlスクリプトがあります。バックグラウンドで実行しようとしましたが、これは私が得たものです:
[~user]$ Nohup Sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
[2] 19603
[~user]$ Nohup: appending output to `Nohup.out'
システムが「Nohup: `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
ここでの問題、imhoはNohupではなく、Sudoのバックグラウンド処理です。
プロセスをバックグラウンド(コマンドの最後に&)で配置していますが、おそらくSudoにはパスワード認証が必要であるため、プロセスが停止します。
次のいずれかを試してください。
1)コマンドの最後からアンパサンドを削除し、passordプロンプトに返信し、あとがきでそれをバックグラウンドにします(CTRL-Zを入力してプロセスを停止し、bgコマンドを発行してバックグラウンドに送信します)
2)myetcname ALL =(ALL)NOPASSWD:ALLという行を含めて、ユーザーのパスワードを要求しないように/ etc/sudoersを変更します
パスワード応答のほかに、アプリケーションが他の入力を待機している場合は、次のように入力をコマンドにパイプできます。$ cat response.txt | Sudo mycommand.php
hth
解決策は、Sudoの-bフラグを使用して、コマンドをバックグラウンドで実行することです。
$ Sudo -b ./ascii_loader_script.pl 20070502 ctm_20070502.csv
Nohupは、現在のターミナルセッションを閉じた後でもプログラムを続行したい場合にのみ使用してください。
最初にSudoを使用し、次にNohupを使用する必要があります。
Sudo Nohup ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
エディターを開き、次の行を入力しました。
#!/bin/bash
Sudo echo Starting ...
Sudo -b MyProcess
(ここでMyProcessはスーパーユーザーとして実行したいものです。)
次に、ファイルをMyShellScript.shとして保存します。
次に、ファイル許可を変更して実行を許可します。次に、ターミナルで実行します。 「-b」オプションは、プロセスをバックグラウンドで個別に実行するようにSudoに指示するため、端末セッションが終了した後もプロセスは実行され続けます。
Linux-mintで働いていました。
まず、Sudo
とNohup
を切り替える必要があります。その後:
if Sudo echo Starting ...
then
Sudo Nohup <yourProcess> &
fi
echo Starting ...
は、あまり機能しないコマンドで置き換えることができます。 Sudo
のダミーコマンドとしてのみ使用します。
これにより、if-conditionのSudo
がパスワードチェックをトリガーします。正常であれば、Sudo
セッションがログインされ、2番目の呼び出しが成功します。そうでなければ、if
は失敗し、実際のコマンドを実行しません。
これは動作するはずです
Sudo -b -u userName ./myScript > logFile
./myScriptがバックグラウンドで正常に実行された後、このlogFileを電子メールとして送信できることを理解したいだけです。
エイリアスとして設定できます:
Sudo sh -c 'Nohup openvpn /etc/openvpn/client.ovpn 2>&1 > /dev/null &'
あなたが試すことができます
Sudo su
am#nd then
Nohup ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
instead of
Nohup Sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
試してください:
xterm -e "Sudo -b Nohup php -S localhost:80 -t /media/malcolm/Workspace/sites &>/dev/null"
Xtermを閉じても、PHP
Webサーバーは生きています。Nohup
の前にSudo
を置かないでください。そうしないと、xtermを閉じた後にPHP
Webサーバーが強制終了されます。