一、systemd介绍
systemd即为system daemon,是linux下的一种init软件
与多数发行版使用的System V风格init相比,systemd采用了以下新技术:
(1) 采用Socket激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能;
(2) 用Cgroups代替PID来追踪进程,以此即使是两次fork之后生成的守护进程也不会脱离systemd的控制。
从设计构思上说,由于systemd使用了cgroup与fanotify等组件以实现其特性,所以只适用于Linux。
二、Linux systemd 常用命令
1.系统管理 systemctl
显示系统状态: $ systemctl status
立即激活单元: # systemctl start [单元]
立即停止单元: # systemctl stop [单元]
重启单元: # systemctl restart [单元]
开机自动激活单元: # systemctl enable [单元]
取消开机自动激活单元: # systemctl disable [单元]
命令单元重新读取配置: # systemctl reload [单元]
输出单元运行状态: $ systemctl status [单元]
检查单元是否配置为自动启动:
$ systemctl is-enabled [单元]
显示单元的手册页: # systemctl help [单元]
重新载入systemd,扫描新的或有变动的单元:
# systemctl daemon-reload
输出激活的单元: $ systemctl list-units
查看已激活的服务: $ systemctl list-units -t service
输出运行失败的单元: $ systemctl --failed
禁用一个单元: # systemctl mask [单元]
取消禁用一个单元: # systemctl unmask [单元]
查看所有已安装服务: $ systemctl list-unit-files
检查某个服务的所有配置细节:
# systemctl show [服务]
获取某个服务的依赖性列表:
# systemctl list-dependencies [服务]
查看环境变量: $ systemctl show-environment
重启系统: # systemctl reboot
关闭系统: # systemctl poweroff
进入待机状态: # systemctl suspend
进入休眠状态: # systemctl hibernate
进入混合休眠模式: # systemctl hybrid-sleep
进入救援状态: # systemctl rescue
2.查看启动耗时 systemd-analyze
查看启动耗时: $ systemd-analyze
查看每个服务的启动耗时:$ systemd-analyze blame
显示瀑布状的启动过程流:$ systemd-analyze critical-chain
显示指定服务的启动流: $ systemd-analyze critical-chain [服务]
3.查看当前主机信息 hostnamectl
显示当前主机的信息:$ hostnamectl
设置主机名: # hostnamectl set-hostname [hostname]
4.本地化设置 localectl
查看本地化设置:$ localectl
设置本地化参数:
# localectl set-locale LANG=en_US.UTF-8
# localectl set-keymap en_US
5.时区设置 timedatectl
查看当前时区设置: $ timedatectl
列出所有可用时区: $ timedatectl list-timezones
设置当前时区:
# timedatectl set-timezone Asia/Shanghai
# timedatectl set-time YYYY-MM-DD
# timedatectl set-time HH:MM:SS
设置硬件时间为本地时间
# timedatectl set-local-rtc true
6.查看用户登录信息 loginctl
列出当前所有会话: $ loginctl list-sessions
列出当前登录用户: $ loginctl list-users
查看指定用户信息: $ loginctl show-user [username]
7.日志分析 journalctl
查看最近生成的5条日志: # journalctl -n 5
查看系统报错: # journalctl -p err
查看某个时间段生成的日志:
# journalctl --since 时间("2017-08-01 00:00:00") --until ("2017-08-02 02:30:00")