1. 程式人生 > 其它 >linux systemctl 指令 設定開機執行自定義指令碼

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 命令來控制你的服務。