Linux 這20個 systemd 命令值得運維工程師收藏!
systemd是一種Linux系統(tǒng)初始化和管理守護進程的系統(tǒng)和服務(wù)管理器。它引入了一組命令行工具,用于管理和監(jiān)控系統(tǒng)狀態(tài)、服務(wù)單元和日志。
1. systemdctl
systemdctl命令用于管理systemd系統(tǒng)和服務(wù)單元。以下是一些常用的systemdctl命令:
- 啟動一個服務(wù)單元:
sudo systemctl start servicename
- 停止一個服務(wù)單元:
sudo systemctl stop servicename
- 重新加載服務(wù)配置:
sudo systemctl reload servicename
- 顯示一個服務(wù)單元的狀態(tài):
systemctl status servicename
- 啟用一個服務(wù)單元,在系統(tǒng)啟動時自動啟動:
sudo systemctl enable servicename
2. journalctl
journalctl命令用于訪問systemd日志。以下是一些常用的journalctl命令:
- 顯示所有系統(tǒng)日志:
journalctl
- 顯示特定服務(wù)的日志:
journalctl -u servicename
- 根據(jù)時間范圍過濾日志:
journalctl --since "2022-01-01" --until "2022-01-02"
- 顯示最新的日志條目:
journalctl -n
3. hostnamectl
hostnamectl命令用于管理系統(tǒng)的主機名。以下是一些常用的hostnamectl命令:
- 顯示當前主機名:
hostnamectl
- 修改主機名:
sudo hostnamectl set-hostname newhostname
4. timedatectl
timedatectl命令用于管理系統(tǒng)的時間和日期設(shè)置。以下是一些常用的timedatectl命令:
- 顯示當前的時間和日期:
timedatectl
- 設(shè)置系統(tǒng)時區(qū):
sudo timedatectl set-timezone timezone
- 啟用或禁用網(wǎng)絡(luò)時間同步:
sudo timedatectl set-ntp true/false
5. localectl
localectl命令用于管理系統(tǒng)的區(qū)域設(shè)置和語言設(shè)置。以下是一些常用的localectl命令:
- 顯示當前的區(qū)域設(shè)置和語言設(shè)置:
localectl
- 設(shè)置鍵盤布局:
sudo localectl set-keymap keymap
- 設(shè)置系統(tǒng)語言:
sudo localectl set-locale LANG=locale
6. loginctl
loginctl命令用于管理用戶登錄會話。以下是一些常用的loginctl命令:
- 顯示當前登錄的用戶會話:
loginctl list-sessions
- 顯示特定用戶的登錄會話:
loginctl list-sessions --user=username
- 關(guān)閉特定會話:
sudo loginctl kill sessionID
7. systemd-analyze
systemd-analyze命令用于分析系統(tǒng)啟動時間。以下是一些常用的systemd-analyze命令:
- 顯示系統(tǒng)啟動時間:
systemd-analyze
- 顯示各個服務(wù)單元的啟動時間:
systemd-analyze blame
8. systemd-cgls
systemd-cgls命令用于顯示cgroup層次結(jié)構(gòu)。以下是一個使用systemd-cgls命令的示例:
systemd-cgls
該命令將顯示cgroup的層次結(jié)構(gòu)以及各個cgroup的相關(guān)信息。
9. systemd-cgtop
systemd-cgtop命令用于顯示cgroup的實時資源使用情況。以下是一個使用systemd-cgtop命令的示例:
systemd-cgtop
該命令將實時顯示各個cgroup的CPU、內(nèi)存和IO使用情況。
10. systemd-delta
systemd-delta命令用于顯示自定義的系統(tǒng)配置文件和系統(tǒng)包管理器管理的文件之間的差異。以下是一個使用systemd-delta命令的示例:
systemd-delta
11. systemd-path
systemd-path命令用于查詢系統(tǒng)中各種文件和目錄的路徑。以下是一些常用的systemd-path命令:
- 顯示系統(tǒng)單元文件的路徑:
systemd-path list-unit-files
- 顯示系統(tǒng)服務(wù)的路徑:
systemd-path list-unit-files --type=service
- 顯示systemd運行時目錄的路徑:
systemd-path runtime
12. systemd-nspawn
systemd-nspawn命令用于在一個容器中啟動一個系統(tǒng)實例。以下是一個使用systemd-nspawn命令的示例:
sudo systemd-nspawn -bD /path/to/container/root
該命令將在指定的容器根目錄中啟動一個系統(tǒng)實例。
13. systemd-machine-id-setup
systemd-machine-id-setup命令用于設(shè)置系統(tǒng)的machine ID。以下是一個使用systemd-machine-id-setup命令的示例:
sudo systemd-machine-id-setup
該命令將生成一個新的machine ID并寫入到相應(yīng)的文件中。
14. systemd-escape
systemd-escape命令用于轉(zhuǎn)義字符串,使其符合systemd單元文件中的命名規(guī)則。以下是一個使用systemd-escape命令的示例:
systemd-escape "my.service"
該命令將轉(zhuǎn)義字符串"my.service",使其適用于systemd單元文件中的命名。
15. systemd-cat
systemd-cat命令用于將標準輸入或文件的內(nèi)容寫入systemd日志。以下是一個使用systemd-cat命令的示例:
cat file.txt | systemd-cat
該命令將文件"file.txt"的內(nèi)容寫入systemd日志。
16. systemd-notify
systemd-notify命令用于向systemd發(fā)送通知消息。以下是一個使用systemd-notify命令的示例:
systemd-notify "Hello, systemd!"
該命令將發(fā)送一個通知消息給systemd。
17. systemd-tmpfiles
systemd-tmpfiles命令用于創(chuàng)建和管理臨時文件和目錄。以下是一個使用systemd-tmpfiles命令的示例:
sudo systemd-tmpfiles --create
該命令將根據(jù)tmpfiles.d配置文件創(chuàng)建臨時文件和目錄。
18. systemd-run
systemd-run命令用于在一個臨時的systemd單元中運行命令。以下是一個使用systemd-run命令的示例:
systemd-run --unit=mycommand.service /path/to/command
該命令將在一個臨時的systemd單元中運行指定的命令。
19. systemd-mount
systemd-mount命令用于掛載文件系統(tǒng)。以下是一個使用systemd-mount命令的示例:
sudo systemd-mount /dev/sdb1 /mnt
該命令將掛載設(shè)備/dev/sdb1到/mnt目錄。
20. systemd-ask-password
systemd-ask-password命令用于向用戶請求密碼。以下是一個使用systemd-ask-password命令的示例:
systemd-ask-password --query "Enter your password:"
該命令將向用戶請求輸入密碼,并將其作為回答返回。