2016-11-21 8 views
0

У меня уже есть служба, которая была написана для RHEL6, и там у меня были некоторые пользовательские служебные команды, которые я могу выполнить. См. Ниже для выписки из сценария.Услуги в RHEL7

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 

Все называемый метод есть там Defination ... Так, ранее в RHEL6, если я должен был выполнить службу и посмотреть, если он здоров, я использовал, чтобы выполнить обслуживание $ SERVICENAME AppHealthCheck .. и он привык работать, но теперь в RHEL7 я не могу определить в файле служебной единицы, если я хочу проверить, скажите AppHealth ... Что касается исследования, которое я сделал, я узнал, что может определить, что будет вызвано для запуска/остановки/перезапуска службы, но было не в состоянии найти, если мы можем назвать любые пользовательские методы в script..Please см мой файл единицы службы ниже: -

[Unit] 
Description=SPIRIT Agent Application 

[Service] 
Type=forking 
ExecStart=scripts/Agent start 
ExecStop=scripts/Agent stop 
ExecReload=scripts/Agent restart 

[Install] 

можете ли вы, пожалуйста, помогите мне в Resolvin g this issue.Please, дайте мне знать, если требуется дополнительная информация.

+0

вы получаете какую-либо конкретную ошибку когда вы вызываете свой код, как показано? является 'AppHealthCheck ', определяемым к тому моменту, когда вы вызываете его в этом случае? –

+0

Что делает «AppHealthCheck», точно? –

+0

Да, это определено ... –

ответ

0

Системный способ - отправить вывод в журнал, чтобы 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 
+0

Даже если я выполняю пользовательскую команду так, как раньше я делал это раньше, как service $ servicename Appcheck, приложение Appcheck получает вызов, и оно работает соответствующим образом, но если этот Appcheck внутренне запускает службу, я не могу остановить службу. –

0

В RHEL7 мы не можем определить какие-либо пользовательские команды обслуживания, как мы это делали или можем сделать на сервере RHEL6. Поэтому, даже если мы вызываем какую-либо команду пользовательского сервиса, мы должны внутренне вызвать «service $ servicename start» или «systemctl start $ servicename», чтобы сервер RHEL7 мог распознавать, что служба работает