让我们说我运行以下命令:
cat /var/log/dmesg | festival --tts
这可能会返回消息[1] 4726
,指示与此操作关联的进程ID。当我运行kill 4726
或killall festival
或killall cat
或killall aplay
时,语音不会停止(或者至少在停止前持续相当长的一段时间)。如果我运行上面的命令,我怎么能杀死它开始做的事情?
答案 0 :(得分:1)
Kill向程序发送SIGTERM。 SIGTERM告诉程序停止,让它正常关闭。该程序是取消分配内存,关闭连接,刷新磁盘,删除临时文件等。因此SIGTERM可能不会立即或快速。
Kill -9,发送SIGSTOP或SIGKILL,只有内核可以看到。内核将终止进程。虽然速度更快,但不允许优雅的退出。
我对节日并不熟悉,所以如果你担心这些命令正在分离进程而你想要阻止所有的孩子,你可以通过从bash shell中产生它们来强制解决问题。当您终止父bash shell时,它将终止它拥有的所有进程。
bash -c "cat /var/log/dmesg | festival --tts" &
你将获得bash bash shell的pid,你可以杀死并清理所有的子程序。