我希望在下面的第三个命令中看不到任何内容,但显然我的期望是不正确的。为什么?
$ sudo fuser -v /dev/snd/*
USER PID ACCESS COMMAND
/dev/snd/controlC0: joeuser 2339 F.... pulseaudio
/dev/snd/controlC2: joeuser 2339 F.... pulseaudio
/dev/snd/pcmC0D7p: joeuser 2339 F...m pulseaudio
/dev/snd/pcmC2D0c: joeuser 2339 F...m pulseaudio
/dev/snd/pcmC2D0p: joeuser 2339 F...m pulseaudio
$ kill 2339
$ sudo fuser -v /dev/snd/*
USER PID ACCESS COMMAND
/dev/snd/controlC0: joeuser 2339 F.... pulseaudio
/dev/snd/controlC2: joeuser 2339 F.... pulseaudio
/dev/snd/pcmC0D7p: joeuser 2339 F...m pulseaudio
/dev/snd/pcmC2D0c: joeuser 2339 F...m pulseaudio
/dev/snd/pcmC2D0p: joeuser 2339 F...m pulseaudio
kill 命令只是向进程发送一个信号,默认信号(当您不选择一个时)被进程捕获,可能会被忽略或以其他方式处理。使用 signal -9 ,这是不可屏蔽的信号,不优雅地终止进程。您可能会检查该进程的任何文档以可能找到一个信号,该信号将告诉该进程清理和终止,但 -9 是通常的“直接杀死它”方法。
应该杀死它,因为您拥有该过程。或来自信号的名称(来自 kill -l 的列表)
虽然用 -9 (SIGKILL) 杀死它会起作用,但它不是我的首选。当面临我不确定的杀戮过程时,我会按以下顺序连续杀戮:
并非所有程序都能正确处理信号,有些程序会处理一些信号,但不会处理其他信号。我发现这种方式是最安全的。