linux systemctl 指令 設置開機執行自定義腳本


若在linux中,要配置開機執行自定義腳本,有多種方式,但是從實用性跟從考慮復用的角度上來講,偏向於編輯server服務,並通過linux的systemctl指令來開機啟動,同時還可以通過該指令來執行重啟、關閉等操作。以下以啟動一個frp服務為例

自定義腳本

  1. 啟動腳本
path=/root/frp/frp_0.35.1_linux_amd64
nohup $path/frps -c $path/frps.ini > $path/frp.log 2>&1 &
  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
  1. 關閉腳本
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

查看狀態與其他命令

  1. 注意當編輯完service文件,需要執行容器重載命令systemctl daemon-reload;
  2. 使用systemctl status frp命令查看服務狀態。
  3. 使用systemctl start/reload/stop frp 命令來控制你的服務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM