【发布时间】:2012-05-14 17:37:41
【问题描述】:
我使用以下命令在后台执行了一个 perl 脚本
nohup perl myPerlSCript.pl >debug_log &
几分钟后我得到了状态
[1]+ 已停止
我没想到它会停止,我也不知道是什么停止了它。我该如何调试它并找出它停止的原因?我实际上有兴趣了解要调试的 unix 命令。
【问题讨论】:
标签: unix process background nohup
我使用以下命令在后台执行了一个 perl 脚本
nohup perl myPerlSCript.pl >debug_log &
几分钟后我得到了状态
[1]+ 已停止
我没想到它会停止,我也不知道是什么停止了它。我该如何调试它并找出它停止的原因?我实际上有兴趣了解要调试的 unix 命令。
【问题讨论】:
标签: unix process background nohup
有几种方法可以停止在后台运行的进程。所有这些都涉及以下信号之一:
SIGSTOPSIGTSTPSIGTTOUSIGTTINSIGSTOP 很严重。它是不可阻挡、不可忽视、不可处理的。就像SIGKILL 会杀死它一样,它肯定会停止该过程。其他的可以由后台进程处理,防止停止。
kill(2) 发送,或由该进程使用raise(3) 或kill(2) 发送给自身
tostop 已启用(请参阅stty -a 的输出)。这会生成SIGTTOU。tcsetattr(3) 或等效的ioctl 更改终端模式。 (这些与stty 显示的模式相同。)无论tostop 标志的当前状态如何,这都会生成SIGTTOU。SIGTTIN。这个列表可能很不完整。
【讨论】:
[1]+ Stopped?
您是否正在使用 tcsh? Tcsh 实际上带有一个内置的 nohup 命令,我之前遇到过很多问题,看到了你所看到的确切行为。
如果是这种情况,请尝试直接使用/usr/bin/nohup。
【讨论】: