Tag: 工作控制

为什么我不能在bash脚本中使用作业控制?

在回答这个 问题时 ,我被告知 在脚本中你没有工作控制(并试图打开它是愚蠢的) 这是我第一次听到这个消息,而且我深入了解Job Control(第7章)的bash.info部分,并没有提到这两个断言。 [ 更新:手册页更好一点,提到'典型的'使用,默认设置和terminalI / O,但没有真正的原因,为什么作业控制特别不适合脚本] 那么,为什么不以脚本为基础的工作控制工作,又是什么使它成为一个不好的做法(又名“愚蠢的”)呢? 编辑:有问题的脚本启动后台进程,启动第二个后台进程,然后尝试将第一个进程放回到前台,使其具有正常的terminalI / O(如直接运行),然后可以redirect在剧本之外 。 不能这样做到后台进程。 正如对另一个问题所接受的答案所指出的那样,还有其他脚本可以解决这个特定的问题,而不会尝试控制任务。 精细。 而且这个严厉的脚本使用了一个硬编码的工作号码 – 显然是不好的。 但是我想知道工作控制是否是一个根本性的注定的方法。 它似乎仍然可能工作…

我应该以什么样的顺序发送信号以正常关机?

评论者对另一个问题的 回答评论说: 除非绝对必要,否则不要使用kill -9! SIGKILL不能被困住,所以被杀的程序不能运行任何关机例程来擦除临时文件。 首先尝试HUP(1),然后INT(2),然后QUIT(3) 我原则上同意SIGKILL ,但其余的消息给我。 鉴于kill发送的默认信号是SIGTERM ,我认为这是任意进程正常closures的最常见的信号。 另外,我已经看到SIGHUP用于非终止的原因,比如告诉守护进程“重新读取你的configuration文件”。 而在我看来, SIGINT (与Ctrl-C相同的中断,对吗?)没有得到广泛的支持,或者是非常不正常的结束。 鉴于SIGKILL是最后的select – 哪些信号,以什么样的顺序发送到一个任意的进程,以尽可能优雅地closures它? 如果可以的话,请提供支持事实(超出个人偏好或意见)或参考资料来证实您的答案。 注:我特别感兴趣的最佳做法,包括考虑bash / Cygwin。 编辑:到目前为止,似乎没有人提到INT或QUIT,并且HUP的提及有限。 有什么理由把这些包括在一个有序的过程中?