Я бы не ожидал увидеть ничего в 3-й команде ниже, но, очевидно, мои ожидания неверны. Почему?
$ 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 просто отправляет сигнал процессу, и сигнал по умолчанию (если вы его не выбираете) перехватывается процессом и может игнорироваться или обрабатываться каким-либо другим способом. Используйте сигнал -9, который является немаскируемым сигналом, чтобы незаметно убить процесс. Вы можете проверить любую документацию процесса, чтобы, возможно, найти сигнал, который скажет процессу очиститься и завершиться, но -9 - это обычный подход "просто убей его". or from the names for the signals (list from kill -l)
kill SIGKILL 2339
Хотя убийство с помощью -9 (SIGKILL) будет работать, оно не будет это мой первый выбор. Когда я сталкиваюсь с процессами убийства, в которых я не уверен, я делаю последовательные убийства в следующем порядке:
Не все программы обрабатывают сигналы должным образом, и некоторые будут обрабатывать некоторые сигналы, но не другие. Я нашел этот способ самым безопасным.