Как перечислять убивающие задачи?

Как manpage состояний ps Процесс с STATUS со значением «D» означает «Бесперебойный сон (обычно IO)»

Кроме того, я читал: здесь вы должны использовать TASK_INTERRUPTIBLE, иначе ваш поток ядра не сможет получать сигналы, и вы не сможете убить (1) поток из пользовательского пространства или использовать kthread_stop () в ядре.

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

Допустим, я запускаю процесс, ожидающий ввода-вывода:

[root@mpinode02 Distros]# find / -mmin +10 > /dev/null & [1] 15592 

Затем я смотрю на статус и процесс wchan

 [root@mpinode02 Distros]# ps -C find -ostat,comm,wchan STAT COMMAND WCHAN D find sleep_on_buffer 

Хорошо, давайте посмотрим, действительно ли процесс является непереходным:

 [root@mpinode02 Distros]# kill 15592 [1]+ Terminated time find / -mmin +10 > /dev/null 

Итак, как вы видите, что процесс с D в реальном мире был убит, является ли страница персонажа ps устаревшей?

В самом деле, я вижу, что есть новый тип состояния: TASK KILLABLE, но я хочу знать, как горячо их перечислить. Знаете ли вы, как перечислять убивающие задачи или идентифицировать их?

One Solution collect form web for “Как перечислять убивающие задачи?”

Добро пожаловать в прекрасный мир сигналов и условий гонки.

Если вы запустите команду ps много раз, вы обнаружите, что она иногда не находится в состоянии D во время выполнения команды. Хотя find может потратить большую часть своего времени на ожидание вашего диска, он определенно не проводит там все свое время. И когда это не так, ваш сигнал об убийстве будет доставлен.

Таким образом, вы не можете делать то, что хотите. ps может перебирать все команды и сообщать вам, какие из них являются убиваемыми или нет в то время. Но когда вы сможете убить, этот список изменится. И даже если убить (ну, ядро ​​от имени убить) не может доставить сигнал немедленно, он сделает это при первой же возможности. Поэтому даже «D» состояние не означает, что «нельзя вообще убить», просто «нельзя убить этот тактовый цикл».

  • отправка сигнала через kill и pid = 0
  • Запустите HTTP-сервер python, который может быть остановлен кем-либо еще
  • Разница между менее сильным сигналом уничтожения -HUP (1) -INT (2) и -TERM (15)
  • Сжимает ли ctrl-c несколько раз быстрее запускает запущенную программу?
  • Почему «kill -l» не отображает номера сигналов 32 и 33?
  • Получение pid скрипта bash от себя
  • Linux и Unix - лучшая ОС в мире.