## systemd 特性
1. 啟動系統的過程中實現了并行啟動
2. 由systemd所管理的服務可以實現按需激活
3. 支持系統服務狀態快照
4. 可以定義程序之間依賴關系
## unit介紹
unit的配置文件是uit的核心,在配置文件中主要包含
1. 需要管理服務或者程序
2. 服務或者程序需要監聽的套接字
3. 保存的系統快照(就是制作快照的時候,系統中各個服務的狀態)
4. 其他和init相關的配置
unit配置文件的位置
`/lib/systemd/system` ????????本地配置的系統單元
`/run/systemd/system` ????????運行時配置的系統單元
`/usr/lib/systemd/system` ???? 第三方軟件的系統單元(sshd,nginx..)
> 注意:unit(單元)和init中的服務腳本類似,但是不相同
## unit分類
### 類型1:
1. service unit,這是服務類型的unit,該類unit后綴是 .service,比如nginx.service,通過這個nuit可以實現啟動、關閉、查看狀態等
2. 該類unit位于 /usr/lib/systemd/system
3. 注意:unit本質上來說并不是腳本,而僅僅是systemd一個配置文件,因此這個unit文件不具有執行權限,而且也無法執行
4. 啟動服務的方式:通過讓systemd去讀取配置文件中的內容,完成nginx進程的啟動
### 類型2-8:
1. 類型2:device unit,這是設備unit,該類unit的后綴是.device,這類unit的作用是用來識別設備文件
2. 類型3:mount unit,后綴 .mount,用來實現掛載文件系統到指定的掛載點
3. 類型4:socket unit,后綴.socket,用來表示進程間通信的socket文件
4. 類型5:snapshot nuit:快照unit,后綴.snapshot, 用來管理快照
5. 類型6:target unit:目標unit,后綴是 .target,模擬centos5、6上的運行級別(主要是為了向后兼容)
6. 類型7:swap unit
7. 類型8:path unit
## systemctl使用
### 1.查看激活的服務
~~~
1.查看當前系統中全部已經被激活的unit:systemctl list-units --type service 2.查看當前系統中全部的unit(包括未激活的):systemctl list-units --type service --all
~~~
### 2.開機自啟動和關閉
~~~
設置某個服務開機自啟動:systemctl enable nginx.service
禁止某個服務開機自啟動:systemctl disable nginx.service
~~~
> 設置開機自啟動,其實就是在`/etc/systemd/system/multi-user.target.wants/`下創建執行`/usr/lib/systemd/system/`下的配置文件的軟連接
~~~
查看當前系統中的全部unit的自動啟動情況:systemctl list-unit-files
~~~
`disabled`:禁止開機自動啟動
`enabled`:開機自動啟動
`static`:該unit不能獨立運行,是其他unit所依賴的
**表2:服務的啟動、重啟、停止等常用命令對比**
| System V init命令 | systemctl命令 | 作用 |
| --- | --- | --- |
| service foo start | systemctl start foo.service | 啟動服務 |
| service foo restart | systemctl restart foo.service | 重啟服務 |
| service foo stop | systemctl stop foo.service | 停止服務 |
| service foo reload | systemctl reload foo.service | 重新加載配置文件(不停止服務) |
| service foo status | systemctl status foo.service | 查看服務狀態 |
**表3:設置服務開機啟動、不啟動等常用命令對比**
| System V init命令 | systemctl命令 | 作用 |
| --- | --- | --- |
| chkconfig foo on | systemctl enable foo.service | 開機自動啟動 |
| chkconfig foo off | systemctl disable foo.service | 開機不自動啟動 |
| chkconfig foo | systemctl is-enabled foo.service | 查看服務是否為自動啟動 |
| chkconfig --list | systemctl list-unit-files | 查看各個服務的啟動與禁用情況 |
### 3.系統管理相關命令
**1. hostnamectl命令用于查看當前主機的信息。**
顯示當前主機的信息
`hostnamectl`
設置主機名。
`hostnamectl set-hostname xuad1`
**2. localectl命令用于查看本地化設置。**
查看本地化設置
`localectl`
設置本地化參數。
~~~
localectl set-locale LANG=zh_CN.UTF-8
localectl set-keymap zh_CN
~~~
**3. timedatectl命令用于查看當前系統時區設置。**
查看當前時區設置
`timedatectl`
顯示所有可用的時區
`timedatectl list-timezones`
設置當前時區
~~~
timedatectl set-timezone Asia/Shanghai
timedatectl set-time YYYY-MM-DD
timedatectl set-time HH:MM:SS
~~~
**4. loginctl命令用于查看當前登陸的用戶。**
列出當前session
`loginctl list-sessions`
列出當前登錄用戶
`loginctl list-users`
列出顯示指定用戶的信息
`loginctl show-user root`