Назад | Перейти на главную страницу

Зависшее приложение в оболочке

Иногда, когда приложение зависает в сеансе bash (например, сеть задерживается telnet, ssh, что угодно) Я не могу убить его с помощью ^ C, остановить его с помощью ^ D и даже отправить в фон с помощью ^ Z.

Есть ли способ убить его, не открывая другую оболочку с помощью kill? Я думаю, есть системный вызов, который нужно прервать

Если вы используете SSH, попробуйте комбинацию двух кетстрок: ~ ^ z (тильда, а затем Ctrl-z). Это выйдет из сеанса SSH. То же самое можно сделать с помощью telnet, нажав ^] (ctrl, а затем]).

Теперь вы можете начать новый сеанс и убить вызывающий нарушение процесс или весь сеанс. Это то, что вы ищите?

Вы можете отправить процесс SIGQUIT с Ctrl- \, который иногда работает, если у процесса есть обработчик сигнала для SIGTERM (Ctrl-c) или SIGSTOP (Ctrl-z).

Если ваш процесс блокирует системные вызовы ввода-вывода (ps показывает это в состоянии D), он находится в непрерывном режиме сна, и вам придется подождать, пока ресурс, которого он ожидает, не начнет отвечать.