systemctl是 Systemd 的主命令,用于管理系统。
#查看启动耗时
systemd-analyze
#查看每个服务的启动耗时
systemd-analyze blame
#显示瀑布状的启动过程流
systemd-analyze critical-chain
#显示指定服务的启动流
systemd-analyze critical-chain atd.service
#显示当前主机的信息
hostnamectl
#设置主机名。
hostnamectl set-hostname rhel7
1.4 localectl
localectl命令用于查看本地化设置。
查看本地化设置
localectl
#查看当前时区设置
timedatectl
#查看当前登录的用户。
loginctl
#列出显示指定用户的信息
loginctl show-user ruanyf
列出所有配置文件
systemctl list-unit-files
#列出指定类型的配置文件
systemctl list-unit-files --type=service
这个列表显示每个配置文件的状态,一共有四种。
enabled:已建立启动链接
disabled:没建立启动链接
static:该配置文件没有[Install]部分(无法执行),只能作为其他配置文件的依赖
masked:该配置文件被禁止建立启动链接
更改查看Unit 的状态
sysystemctl status transmission-daemon.service
- 重载所有修改过的配置文件
systemctl daemon-reload
- 开始 | 停止 | 重启服务
systemctl start|stop|restart httpd.service
- 开机自启并运行
systemctl enable httpd.service --now
- 禁止开机自启
systemctl disable httpd.service --now
- 查看配置文件
systemctl cat atd.service
- 杀死一个服务的所有子进程
systemctl kill apache.service
- 列出正在运行的 Unit
systemctl list-units
- 列出所有Unit,包括没有找到配置文件的或者启动失败的
systemctl list-units --all
- 列出所有没有运行的 Unit
systemctl list-units --all --state=inactive
- 列出所有加载失败的 Unit
systemctl list-units --failed
- 列出所有正在运行的、类型为 service 的 Unit
systemctl list-units --type=service
- 显示某个 Unit 服务是否建立了启动链接
systemctl is-enabled transmission-daemon.service
日志管理
Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #查看所有日志(默认情况下 ,只保存本次启动的日志) sudo journalctl #查看内核日志(不显示应用日志) sudo journalctl -k #查看系统本次启动的日志 sudo journalctl -b sudo journalctl -b -0 #查看上一次启动的日志(需更改设置) sudo journalctl -b -1 #查看指定时间的日志 sudo journalctl --since="2012-10-30 18:17:16" sudo journalctl --since "20 min ago" sudo journalctl --since yesterday sudo journalctl --since "2015-01-10" --until "2015-01-11 03:00" sudo journalctl --since 09:00 --until "1 hour ago" #显示尾部的最新10行日志 sudo journalctl -n #显示尾部指定行数的日志 sudo journalctl -n 20 #实时滚动显示最新日志 sudo journalctl -f #查看指定服务的日志 sudo journalctl /usr/lib/systemd/systemd #查看指定进程的日志 sudo journalctl _PID=1 #查看某个路径的脚本的日志 sudo journalctl /usr/bin/bash #查看指定用户的日志 sudo journalctl _UID=33 --since today #查看某个 Unit 的日志 sudo journalctl -u nginx.service> sudo journalctl -u nginx.service --since today #实时滚动显示某个 Unit 的最新日志 sudo journalctl -u nginx.service -f #查看指定优先级(及其以上级别)的日志,共有8级 sudo journalctl -p err -b 0: emerg | 1: alert | 2: crit | 3: err | 4: warning | 5: notice | 6: info | 7: debug 日志默认分页输出,--no-pager 改为正常的标准输出 sudo journalctl --no-pager #以 JSON 格式(单行)输出 sudo journalctl -b -u nginx.service -o json #显示日志占据的硬盘空间 sudo journalctl --disk-usage #指定日志文件占据的最大空间 sudo journalctl --vacuum-size=1G #指定日志文件保存多久 sudo journalctl --vacuum-time=1years #删除重置日志 rm -rf /var/log/journal/* # systemctl restart systemd-journald
|
Linux使用timedatectl设置时区与同步时间

介绍
timedatectl
是一个新工具,它作为 systemd
系统和服务管理器的一部分,代替旧的传统的用在基于 Linux 分布式系统的 sysvinit
守护进程的 date
命令。timedatectl
命令可以查询和更改系统时钟和设置,可以使用此命令来设置或更改当前的日期、时间和时区,或实现与远程 NTP 服务器的自动系统时钟同步。
1
| timedatectl list-timezones
|
1
| sudo timedatectl set-timezone "Asia/Shanghai"
|
同步时间
一般重新设置系统时区后,现实时间会与系统时间之间会有误差,这时候建议使用 systemd-timesyncd
相关工具来解决时间差异的问题。特别注意:timedatectl
并不兼容 ntpd
等组件,请不要安装 ntpd
等组件,以免时间同步失效。
1
| sudo apt install systemd-timesyncd
|
- 更改配置文件,添加 NTP 服务器(添加一行 NTP 服务器地址)
1 2 3 4 5 6
| sudo vim /etc/systemd/timesyncd.conf [Time] NTP=pool.ntp.org 0.asia.pool.ntp.org 1.asia.pool.ntp.org 2.asia.pool.ntp.org #RootDistanceMaxSec=5 #PollIntervalMinSec=32 #PollIntervalMaxSec=2048
|
1
| sudo systemctl restart systemd-timesyncd
|
- 查看
systemd-timesyncd
服务的运行状态
1
| sudo systemctl status systemd-timesyncd
|
1
| sudo timedatectl set-ntp true
|
1 2 3 4 5 6
| timedatectl status
timedatectl timesync-status
timedatectl show-timesync --all
|