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