Linux:服務相關指令systemctl和service
學習自:systemctl和service - 法螺話 - 博客園
service和systemctl的區別_systemctl和service區別_Xu-小安安的博客-CSDN博客
service和systemctl_systemctl和service區別_如我般驕傲的博客-CSDN博客
systemctl與service的異同
相同點
- 二者都是用于管理Linux系統服務的命令,都能夠實現Linux系統服務的啟停。
不同點
- systemctl是systemd的命令,service是SysVinit的命令。systemd是Linux常用的進程管理器,而SysVinit是傳統的進程管理器。
- 實現過程,service實際是去/etc/init.d目錄下,去執行相關程序/腳本文件,來管理服務的啟停;systemctl則是去/lib/systemd/system目錄下,創建和指令同名的service文件,
![]()
![]()
- systemctl支持更多操作,例如狀態、啟停、重啟、重載、開機自啟等;service只能啟停、重啟服務。
- systemctl可以管理systemd和SysVinit啟動的服務,而service只能管理SysVinit啟動的服務。
- 一些較老的服務只能通過service進行啟停,而systemctl命令并不支持;
- 語法不同:
systemctl 指令 服務
service 服務 指令systemctl restart network service network restart
systemctl
1、簡介
用于管理進程:
- CentOS 5:SysV init;
- CentOS 6:Upstart;
- CentOS 7:Systemd;
CentOS7采用systemd管理守護進程,服務獨立地運行于內存中,服務響應速度快,但占用更多內存。
獨立服務的服務啟動腳本存放于目錄/usr/lib/systemd/system中。
Systemd的新特性:
- 系統引導時實現服務的并行啟動;
- 按需激活進程;
- 系統實現快照;
- 基于依賴關系定義服務的控制邏輯;
systemctl可用于內省和控制systemd系統和服務管理器的狀態。CentOS7.x系統環境下我們使用該命令啟停服務,實際上該命令除了獨立服務還有很多其他用途。
2、用法
下文中的unit,是指被管理的daemon(守護進程)
用法:systemctl 選項 [服務]
選項
選項用法:systemctl start unit |
說明 |
| start | 啟動unit |
| stop | 停止 |
| restart | 重啟,先stop再start |
| reload | 重載配置文件,不stop服務 |
| enable | 開機自啟動 |
| disbale | 取消開機自啟動 |
| status | unit的狀態 |
| is-active | 是否活躍/運行 |
| is-enabled | 是否開機啟動 |
| kill | 殺死服務 |
| show | 列出unit的配置 |
| daemon-reload | 刷新配置并重載daemon以使systemctl識別 |
| mask | 注銷unit,之后再也無法啟動unit |
| unmask | 取消對unit的注銷 |
| list-units |
列出所有目前啟動的unit。 加參數-all同時列出沒啟動的。 |
| list-unit-files |
列出所有已安裝的unit以及它們的開機啟動狀態 (enabled,disabled,static,mask) |
| --type=TYPE | unit type,包括service、socket、target |
| get-default | 當前target |
| set-default | 設定后面的target為默認的操作模式 |
| isolate | 切換到后面的模式 |
| snapshot | 系統快照 |
| delete | 刪除快照 |
| show-environment | 展示環境變量 |
| poweroff | 關閉系統 |
| reboot | 重啟機器 |
| suspend | 系統睡眠 |
| get-default | 查看系統啟動模式 |
例子
1)幫助:systemctl --help
2)啟動:systemctl start unit
3)狀態:systemctl status unit
4)停止:systemctl stop unit
5)活躍檢查:systemctl is-active unit
6)重新加載配置:systemctl reload unit
7)重啟服務(先stop,然后start):systemctl restart unit
8)列出所有可用unit:systemctl list-unit-files

9)列出所有已加載unit:systemctl list-units [--type=TYPE]

10查看所有systemctl管理的所有服務(即service文件):--type=service

