我使用以下命令在后台执行了一个perl脚本
nohup perl myPerlSCript.pl >debug_log &
几分钟后,我获得了
的状态[1] +停止
我没想到它会停止,也不知道是什么阻止了它。我该如何调试它并找出它停止的原因?我真的很想知道要调试的unix命令。
答案 0 :(得分:3)
有几种方法可以停止在后台运行的进程。所有这些都涉及以下信号之一:
SIGSTOP
SIGTSTP
SIGTTOU
SIGTTIN
SIGSTOP
很严重。它是不可阻挡的,不可忽视的,不可操作的。它肯定会停止这个过程,因为SIGKILL
会杀死它。其他可以由后台进程处理,以防止停止。
kill(2)
发送信号,或使用raise(3)
或kill(2)
tostop
(请参阅stty -a
的输出)。这会生成SIGTTOU
。tcsetattr(3)
或等效的ioctl
更改终端模式。 (这些是stty
显示的相同模式。)无论SIGTTOU
标志的当前状态如何,都会生成tostop
。SIGTTIN
。此列表可能非常不完整。
答案 1 :(得分:1)
您是否有机会使用tcsh? Tcsh实际上带有一个内置的nohup命令,我之前遇到过很多问题,看到你看到的确切行为。
如果是这种情况,请尝试直接使用/usr/bin/nohup
。