linux systemctl 指令 設定開機執行自定義指令碼
阿新 • • 發佈:2021-11-10
若在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
命令來控制你的服務。