linux服務管理的兩種方式為service和systemctl。systemd是Linux系統最新的初始化系統(init),作用是提高系統的啟動速度,盡可能啟動較少的進程,盡可能并發啟動更多進程。systemd對應的進程管理命令是systemctl。
systemctl命令用法
1. 列出所用可用單元
systemctl list-unit-files
2. 列出所有運行中的單元
systemctl list-units
3. 檢查某個單元(如 crond.service)是否啟用
systemctl is-enabled crond.service
4. 列出所有服務
systemctl list-unit-files ?Ctype=service
5. Linux中如何啟動、重啟、停止、重載服務以及檢查服務(如 httpd.service)狀態
systemctl start httpd.service
systemctl restart httpd.service
systemctl stop httpd.service
systemctl reload httpd.service
systemctl status httpd.service
6. 如何激活服務并在開機時啟用或禁用服務(即系統啟動時自動啟動mysql.service服務)
systemctl is-active mysql.service
systemctl enable mysql.service
systemctl disable mysql.service
7. 如何屏蔽(讓它不能啟動)或顯示服務(如ntpdate.service)
systemctl mask ntpdate.service
ln -s '/dev/null' '/etc/systemd/system/ntpdate.service'
systemctl unmask ntpdate.service
rm '/etc/systemd/system/ntpdate.service'
8. 使用systemctl命令殺死服務
systemctl kill crond
編寫一個服務
1. 添加服務文件
在/lib/systemd/system/文件目錄下添加.service服務文件;
2. 編寫.service文件
[Unit]
ConditionFileIsExecutable=/etc/init.d/tst.sh
After=weston.service
[Service]
Type=forking
ExecStart=-/etc/init.d/tst.sh start
ExecStop=-/etc/init.d/tst.sh stop
[Install]
WantedBy=multi-user.target
從上面可以看出.serive文件包括三個部分:[Unit]、[Service]、[Install]。
“
[Unit]
Description:對當前服務的簡單描述。
After:指定.serive在哪些服務之后進行啟動;
Before:指定.serive在哪些服務之前進行啟動;
除上述內容,文件中還可能出現以下內容:
Requires:指定服務依賴于哪些服務(強依賴關系,一旦所依賴服務異常,當前服務也隨之停止);
Wants:指定服務依賴于哪些服務(弱依賴關系,所依賴服務異常不影響當前服務正常運行)。
“
[Service]
Type:定義啟動類型。可設置:simple,exec,forking,oneshot,dbus,notify,idle。
simple:ExecStart 字段啟動的進程為該服務的主進程;
forking:ExecStart 字段的命令將以 fork() 方式啟動,此時父進程將會退出,子進程將成為主進程;
ExecStart:定義啟動進程時執行的命令;
ExecStop:停止服務時執行的命令;
除上述內容外,文件中還可能出現:
EnvironmentFile:環境配置文件,用來指定當前服務啟動的環境變量;
ExecReload:重啟服務時執行的命令;
ExecStartPre:啟動服務之前執行的命令;
ExecStartPost:啟動服務之后執行的命令;
ExecStopPost:停止服務之后執行的命令;
RemainAfterExit:設為yes,表示進程退出以后,服務仍然保持執行;
RestartSec:重啟服務之前需要等待的秒數。
KillMode:定義 Systemd 如何停止服務,可以設置的值如下:
control-group(默認值):當前控制組里面的所有子進程,都會被殺掉;
process:只殺主進程;
mixed:主進程將收到 SIGTERM 信號,子進程收到 SIGKILL 信號;
none:沒有進程會被殺掉。
Restart:定義了退出后,Systemd 的重啟方式。
可以設置的值如下:
no(默認值):退出后不會重啟;
on-success:當進程正常退出時(退出狀態碼為0),才會重啟;
on-failure:當進程非正常退出時(退出狀態碼非0),包括被信號終止和超時,才會重啟;
on-abnormal:當被信號終止和超時,才會重啟;
on-abort:當收到沒有捕捉到的信號終止時,才會重啟;
on-watchdog:看門狗超時退出,才會重啟;
always:總是重啟。
“
[Install]
Install一般填為WantedBy=multi-user.target,表示多用戶環境下服務被啟用。
3. 設置開機自啟動
systemctl enable (服務名)
4. 查詢服務狀態
systemctl status (服務名)
-
Linux
+關注
關注
87文章
11319瀏覽量
209830
發布評論請先 登錄
相關推薦
評論