编码systemctl自定义服务(安装脚本、启动脚本)

该博客介绍了如何使用Shell脚本在Linux系统中创建一个名为aiengine的启动脚本和服务控制文件。脚本详细定义了服务的启动、重启和停止操作,并通过systemctl进行服务的管理,包括加载服务配置、启用开机启动、禁用开机启动以及服务的启动、停止、重启和状态检查。此外,还提供了服务脚本的权限设置和 systemctl 的相关操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Shell

#!/bin/sh

# @author: lele
# @created: 2021.12.09


base_path=$(cd `dirname $0`; pwd)
aiengine_code_path=$base_path"/main.py"
systemctl_path="/usr/lib/systemd/system"


# create aiengine startup script
echo "[+] Create aiengine startup script"
cat > $base_path/aiengine_server.sh << EOF
#!/bin/bash

start_fun(){
    result=\$(ps aux | grep -v grep | grep "$aiengine_code_path")
    if [[ \$result =~ "$aiengine_code_path" ]];then
        echo -e "\033[36;1maiengine has started\033[0m"
    else
        nohup /usr/local/bin/python3.7 $aiengine_code_path >> /dev/null 2>&1 &
        sleep 2
        result=\$(ps aux | grep -v grep | grep "$aiengine_code_path")
        if [[ \$result =~ "$aiengine_code_path" ]];then
            echo -e "\033[36;1maiengine start [ok]\033[0m"
        else
            echo -e "\033[36;1maiengine start [fail]\033[0m"
        fi
    fi
}

restart_fun(){
    service sensapi stop
    service sensapi start
}

case \$1 in
    start)
        start_fun
        ;;
    restart)
        restart_fun
        ;;
    *)
        echo "please input start or restart!"
esac
EOF


# install aiengine systemctl script
echo "[+] Install aiengine systemctl script"
cat > $systemctl_path/aiengine.service << EOF
[Unit]
Description=NTA Aiengine Server
Requires=network.target
After=network.target

[Service]
Type=forking
WorkingDirectory=$base_path
ExecStart=$base_path/aiengine_server.sh start
ExecReload=$base_path/aiengine_server.sh restart
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF


echo "[+] Add aiengine permissions"
chmod 655 $base_path/aiengine_server.sh

echo "[+] Systemctl reload"
systemctl daemon-reload

echo "[+] Start aiengine"
systemctl start aiengine.service

说明解释

1) 在/usr/lib/systemd/system/目录下新建立一个agent.service文件,格式如下:
[Unit]
Description=java agent
After=agent service
 
[Service]
Type=forking
ExecStart=/usr/local/agent/bin/startup.sh
ExecReload=/usr/local/agent/bin/restart.sh
ExecStop=/usr/local/agent/bin/shutdown.sh
 
[Install]
WantedBy=multi-user.target

2) 部分参数说明
[Unit]:服务的说明
Description:描述服务
After:依赖,当依赖的服务启动之后再启动自定义的服务

[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径

[Install]服务安装的相关设置,可设置为多用户

基本使用

1) 第一步需要先执行这个命令来重载服务

systemctl daemon-reload

2) 开机启动agent服务

systemctl enable agent

3) 去掉开机启动agent服务

systemctl disable agent

4) agent服务相关操作

systemctl start agent

systemctl stop agent

systemctl restart agent

systemctl status agent

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨痕诉清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值