systemctl與service

1. 引言

首先簡單說一下service命令,systemctl比他的功能更豐富一些,service命令是Redhat Linux兼容的發行版中用來控制系統服務的實用工具,它以啓動、停止、重新啓動和關閉系統服務,還可以顯示所有系統服務的當前狀態。systemd的Unit放在目錄/usr/lib/systemd/system(Centos)或/etc/systemd/system(Ubuntu)。

service(選項)(參數)
service network status
service network restart

參數包括:

  • 服務名:自動要控制的服務名,即/etc/init.d目錄下的腳本文件名;
  • 控制命令:系統服務腳本支持的控制命令。

但是service也存在一些問題:

  • 一是啓動時間長。init進程是串行啓動,只有前一個進程啓動完,纔會啓動下一個進程。
  • 二是啓動腳本複雜。init進程只是執行啓動腳本,不管其他事情。腳本需要自己處理各種情況,這往往使得腳本變得很長。

2. systemctl命令

Systemd 就是爲了解決這些問題而誕生的。它的設計目標是,爲系統的啓動和管理提供一套完整的解決方案。根據 Linux 慣例,字母d是守護進程(daemon)的縮寫。 Systemd 這個名字的含義,就是它要守護整個系統。Systemd 並不是一個命令,而是一組命令,涉及到系統管理的方方面面。

2.1 系統命令

# 重啓系統
$ sudo systemctl reboot

# 關閉系統,切斷電源
$ sudo systemctl poweroff

# CPU停止工作
$ sudo systemctl halt

# 暫停系統
$ sudo systemctl suspend

# 讓系統進入冬眠狀態
$ sudo systemctl hibernate

# 讓系統進入交互式休眠狀態
$ sudo systemctl hybrid-sleep

# 啓動進入救援狀態(單用戶狀態)
$ sudo systemctl rescue

# 顯示當前主機的信息
$ hostnamectl

# 設置主機名。
$ sudo hostnamectl set-hostname rhel7

# 顯示當前主機的信息
$ hostnamectl

# 設置主機名。
$ sudo hostnamectl set-hostname rhel7

2.2 服務命令

# 立即啓動一個服務
$ sudo systemctl start apache.service

# 立即停止一個服務
$ sudo systemctl stop apache.service

# 重啓一個服務
$ sudo systemctl restart apache.service

# 設置開機自啓動
systemctl enable nfs-server.service

# 停止開機自啓動
systemctl disable nfs-server.service

# 殺死一個服務的所有子進程
$ sudo systemctl kill apache.service

# 重新加載一個服務的配置文件
$ sudo systemctl reload apache.service

# 重載所有修改過的配置文件
$ sudo systemctl daemon-reload

# 顯示某個 Unit 的所有底層參數
$ systemctl show httpd.service

# 顯示某個 Unit 的指定屬性的值
$ systemctl show -p CPUShares httpd.service

# 設置某個 Unit 的指定屬性
$ sudo systemctl set-property httpd.service CPUShares=500

2.3 配置文件狀態

# 列出所有配置文件
$ systemctl list-unit-files

# 列出指定類型的配置文件
$ systemctl list-unit-files --type=service

轉自:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

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