Можно сделать много с макросами в энергии.
Использовать qa
записывать макрос, названный "a", q
прекратить записывать, @a
воспроизвести его и 100@a
играть его назад 100 раз.
Как насчет runit
, "UNIX init схема с сервисным контролем"?
Я думаю, что это соответствует Вашим требованиям, т.е.
sv status service
lighttpd
страница Wiki на runit
, см. также эти сценарии выполнения включая lighttpd
и mongodb
)Я не могу ответить на "один сервис в некоторых вариантах" проблема умным способом, Вы могли, конечно, определить сервисы отдельно... (мог бы быть некоторый аккуратный symlink-and-examine-my-pwd-solution к этому, но я не уверен при попытке быть умной вот хорошая идея; размышление о пригодности для обслуживания)
Страница This ArchWiki редактирования предоставляет быстрый обзор, который мог бы быть лучшим запуском, чем runit
страница.
pidof
и pgrep
поможет, если Вы захотите написать сценарий этого (и обойтись без сомнительного ps | lots | of | things
идиома). Можно также отфильтровать uid, ценурозом, ppid, самый старый, новейший и т.д.
Команда kill -0 $pid
может использоваться, чтобы подтвердить, что существует определенный идентификатор процесса.
Могут быть сложности, если у Вас есть несколько экземпляров в различных каталогах, через которые Вы не можете сказать различие между ними ps
. В зависимости от платформы Вы можете отличать их легко cwd, например, на проверке Linux /proc/$PID/cwd
.
# pgrep httpd
9483
9492
9493
9497
# head -1 /usr/local/apache2/logs/httpd.pid
9483
# kill -0 `head -1 /usr/local/apache2/logs/httpd.pid` && echo $?
0
# ls -l /proc/9483/cwd /proc/9483/exe
lrwxrwxrwx 1 root root 0 2013-01-30 19:40 /proc/9483/cwd -> /
lrwxrwxrwx 1 root root 0 2013-01-30 19:37 /proc/9483/exe -> /usr/local/apache2/bin/httpd
(извините, $CWD Apache не слишком интересен...),
Ваш netstat
может также смочь помочь также:
# netstat -plnt | grep :80
tcp 0 0 192.168.123.123:80 0.0.0.0:* LISTEN 9483/httpd
Наиболее часто используемый прием в сценариях запуска, привыкших к управляющим процессам, которые не хороши об управлении файлом PID, должен запустить их non-daemonizing/non-forking способом как фоновое задание с &
(хотя, очевидно, программа должна иметь флаг non-daemonizing, иногда называемый как inetd
режим), и запись $!
в файл PID самостоятельно.
pstree
полезный инструмент для того, чтобы разыскать иерархии процесса:
# pstree -lnp 9483
httpd(9483)-+-rotatelogs(9484)
|-rotatelogs(9485)
|-rotatelogs(9486)
|-rotatelogs(9491)
|-httpd(9492)
|-httpd(9493)-+-{httpd}(9495)
| |-{httpd}(9496)
| |-{httpd}(9498)
| |-{httpd}(9499)
| |-{httpd}(9502)
| |-{httpd}(9504)
[... lots more threads snipped ...]
Как последнее прибежище lsof
многоплатформенный инструмент для отслеживания вещей холмы файлом, соединением или PID.
Для стандартного процесса система типов супервизора проверяют daemontools пакет DJB. Его сайтом является http://cr.yp.to/daemontools.html, хотя откровенно документация может быть немного тупой, существует много учебного руководства как доступные страницы.
Существует некоторое время загрузка альтернатив (не использована мной) перечисленный здесь: https://serverfault.com/questions/192302/alternative-to-daemontools-djbtools-to-supervise-unix-processes
daemontools
конечно, достойный внимания, спасибо за Ваши дальнейшие ссылки.
– Marcus Riemer
31.01.2013, 12:12
/sv/lighttpd_var-www_80 -> /etc/sv/lighttpd
, где последний осматривает$0
и устанавливает соответствующие параметры командной строки. – sr_ 31.01.2013, 12:23