天天看點

systemd--------------Ubuntu 18.04 自啟動服務

        ubuntu下自啟動服務,習慣了在rc.local添加,而在ubuntu 18.04系統下,已經沒有了irc.local。從18.04開始,Ubuntu發行版本已經使用systemd來啟動服務,不再使用initd。剛好用到,于是就靜下來看了下systemd啟動的過程。

        廢話不多,下面是啟動自己程式的步驟:

1. 添加/etc/systemd/system/myapp.service服務,内容如下:

[Unit]

Description=user app

# [email protected]     #添加自己程式的依賴

#After=networking.service  

[Service]

type=forking                                        

ExecStart=/bin/bash /root/app.sh                # 使用者的服務腳本

[Install]

WantedBy=multi-user.target

2.在/root/app.sh增加自己的服務,并增加執行權限,sudo chmod a+x /root/app.sh

note:因為啟動該服務時,系統環境還未初始化,是以腳本中自己手動添加所有需要的系統環境,

如:LD_LIBRARY_PATH,PATH等。

3.使能服務

#systemctl enable myapp      

重新開機系統就會自動執行/root/app.sh

 -----------------------------------------------------------------------------------------------------------------------

note:1.Ubuntu中,服務分别放在兩個位置,/etc/systemd/system/ 和/lib/systemd/system/ 。

  前者是使用者定義的服務居多,後者系統服務居多。

        2.myapp.service中 [Unit]..類似字段要注意首字母大寫,之前看了有些文章沒有大寫,測試時不滿足文法,無法啟動服務。

        測試文法是否正确方法:# systemctl reload myapp.service,     #systemctl enable myapp.service

        3.需要做rootfs的,可以直接建立軟連接配接人間代替 systemctl enable xxx  指令

         執行過該指令的應該可以看到,該指令實質上就是在/etc/systemd/system/multi-user.target.wants/ 下建立了一個同名軟連接配接。  “multi-user.target.wants”這裡與服務中install内容對應。