Linux中的service和systemctl命令

作用: 都是用來管理Linux服務的

不同點:systemd是Linux系統最新的初始化系統(init),作用是提高系統的啓動速度,儘可能啓動較少的進程,儘可能更多進程併發啓動。systemd對應的進程管理命令是systemctl

service的用法:

以啓動Redis爲例:service redis start

systemctl的用法:(本文着重講解)

systemctl命令兼容了service;

systemctl redis start

目錄

 

1. 原理

 2. 常用命令


1. 原理

systemctl命令的實質是管理和操作systemd下的Unit;

systemd的Unit目錄:
Centos:/usr/lib/systemd/system
Ubuntu:/etc/systemd/system

主要包含了4種類型的文件:.service .target .wants .mount

4種類型的文件的作用:

.mount:爲程序定義一個掛載點(放到哪個目錄運行);

我們來具體查看一個:

.target:定義了一些基礎的組件供.service文件調用;

.wants:定義了一些要執行文件的合集的目錄,每次執行該合集時,目錄裏所有的文件都會被執行;

.service:定義了一個服務(分爲三部分);

 2. 常用命令

查看版本號:

systemctl --version

管理服務(Unit):

systemctl <要執行的操作> <服務>
如:
systemctl start redis

要執行的操作主要有以下類型:

start:    立刻啓動後面接的 unit。
stop:     立刻關閉後面接的 unit。
restart:  立刻關閉後啓動後面接的 unit,亦即執行 stop 再 start 的意思。
reload:   不關閉 unit 的情況下,重新載入配置文件,讓設置生效。
enable:   設置下次開機時,後面接的 unit 會被啓動。
disable:  設置下次開機時,後面接的 unit 不會被啓動。
status:   目前後面接的這個 unit 的狀態,會列出有沒有正在執行、開機時是否啓動等信息。
is-active:目前有沒有正在運行中。
is-enable:開機時有沒有默認要啓用這個 unit。
kill :    不要被 kill 這個名字嚇着了,它其實是向運行 unit 的進程發送信號。
show:     列出 unit 的配置。
mask:     註銷 unit,註銷後你就無法啓動這個 unit 了。
unmask:   取消對 unit 的註銷。

舉幾個例子:

查看某個服務的狀態:

Loaded:    表示了從哪裏啓動,enable表示開機啓動,disable反之;
Active:     active(running)表示已在運行,inactive(dead)反之;
Mian PID:   進程號;
Memory:     佔用的內存;

查看某個服務的配置:

註銷與反註銷:

systemctl mask gdm.service        //註銷這個服務,如果要啓動的話,先要反註銷
systemctl unmask gdm.service      //反註銷

查看已經啓動的Unit:

systemctl list-units (或者sudo systemctl)

UNIT:  項目的名稱,包括各個 unit 的類別(看擴展名)。
LOAD:  開機時 unit 的配置是否被加載。
ACTIVE:目前的狀態,須與後續的 SUB 搭配!就是我們用 systemctl status 觀察時,active的內容。
DESCRIPTION:描述信息。
注意,systemctl 不加參數,其實等同於 systemctl list-units

查看系統上一共裝了多少個Unit:

​​​​​​​systemctl list-unit-files

篩選只查看service類型的Unit:

systemctl list-units --type=service -all        type可以設置篩選條件

查看加載失敗的Unit

systemctl --failed

 

 

本文參考資料:https://blog.csdn.net/skh2015java/article/details/94012643

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章