次のコマンドを使用して、バックグラウンドでperlスクリプトを実行しました
nohup perl myPerlSCript.pl >debug_log &
数分後、私は次のようなステータスになりました
[1]+停止
私はそれが止まるとは思っていませんでしたし、何が止まったのかもわかりません。これをデバッグして、停止した理由を確認するにはどうすればよいですか?私は実際にデバッグするUNIXコマンドを知ることに興味があります。
次のコマンドを使用して、バックグラウンドでperlスクリプトを実行しました
nohup perl myPerlSCript.pl >debug_log &
数分後、私は次のようなステータスになりました
[1]+停止
私はそれが止まるとは思っていませんでしたし、何が止まったのかもわかりません。これをデバッグして、停止した理由を確認するにはどうすればよいですか?私は実際にデバッグするUNIXコマンドを知ることに興味があります。
バックグラウンドで実行中のプロセスを停止するには、いくつかの方法があります。それらはすべて、次のシグナルのいずれかを伴います。
SIGSTOP
SIGTSTP
SIGTTOU
SIGTTIN
SIGSTOP
深刻です。ブロックできず、無視できず、処理できません。SIGKILL
プロセスを殺すのと同じくらい確実にプロセスを停止します。停止を防ぐために、バックグラウンド プロセスで他のプロセスを処理できます。
kill(2)
てプロセスによってそれ自体に送信されました。raise(3)
kill(2)
tostop
が有効になっています (の出力を参照stty -a
)。これにより、 が生成されSIGTTOU
ます。tcsetattr(3)
プロセスは、または同等のを使用して端末モードを変更しようとしましたioctl
。(これらは、 で示されるモードと同じstty
です。) これは、フラグSIGTTOU
の現在の状態に関係なく生成されます。tostop
SIGTTIN
ます。このリストはおそらく非常に不完全です。
ひょっとして tcsh を使っていませんか?実際、Tcsh には組み込みの nohup コマンドが付属しており、これまでに多くの問題を抱えていましたが、実際の動作を正確に確認できました。
/usr/bin/nohup
その場合は、直接使用してみてください。