我使用以下命令在后台执行了一个 perl 脚本
nohup perl myPerlSCript.pl >debug_log &
几分钟后,我的状态为
[1]+ Stopped
我没想到它会停止,我也不知道是什么阻止了它。我如何调试它并找出它停止的原因?我实际上对了解用于调试的 unix 命令很感兴趣。
最佳答案
有几种方法可以停止在后台运行的进程。所有这些都涉及以下信号之一:
SIGSTOP
SIGTSTP
SIGTTOU
SIGTTIN
SIGSTOP
很严重。它是不可阻挡的、不可忽视的、不可处理的。它会像 SIGKILL
一样确定地停止进程会杀了它。其他的可以由后台进程处理以防止停止。kill(2)
发送了一个信号,或者通过进程使用 raise(3)
或 kill(2)
tostop
已启用(请参阅 stty -a
的输出)。这会生成 SIGTTOU
. tcsetattr(3)
更改终端模式或等效的 ioctl
. (这些模式与 stty
显示的模式相同。)这将生成 SIGTTOU
无论 tostop
的当前状态如何旗帜。 SIGTTIN
. 这个列表可能非常不完整。
关于Unix后台进程异常停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10588334/