0

我已经有一个为 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 中,如果我必须执行服务并查看它是否健康,我曾经执行 service $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]

你能帮我解决这个问题吗?如果需要更多信息,请告诉我。

4

2 回答 2

0

systemd 的方式是将输出发送到日志,以便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
于 2016-11-21T14:28:59.770 回答
0

在 RHEL7 中,我们无法像过去那样定义任何自定义服务命令,或者我们可以在 RHEL6 服务器中进行定义。因此,即使我们调用任何自定义服务命令,我们也必须在内部调用“service $servicename start”或“systemctl start $servicename”,以便 RHEL7 服务器可以识别服务正在运行

于 2016-12-16T12:58:46.330 回答