11)注銷:systemctl mask unit
服務注銷后,就無法通過systemctl進行啟停管理了
[root@s153 system]# systemctl mask firewalld Created symlink from /etc/systemd/system/firewalld.service to /dev/null. [root@s153 system]# systemctl start firewalld Failed to start firewalld.service: Unit is masked.
12)取消注銷:systemctl unmask unit
13)開機自啟動:systemctl enable unit
14)取消開機自啟動:systemctl disable unit
15)機器信息:systemctl list-machines
16)環境變量:systemctl show-environment
17)重新加載unit:systemctl daemon-reload
如果手動修改了unit,使用該命令重新加載
18)系統快照:systemctl sanapshot unit
19)刪除快照:systemctl delete unit
20)檢查是否開機自啟動:systemctl is-enabled unit
21)殺死服務:systemctl kill unit
22)切換救援模式:systemctl rescue
切換默認模式:systemctl default

23)關閉系統:systemctl poweroff
24)重啟機器:systemctl reboot
25)系統睡眠/掛起:systemctl suspend
26)查看系統啟動模式:systemctl get-default
3、unit的type:--type
- Service: 文件擴展名.service, 用于定義系統服務;
- Target: 文件擴展名.target, 用于模擬實現"運行級別";
- Device: 文件擴展名.device, 用于定義內核識別的設備;
- Mount: 文件擴展名.mount, 用于定義文件系統的掛載點;
- Socket: 文件擴展名.socket, 用于標識進程間通信用到的socket文件;
- Snapshot: 文件擴展名.snapshot, 用于管理系統快照;
- Swap: 文件擴展名.swap, 用于標識swap設備;
- Automount: 文件擴展名.automount, 用于定義文件系統自動點設備;
- Path: 文件擴展名.path, 用于定義文件系統中的一文件或目錄;
4、unit file的結構
文件通常由三部分組成:
[Unit]: 定義與Unit類型無關的通用選項;用于提供unit的描述信息,unit行為及依賴關系等。
[Service]:與特定類型相關的專用選項;此處為Service類型。
[Install]:定義由"systemctl enable"及"systemctl disable"命令在實現服務啟用或禁用時用到的一些選項。
一個unit文件的示例
[root@s153 system]# cat chronyd.service [Unit] Description=NTP client/server Documentation=man:chronyd(8) man:chrony.conf(5) After=ntpdate.service sntp.service ntpd.service Conflicts=ntpd.service systemd-timesyncd.service ConditionCapability=CAP_SYS_TIME [Service] Type=forking PIDFile=/var/run/chronyd.pid EnvironmentFile=-/etc/sysconfig/chronyd ExecStart=/usr/sbin/chronyd $OPTIONS ExecStartPost=/usr/libexec/chrony-helper update-daemon PrivateTmp=yes ProtectHome=yes ProtectSystem=full [Install] WantedBy=multi-user.target
5、Unit段的常用選項
Description:描述信息,意義性描述;
After:定義unit的啟動次序;表示當前unit應晚于哪些unit啟動;其功能與Before相反;
Requies:依賴到其它的units;強依賴,被依賴的units無法激活時,當前的unit即無法激活;
Wants:依賴到其它的units;弱依賴;
Confilcts:定義units 的沖突關系;
6、Service段的常用選項
Type:用于定義影響ExecStart及相關參數的功能的unit進程類型;
類型有:simple、forking、oneshot、dbus、notify、idle。
EnvironmentFile:環境配置文件;
ExecStart:指明啟動unit要運行的命令或腳本;ExecStart, ExecStartPost
ExecStop:指明停止unit要運行的命令或腳本;
Restart:
7、Install段的常用配置
Alias:
RequiredBy:被哪些unit所依賴;
WantBy:被哪些unit所依賴;
Service
用法:service 服務 <指令>
指令
指令 |
說明 |
|
空 service network |
打印服務的可用指令 |
| start | 啟動 |
| stop | 停止 |
| restart | 重啟 |
| status | 狀態 |
| force-reload | 重載配置 |
其他用法:
- chkconfig --list:查看系統服務列表,以及每個服務的運行級別;
- chkconfig 服務 on:指定服務開機自啟;
- chkconfig 服務 off:指定服務開機不自啟;
- ntsysv:以全屏幕文本界面設置服務開機時是否自啟。



浙公網安備 33010602011771號