Как уничтожить демона с его именем корректно?

Это называют "выводом подкачки страниц" или (несколько ошибочно) "разбиение на страницы" …

… и man это путем вызова предпочтительного пейджера окружает команду, названную Вашим PAGER переменная среды, на вывод любого конвейера использовалась для генерации выходной формы страницы руководства. Это отступает к значению по умолчанию, если Вы не указали команду пейджера. На ранних Нельдах программа пейджера по умолчанию, это man вызывает как команда пейджера по умолчанию с известными соединенными проводами опциями, был pg. В Вашей системе это, вероятно, more или less. Некоторые man команды смотрят на другие переменные среды для команд пейджера, также.

Вы делаете это путем выполнения что man делает: передайте вывод по каналу того, что Вы хотите видеть в стандартный вход программы пейджера.

Необходимо вовлечь себя хорошая книга по Unix. Существует ярмарка немногие, которые объясняют это, которое является очень простой функцией системы. Простой Поиск книг Google для pager unix more мной сегодня поднял более чем сто книг, которые обсуждают это. (Я прекратил рассчитывать в ста.)

16
16.09.2014, 07:46
3 ответа

Ваш вопрос не ясен, Вы говорите о демоне в заголовке, но в теле только говорят об универсальном процессе.

Для демона там конкретны, означает останавливать его, например, в Debian, который Вы имеете

    service daemon-name stop

или

    /etc/init.d/daemon-name stop

Подобные синтаксисы существуют для других initscript стандартов, используемых в других дистрибутивах/ОС.

Для уничтожения процесса недемона предполагая, это в некотором роде не контролируется, можно безопасно использовать killall или pkill, учитывая, что они используют по умолчанию SIGTERM (15) сигнал и любое прилично записанное приложение должны поймать и корректно выйти при получении этого сигнала. Примите во внимание, что эти утилиты могли уничтожить больше, что один процесс, если существуют многие с тем же именем.

Если это не работает, можно попробовать SIGINT (2), затем SIGHUP (1), и как последнее прибежище SIGKILL (9). Этот последний сигнал не может быть пойман приложением, так, чтобы это не могло выполнить очистку. Поэтому этого нужно избежать каждый раз, когда Вы можете.

Оба pkill и killall примите параметр сигнала в форме -NAME, как в

pkill -INT process-name
19
27.01.2020, 19:48
  • 1
    . На самом деле мой исходный вопрос был о markdoc serve & и svnserve -d. Я думаю, что это - своего рода демон, но ничто не было бесспорно мне :) –  Eonil 04.01.2012, 11:01
  • 2
    killall уничтожитель! –  xdevs23 09.05.2016, 19:04

На подобных BSD и других дистрибутивах у Вас часто будут сценарии в/etc/rc.d/, который обычно справляется с запуском, перезапуском и остановкой демонов в Вашей системе. Для остановки демона, Вы или назвали бы сценарии с полным путем, например:

# /etc/rc.d/acpid stop

или использование команда:

# rc.d stop acpid

Я настоятельно рекомендую испытать этот сценарий для показа Ваших систем запущенных и остановленных демонов:

#!/bin/bash

chk_status(){
  target=$1
  if [[ $target != "functions" && $target !=  "functions.d" ]]
  then
    if [[ -f "/var/run/daemons/$target" ]]
     then
       stat="\e[1;32m[RUNNING]"
     else
       stat="\e[1;31m[STOPPED]"
     fi

    printf "$stat \t\e[1;34m$target\e[0;0m\n"
  fi
}

daemons=($(for daemon in /etc/rc.d/*; do echo "${daemon#\/etc\/rc.d\/}"; done))

if [[ $1 != "" ]]
then
 chk_status $1
else
 for d in "${daemons[@]}"; do
   chk_status $d
 done | sort
fi
3
27.01.2020, 19:48

Проверьте на killproc функция, доступная в /etc/init.d/functions сценарий, получите файл и используйте функцию. Или используйте pgrep и pkill утилиты, чтобы проверить, работают ли они намечено и затем используют их. Пример: pkill -SIGTERM mysqld отправил бы ТЕРМИН сигнал уничтожения, чтобы иметь mysqld выполняют безопасное завершение работы и сбрасывают базы данных на диск, прежде чем быть уничтоженным.

0
27.01.2020, 19:48

Теги

Похожие вопросы