local service system账户_systemd.service学习和使用总结
公眾號:暮北林
Q Q 群 : ?一起學前端
Systemd Service 學習和使用總結
什么是Systemd service
system就是系統,d的意思是daemon,systemd就是系統守護進程,守護系統級的服務.
我的個人理解就是管理系統服務的工具,可以對系統服務做一些操作,如:啟動、結束、重啟等,
這里我只列一些常用的屬性,細節的地方可以查閱相關文檔.
server的組成要素
[Unit]#?描述信息和啟動前的準備(啟動的順序??依賴的服務等)
[Service]
#?服務的實際操作,規定如何啟動停止服務啟動的PID等信息
[Install]
#?如何安裝此服務,服務運行是并不會用到,只有在enable?disable是才會使用
以上的三個要素Unit Service Install缺一不可,當然了也不能重復使用, 淚的教訓啊???
[Unit]
[Unit]Description="一個簡短的說明"
#?對服務的一個簡短說明?不需要過多贅述
Document=
#?一組用空格分隔的文檔URI列表,一份服務的文檔說明,可接受"http[s]://"?"file:"?"info:"?"main:"五種URI類型
Requires=
#?此服務的依賴項,當啟動此服務時這里列出的服務也必須啟動和After?Before有關聯
#?建議使用Wants=替代
Wants=
#?此選項是Requires的弱化版,此服務啟動時這里列出的服務盡可能的啟動,即使啟動失敗也不會影響當前服務的啟動
Before=
After=
#?上述兩項指定了服務的啟動順序
#?foo.service中設定了?Before=bar.service?啟動時則foo.service先啟動?
#?bar.service后啟動,?服務的停止順序則相反.
[Service]
[Service]Type=
#?設置進程的啟動類型,必須是simple、exec、forking、dbus、notify、idle之一
simple:?ExecStart=進程就是該服務的主進程,systemd會認為創建了該服務的主進程服務進程后此服務啟動完成
exec:?exec與simple類似,?不同之處在于,在該服務的主服務進程執行完成后systemd才認為服務啟動完成,其他待遇按必須一致阻塞到這個時間點才能繼續啟動
simple相當于fork()函數返回即成功
exec相當于?fork()與execve()都成功才算啟動完成
forking?ExecStart=進程啟動時使用fork()系統調用,所有通信渠道建好啟動也成功之后父進程退出子進程將作為主服務繼續運行,?建議設置PidFile=一遍準確定位服務的主進程
PidFile=
#?該服務的PID文件路徑一般位于(/run/目錄下)?強烈建議在Type=forking是明確此選項
ExecStart=
#?啟動服務需要執行的命令行,命令行必須以一個可執行文件開始,并附帶器參數作為argv[1]?argv[2]...傳遞給被執行的進程
TimeoutSec=
#?服務的啟動的超時時間,單位為秒
User=
Group=
#?指定那個用戶/用戶組來啟動此服務
Environment=
#?設置環境變量,服務ExecStart命令行可直接使用,或者指定EnvironmentFile
#?設置進程的環境變量,?接受一個空格分隔的 VAR=VALUE 列表。?可以多次使用此選項以增加新的變量或者修改已有的變量(同一個變量以最后一次設置為準)。?設為空表示清空先前所有已設置的變量。
[Install]
Alias=#?啟用時的別名
WantedBy=
RequiredBy=
#?接受一個空格分隔的單元列表,?enable后會在每個單元列表.wants/?或.requires/目錄創建一個軟連接指向該單元文件.
systcmctl操作service
啟用service
#?systemctl?enable?servicename.service#?enable后將會在?/etc/systemd/syetem/目錄下創建一個軟鏈指向jenkins.service
systemctl?enable?jenkins.service
Created?symlink?/etc/systemd/system/multi-user.target.wants/jenkins.service?→?/etc/systemd/system/jenkins.service
禁用service
systemctl?disabel?jenkins.service#禁用就是撤銷ln軟鏈的過程
重新加載service
#?重新加載所有修改過的servicesystemctl?daemon-reload?
#?重新加載指定service
systemctl?reload?jenkins.service
啟動服務
systemctl?start?jenkins.service停止服務
systemctl?stop?jenkins.service查看服務狀態
systemctl?status?jenkins.service我的使用及問題
工作中使用systemctl的地方還是挺多的,比如內網搭建的NPM庫、Jenkins、爬蟲腳本的開機自啟等
npm庫和Jenkins自啟是老是Timeout 查閱文檔后設置TimeoutSec=0才好使
Jenkins的構建目錄在自啟時老是在root賬戶下, 最后指定User=wangfpp才在當前用戶的家目錄下
還有重復的[Unit] 缺少[Install]等的錯誤屬于service的編寫錯誤
參考文檔
systemd.service中文翻譯http://www.jinbuguo.com/systemd/systemd.service.html
systemd.service英文文檔
https://www.freedesktop.org/software/systemd/man/systemd.service.html
阮一峰教程
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html
最簡明扼要的 Systemd 教程
https://linux.cn/article-6888-1.html
我的公眾號和QQ群
公眾號QQ群總結
以上是生活随笔為你收集整理的local service system账户_systemd.service学习和使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 地址传递,PHP引用符传递存储
- 下一篇: php视频文件上传到服务器,上传和下载图