若在linux中,要配置開機執行自定義腳本,有多種方式,但是從實用性跟從考慮復用的角度上來講,偏向於編輯server服務,並通過linux的systemctl指令來開機啟動,同時還可以通過該指令來執行重啟、關閉等操作。以下以啟動一個frp服務為例
自定義腳本
- 啟動腳本
path=/root/frp/frp_0.35.1_linux_amd64
nohup $path/frps -c $path/frps.ini > $path/frp.log 2>&1 &
- 重啟腳本
path=/root/frp/frp_0.35.1_linux_amd64
port=7000
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
echo $pid
#殺掉對應的進程,如果pid不存在,則不執行
if [ -n "$pid" ]; then
kill -9 $pid;
fi
sh $path/frp_cmd.sh
- 關閉腳本
port=7000
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
echo $pid
#殺掉對應的進程,如果pid不存在,則不執行
if [ -n "$pid" ]; then
kill -9 $pid;
fi
編輯server文件
進入/usr/lib/systemd/system目錄,編輯frp.service文件,內容如下:
[Unit]
Description=frp
ConditionFileIsExecutable=/root/frp/frp_0.35.1_linux_amd64/frp_cmd.sh
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/bash /root/frp/frp_0.35.1_linux_amd64/frp_cmd.sh
ExecReload=/usr/bin/bash /root/frp/frp_0.35.1_linux_amd64/reload-frp.sh
ExecStop=/usr/bin/bash /root/frp/frp_0.35.1_linux_amd64/kill-cmd.sh
[Install]
WantedBy=multi-user.target
其中,各個參數的配置可以從網上找到相應的解釋,這里不另外寫。
加入開機啟動
執行systemctl enable frp
查看狀態與其他命令
- 注意當編輯完service文件,需要執行容器重載命令
systemctl daemon-reload; - 使用
systemctl status frp命令查看服務狀態。 - 使用
systemctl start/reload/stop frp命令來控制你的服務。
