Linux 之centos7 制作服務自啟動systemd


摘要: - Centos7開機第一個程序從init完全換成了systemd這種啟動方式,同centos 5 6已經是實質差別。systemd是靠管理unit的方式來控制開機服務,開機級別等功能。 在/usr/lib/systemd/system目錄下包含了各種unit文件,有service后綴的服務unit,有target后綴的開機級別unit等,這里臨時介紹關於service后綴的文件。

  • Centos7開機第一個程序從init完全換成了systemd這種啟動方式,同centos 5 6已經是實質差別。systemd是靠管理unit的方式來控制開機服務,開機級別等功能。

  • 在/usr/lib/systemd/system目錄下包含了各種unit文件,有service后綴的服務unit,有target后綴的開機級別unit等,這里臨時介紹關於service后綴的文件。因為systemd在開機要想執行自啟動,都是通過這些*.service 的unit控制的

具體流程

  1. 在/usr/lib/systemd/system目錄下新建一個 service-name.service的文件
  2. 以apache的httpd.service的unit為例解釋
[Unit] #定義描述 Description=The Apache HTTP Server #指定了在systemd在執行完那些target之后再啟動該服務 After=network.target remote-fs.target nss-lookup.target  [Service] #定義Service 的運行type,一般是forking,就是后台運行 Type=notify Environment=LANG=C #以下定義systemctl start |stop |reload *.service 的每個執行方法,具體命令#需要寫絕對路徑 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND ExecReload=/usr/sbin/httpd $OPTIONS -k graceful # Send SIGWINCH for graceful stop KillSignal=SIGWINCH KillMode=mixed #創建私有的內存臨時空間 PrivateTmp=true  [Install] WantedBy=multi-user.target 

以下是我自己寫的一個java項目,需要他開機自運行的service,systemd會幫我執行我寫腳本,shell如下,僅供參考

#!/bin/bash CMD=$1 case $CMD in -start) nohup java -jar /home/mobileoa/apps/shMediaManage-0.0.1.jar &> /home/mobileoa/apps/shm.log & ;; -stop) port=$(sudo netstat -tnlp | grep ':9099' |awk '{print $nf}' |awk -f'/' '{print $1}') sudo kill $port ;; -restart) port=$(sudo netstat -tnlp | grep ':9099' |awk '{print $nf}' |awk -f'/' '{print $1}') sudo kill $port nohup java -jar /home/mobileoa/apps/shMediaManage-0.0.1.jar &> /home/mobileoa/apps/shm.log & ;; *) echo "Usage: shMediaManager.sh -start | -stop | -restart .Or use systemctl start | stop | restart MediaManager.service " ;; esac 

編輯.service文件,在Exec*下執行腳本,來啟動關閉重啟服務

[UNIT]
Description=Media wanager Service After=network.target [Service] Type=forking **ExecStart=/home/mobileoa/apps/shMediaManager.sh -start ExecReload=/home/mobileoa/apps/shMediaManager.sh -restart ExecStop=/home/mobileoa/apps/shMediaManager.sh -stop** PrivateTmp=True [Install] WantedBy=multi-user.target 

設置開機自起
systemctl enable MediaManager.service
會創建一個連接


免責聲明!

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



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