linux配置服務啟動/守護進程


systemctl腳本存放在:/usr/lib/systemd/,有系統(system)和用戶(user)之分,像需要開機不登陸就能運行的程序,還是存在系統服務里吧,即:/usr/lib/systemd/system目錄下

 

每一個服務以.service結尾,一般會分為3部分:[Unit]、[Service]和[Install]

示例:

[root@localhost system]# cat ntpdate.service
[Unit]
Description=Set time via NTP
After=syslog.target network.target nss-lookup.target
Before=time-sync.target
Wants=time-sync.target
 
[Service]
Type=oneshot
ExecStart=/usr/libexec/ntpdate-wrapper
RemainAfterExit=yes
 
[Install]
WantedBy=multi-user.target
Unit  描述信息
 
Description=     #描述信息
After=          #在那個程序之前啟動
Before          #在那個程序之后啟動
Service 啟動信息
 
Type=     #啟動類型。
          #Type=oneshot :這一選項適用於只執行一項任務、隨后立即退出的服務。可能需要同時設置 RemainAfterExit=yes 使得 systemd 在服務進程退出之后仍然認為服務處於激活狀態。
          #Type=notify :與 Type=simple 相同,但約定服務會在就緒后向 systemd 發送一個信號。這一通知的實現由 libsystemd-daemon.so 提供。
          #Type=dbus :若以此方式啟動,當指定的 BusName 出現在DBus系統總線上時,systemd認為服務就緒。
          #Type=idle :systemd會等待所有任務處理完成后,才開始執行 idle 類型的單元。其他行為與 Type=simple 類似。
          #Type=forking :systemd認為當該服務進程fork,且父進程退出后服務啟動成功。對於常規的守護進程(daemon),除非你確定此啟動方式無法滿足需求,使用此類型啟動即可。使用此啟動類型應同時指定 PIDFile=,以便 systemd 能夠跟蹤服務的主進程。
          #Type=simple :(默認值) systemd認為該服務將立即啟動。服務進程不會 fork 。如果該服務要啟動其他服務,不要使用此類型啟動,除非該服務是socket 激活型。
 
RemainAfterExit=yes     #通知systemctl結束
User=
Group=
Restart=               #Restart=always的時候systemctl會不斷重啟這個腳本,這種適合程序是腳本的。
                       #Restart=no的時候不會重啟,適合程序軟件。
 
 
ExecStart=  #后面跟程序的絕對路徑,如果有啟動參數,后面加上,如果程序沒有參數不需要添加ExecStop這條語句
ExecStop=    #后面跟程序的絕對路徑,如果有停止參數,后面加上
PIDFile=     #加上程序PID文件絕對路徑
 
 
install 安裝信息
 
WantedBy=          #WantedBy=multi-user.target(單元被允許運行需要的弱依賴性單元,Wantby從Want列表獲得依賴信息。)

 

systemctl enable nginx.service

 

systemctl start nginx.service

 


免責聲明!

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



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