一、systemctl介紹
systemctl主要負(fù)責(zé)控制systemd系統(tǒng)和服務(wù)管理器。在ubuntu 、centos等一系列發(fā)行版中可用。可以方便的管理需要啟動的服務(wù)等??梢詫崿F(xiàn)開機自啟動、出錯重啟和定時重啟等等功能。
二、systemctl管理命令
下面有一個是錯誤的,正確為 systemctl daemon-reload #系統(tǒng)命令重新加載
下面是詳細(xì)的
#語法
systemctl COMMAND name.service
#啟動
systemctl start name.service
#停止
systemctl stop name.service
#重啟
systemctl restart name.service
#查看狀態(tài)
systemctl status name.service
#禁止自動和手動啟動
systemctl mask name.service
#取消禁止
systemctl unmask name.service
#查看某服務(wù)當(dāng)前激活與否的狀態(tài):
systemctl is-active name.service
#查看所有已經(jīng)激活的服務(wù):
systemctl list-units --type|-t service
#查看所有服務(wù):
systemctl list-units --type service --all
#設(shè)定某服務(wù)開機自啟,相當(dāng)于chkconfig name on
systemctl enable name.service
#設(shè)定某服務(wù)開機禁止啟動:相當(dāng)于chkconfig name off
systemctl disable name.service
#查看所有服務(wù)的開機自啟狀態(tài),相當(dāng)于chkconfig --list
systemctl list-unit-files --type service
#用來列出該服務(wù)在哪些運行級別下啟用和禁用:chkconfig –list name
ls /etc/systemd/system/*.wants/name.service
#查看服務(wù)是否開機自啟:
systemctl is-enabled name.service
#列出失敗的服務(wù)
systemctl --failed --type=service
#開機并立即啟動或停止
systemctl enable --now postfix
systemctl disable --now postfix
#查看服務(wù)的依賴關(guān)系:
systemctl list-dependencies name.service
#殺掉進(jìn)程:
systemctl kill unitname
#重新加載配置文件
systemctl daemon-reload
#關(guān)機
systemctl halt、systemctl poweroff
#重啟:
systemctl reboot
#掛起:
systemctl suspend
#休眠:
systemctl hibernate
#休眠并掛起:
systemctl hybrid-sleep
三、system unit文件格式
本文件一共有三個地方可以存放
/etc/systemd/system/
/usr/lib/systemd/system
/lib/systemd/system
1、unit 格式說明:
1、以 “#” 開頭的行后面的內(nèi)容會被認(rèn)為是注釋
2、相關(guān)布爾值,1、yes、on、true 都是開啟,0、no、off、false 都是關(guān)閉
3、時間單位默認(rèn)是秒,所以要用毫秒(ms)分鐘(m)等須顯式說明
2、service unit file文件通常由三部分組成:
1、[Unit]:定義與Unit類型無關(guān)的通用選項;用于提供unit的描述信息、unit行為及依賴關(guān)系等
2、[Service]:與特定類型相關(guān)的專用選項;此處為Service類型
3、[Install]:定義由“systemctl enable”以及"systemctl disable“命令在實現(xiàn)服務(wù)啟用或禁用時用到的一些選項
1)Unit段的常用選項:
可選項 | 描述 |
---|---|
Description | 對當(dāng)前服務(wù)的簡單描述 |
After | 可以指定在哪些服務(wù)之后進(jìn)行啟動 |
Before | 可以指定在哪些服務(wù)之前進(jìn)行啟動 |
Requires | 可以指定服務(wù)依賴于哪些服務(wù)(這種依賴是"強依賴",一旦所依賴的服務(wù)異常,當(dāng)前的服務(wù)也隨之停止) |
Wants | 可以指定服務(wù)依賴于哪些服務(wù)(這種依賴是"弱依賴",即使所依賴的服務(wù)的啟動情況不影響當(dāng)前的服務(wù)是否啟動) |
Conflicts | 定義units間的沖突關(guān)系 |
2)Service段的常用選項:
可選項 | 描述 |
---|---|
EnvironmentFile | 環(huán)境配置文件,用來指定當(dāng)前服務(wù)啟動的環(huán)境變量 |
ExecStart | 指定服務(wù)啟動時執(zhí)行的命令或腳本 |
ExecStartPre | 指定服務(wù)啟動前執(zhí)行的命令或腳本 |
ExecStartPost | 指定服務(wù)啟動后執(zhí)行的命令或腳本 |
ExecStop | 指明停止服務(wù)要運行的命令或腳本 |
ExecStopPost | 指定服務(wù)停止之后執(zhí)行的命令或腳本 |
RestartSec | 指定服務(wù)在重啟時等待的時間,單位為秒 |
ExecReload | 指明重啟服務(wù)要運行的命令或腳本 |
Restart | 當(dāng)設(shè)定Restart=1 時,則當(dāng)次daemon服務(wù)意外終止后,會再次自動啟動此服務(wù),具體看下列類型 |
PrivateTmp | 設(shè)定為yes時,會在生成/tmp/systemd-private-UUID-NAME.service-XXXXX/tmp/目錄 |
KillMode | 指定停止的方式,具體見下面 |
Restart | 指定重啟時的類型,具體見下面 |
Type | 指定啟動類型,具體見下面 |
Type的可選值
Type可選項 | 描述 |
---|---|
simple | 指定ExecStart字段的進(jìn)程為主進(jìn)程 |
forking | 指定以fork() 子進(jìn)程執(zhí)行ExecStart字段的進(jìn)程 |
oneshot | 執(zhí)行一次 |
notify | 啟動后發(fā)送會發(fā)送通知信號通知systemd |
idle | 等其他任務(wù)結(jié)束后才運行 |
Restart的可選值
Restart可選項 | 描述 |
---|---|
no | 退出后不會重啟 |
on-success | 當(dāng)進(jìn)程正常退出時(退出碼為0) 執(zhí)行重啟 |
on-failure | 當(dāng)進(jìn)程不正常退出時(退出碼不為0) 執(zhí)行重啟 |
on-abnormal | 當(dāng)被信號終止和超時執(zhí)行重啟 |
on-abort | 當(dāng)收到?jīng)]有捕捉到的信號終止時執(zhí)行重啟 |
on-watchdog | 當(dāng)看門狗超時時執(zhí)行重啟 |
always | 一直重啟 |
KillMode可選值
KillMode可選項 | 描述 |
---|---|
control-group | 殺掉當(dāng)前進(jìn)程中所有的進(jìn)程 |
process | 殺掉當(dāng)前進(jìn)程的主進(jìn)程 |
mixed | 主進(jìn)程將收到 SIGTERM 信號,子進(jìn)程收到 SIGKILL 信號 |
none | 不殺掉任何進(jìn)程 |
3)Install段的常用選項:
Install可選項 | 描述 |
---|---|
Alias | 別名,可使用systemctl command Alias.service |
RequiredBy | 被哪些units所依賴,強依賴 |
WantedBy | 被哪些units所依賴,弱依賴 |
Also | 安裝本服務(wù)的時候還要安裝別的相關(guān)服務(wù) |
Install一般填為WantedBy=multi-user.target
注意:對于新創(chuàng)建的unit文件,或者修改了的unit文件,要通知systemd重載此配置文件,而后可以選擇重啟,使用命令 systemctl daemon-reload
四、一個例子設(shè)置frpc開機自啟動或異常重啟動
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=always
RestartSec=5s
ExecStart=/frp_0.41.0_linux_amd64/frpc -c /frp_0.41.0_linux_amd64/frpc.ini
ExecReload=/frp_0.41.0_linux_amd64/frpc reload -c /frp_0.41.0_linux_amd64/frpc.ini
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
將此文件命名為frps.service復(fù)制到/lib/systemd/system里面,然后重新加載systemctl配置文件
cp ./frpc.service /lib/systemd/system
systemctl enable frpc
systemctl daemon-reload
查看狀態(tài),已經(jīng)正常運行,當(dāng)用kill -9強制殺死時5s后將會自動重啟。
出現(xiàn)下表情況是說明有一個正在運行,可以殺死后5s后查看結(jié)果文章來源:http://www.zghlxwxcb.cn/news/detail-469382.html
參考
參考鏈接1
參考鏈接2文章來源地址http://www.zghlxwxcb.cn/news/detail-469382.html
到了這里,關(guān)于systemctl命令和配置整理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!