5

次のコマンドを使用して、バックグラウンドでperlスクリプトを実行しました

nohup perl myPerlSCript.pl >debug_log &

数分後、私は次のようなステータスになりました

[1]+停止

私はそれが止まるとは思っていませんでしたし、何が止まったのかもわかりません。これをデバッグして、停止した理由を確認するにはどうすればよいですか?私は実際にデバッグするUNIXコマンドを知ることに興味があります。

4

2 に答える 2

3

バックグラウンドで実行中のプロセスを停止するには、いくつかの方法があります。それらはすべて、次のシグナルのいずれかを伴います。

  • SIGSTOP
  • SIGTSTP
  • SIGTTOU
  • SIGTTIN

SIGSTOP深刻です。ブロックできず、無視できず、処理できません。SIGKILLプロセスを殺すのと同じくらい確実にプロセスを停止します。停止を防ぐために、バックグラウンド プロセスで他のプロセスを処理できます。

  • シグナルは、 を使用して別のプロセスによって送信されたか、または を使用しkill(2)てプロセスによってそれ自体に送信されました。raise(3)kill(2)
  • プロセスが端末への書き込みを試みましたが、端末オプションtostopが有効になっています (の出力を参照stty -a)。これにより、 が生成されSIGTTOUます。
  • tcsetattr(3)プロセスは、または同等のを使用して端末モードを変更しようとしましたioctl。(これらは、 で示されるモードと同じsttyです。) これは、フラグSIGTTOUの現在の状態に関係なく生成されます。tostop
  • プロセスが端末から読み取ろうとしました。これにより、 が生成されSIGTTINます。

このリストはおそらく非常に不完全です。

于 2012-07-04T00:01:17.477 に答える
1

ひょっとして tcsh を使っていませんか?実際、Tcsh には組み込みの nohup コマンドが付属しており、これまでに多くの問題を抱えていましたが、実際の動作を正確に確認できました。

/usr/bin/nohupその場合は、直接使用してみてください。

于 2012-05-14T17:45:00.297 に答える