Услуги в RHEL7
У меня уже есть служба, которая была написана для RHEL6, и там у меня было несколько пользовательских команд службы, которые я могу выполнить. См. Ниже выдержку из сценария.
case "$1" in
'start')
start
;;
'stop')
stopit
;;
'restart')
stopit
start
;;
'status')
status
;;
'AppHealthCheck')
AppHealthCheck
;;
*)
echo "Usage: $0 { start | stop | restart | status | AppHealthCheck }"
exit 1
;;
esac
У всех вызываемых методов есть определение... Итак, ранее в RHEL6, если мне нужно было выполнить службу и посмотреть, исправна ли она, я использовал для выполнения службы $servicename AppHealthCheck .. и раньше она работала, но теперь в RHEL7 я не могу определить в файле единицы обслуживания, если я хочу проверить, скажем, AppHealth... Насколько я провел исследование, я узнал, что он может определить, что будет вызываться для запуска / остановки / перезапуска службы, но не смог найти, можем ли мы Вызовите любые пользовательские методы в сценарии. Пожалуйста, смотрите мой файл сервисного блока ниже:-
[Unit]
Description=SPIRIT Agent Application
[Service]
Type=forking
ExecStart=scripts/Agent start
ExecStop=scripts/Agent stop
ExecReload=scripts/Agent restart
[Install]
Можете ли вы помочь мне в решении этой проблемы. Пожалуйста, дайте мне знать, если требуется дополнительная информация.
2 ответа
В RHEL7 мы не можем определять какие-либо пользовательские сервисные команды, как мы это делали или можем сделать на сервере RHEL6. Поэтому, даже если мы вызываем какую-либо пользовательскую команду службы, нам нужно внутренне вызвать 'service $servicename start' или 'systemctl start $servicename', чтобы сервер RHEL7 мог распознать, что служба работает
Системный способ - отправить вывод в журнал, чтобы systemctl status
показывает последние сообщения журнала и говорит вам, если служба работает. Если вы хотите более подробный статус, вы должны создать отдельную команду командной строки, которая делает AppHealthCheck
, Это не будет выполнено через systemctl
Это было бы отдельной вещью.
Так работает Pacemaker, например. systemctl status pacemaker
показывает, работает ли служба.
# systemctl status pacemaker
● pacemaker.service - Pacemaker High Availability Cluster Manager
Loaded: loaded (/usr/lib/systemd/system/pacemaker.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2016-11-10 15:28:11 GMT; 1 weeks 3 days ago
Nov 11 15:54:59 node1 crmd[4422]: notice: Operation svc1_stop_0: ok (node=node1, call=93, rc=0, cib-update=134, confirmed=true)
Nov 11 15:54:59 node1 crmd[4422]: notice: Operation svc2_stop_0: ok (node=node1, call=95, rc=0, cib-update=135, confirmed=true)
Nov 11 15:54:59 node1 crmd[4422]: notice: Operation svc3_stop_0: ok (node=node1, call=97, rc=0, cib-update=136, confirmed=true)
pcs status
дает более подробную информацию о том, как это происходит.
# pcs status
Cluster name: node
Stack: corosync
Current DC: node2 (version 1.2.3) - partition with quorum
2 nodes and 3 resources configured
Online: [ node1 node2 ]
Full list of resources:
<snip>
PCSD Status:
node1: Online
node2: Online
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled