我有一个下面的脚本,基本上可以启动|启动|停止|重启
脚本名称 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/