有時自己寫的或者是下的第三方軟件需要在開機自啓動,那麼在ubuntu下如何實現呢,主要要了解的知識就是linux的service和systemctl的功能,service可以實現服務的註冊,啓動,停止等,systemctl也可以實現上述service功能,除此之外它還能實現開機啓動等服務的管理,要實現開機自啓動主要也是使用這個功能,下面就講一下方法:
首先需要寫一個servcie的描述文件,需要在/lib/systemd/system目錄下創建一個service文件,如本文創建一個frps.servcie文件,文件的格式如下:
[Unit]
Description=Frps
After=network.target
[Service]
#Type=forking
ExecStart=/root/frp_0.29.1_linux_amd64/start.sh --daemonize no
[Install]
WantedBy=multi-user.target
Unit是描述這個服務的一些信息,Service的execStart指定服務啓動時要執行的shell腳本,除此之外還可以指定stop,restart等對應執行的動作。Install指定安裝時還需要依賴哪些組件。
這裏我指定了啓動時要執行/root/frp_0.29.1_linux_amd64/start.sh文件,這個文件實現如下:
#!/bin/sh
/root/frp_0.29.1_linux_amd64/frps -c /root/frp_0.29.1_linux_amd64/frps.ini
echo "run frps" > /root/frp_0.29.1_linux_amd64/frps.log
這個文件是啓動了frps這個程序,這裏很重要的一點是文件前面要加上 #!bin/sh 否則在執行時會出現 code=exited, status=203/EXEC
寫好後就可以使用systemctl命令要增加爲開機自啓動,執行以下命令就可以:
systemctl enable frps.service
查看是否已生效:
systemctl is-enable frps.service
如果修改了service文件需要reload:
systemctl reload
列出所有服務:
systemctl list-unit-files
查看服務狀態:
systemctl status frps.service
以上就是實現開機啓動服務的方法,具體命令的使用請看其他專門介紹的文章, #!bin/sh 這個在執行的文件前要加上!!!這個很重要