Услуги в 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
Другие вопросы по тегам