linux - 如何在 RHEL7 中将 shell 脚本作为服务?

标签 linux bash shell

我有一个下面的脚本,基本上可以启动|启动|停止|重启

脚本名称 amr.sh 例如:我现在如何执行:./amr.sh start

我想要这个脚本作为服务:

#!/bin/bash
# chkconfig: 2345 20 80
# description: AMR Service shell script
# Author: NSK

# Source function library.
. /etc/init.d/functions

start() {
    # code to start app
    # example: daemon program_name &
        echo "Starting AMR service..... "
        daemon /root/amr/bin/LoggerServer &
        echo "Starting Logger...."
        sleep 2
        daemon /root/amr/bin/mediaController -i 192.168.117.119 &
        echo "Starting Mediacontroller....."
        sleep 4
        daemon /root/amr/bin/mstdaemon --daemon &
        echo "Starting Media Streamer...."
        sleep 4
        daemon /root/amr/bin/pcdaemon --daemon -i ens192 -f "'udp && portrange 3000-8000 && not(src host localhost)'" &
        sleep 3
        echo "Starting Packetcapture...."
        daemon /root/amr/bin/stund &
        echo "Starting Stun..."
        daemon /root/amr/bin/tdaemon &
        sleep 2
        echo "Starting Transcoder...."
        status LoggerServer
        status mediaController
        status mstdaemon
        status pcdaemon
        status stund
        status tdaemon
        echo "Started AMR services. "
}
stop() {
    # code to stop app
    # example: killproc program_name
        echo "Stopping AMR service..... "
        killproc LoggerServer
        echo "Stoping Logger..... "
        killproc mediaController
        echo "Stoping MediaController...."
        killproc mstdaemon
        echo "Stoping Mediastreamer..."
        killproc pcdaemon
        echo "Stoping Packet Capture....."
        killproc stund
        echo "Stoping Stun....."
        killproc tdaemon
        echo "Stoping Transcoder....."
        status LoggerServer
        status mediaController
        status mstdaemon
        status pcdaemon
        status stund
        status tdaemon
        echo "Stopped AMR service "
}

case "$1" in
    start)
       start
        echo "success AMR server startup"
       ;;
    stop)
       stop
       ;;
    restart)
       stop
       start
       ;;
    status)
       # code to check status of app comes here

      # example: status program_name
        status LoggerServer
        status mediaController
        status mstdaemon
        status pcdaemon
        status stund
        status tdaemon
       ;;
    *)
       echo "Usage: $0 {start|stop|status|restart}"
esac

exit 0

最佳答案

首先,将您的脚本复制到/usr/sbin/ 目录中。

/usr/sbin/amr

然后,在 /usr/lib/systemd/system/ 目录中创建一个单元文件。

/usr/lib/systemd/system/amr.service

文件内容应该是:

[Unit]
Description=AMR Service

[Service]
Type=simple
ExecStart=/usr/sbin/amr start
ExecReload=/usr/sbin/amr restart
ExecStop=/usr/sbin/amr stop

[Install]
WantedBy=multi-user.target

启动服务

systemctl start amr

检查状态

systemctl status amr

停止服务

systemctl stop amr

重启服务

systemctl reload amr

启动时启用

systemctl enable amr

启动时禁用

systemctl disable amr

关于linux - 如何在 RHEL7 中将 shell 脚本作为服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38293533/

相关文章:

python - `os.symlink` 与 `ln -s`

linux - 替换制表符分隔文件linux中封闭字符串中的制表符

bash - 防止 bash 在变量输出中添加单引号

ruby - 如何从 ruby​​ 脚本运行 cd 命令/更改文件夹路径

php 从 linux 终端获取文本并回显

c - 解析字符串(Unix Shell)

linux - 使用自定义 .xinitrc 时出现符号查找错误

c - 从内核模块获取本地 NIC 的 ip 地址

bash - 如何将参数传递给别名

linux - 如何在不实际执行 ssh 的情况下查找是否可以通过 SSH 访问远程主机