systemd的主要命令行工具是systemctl。大多数Linux系统管理员应该都已经很是熟悉系统服务和init系统管理,好比service,chkconfig和telinit命令的使用。systemd也完成一样的管理任务,只是命令工具systemctl的语法有所不一样而已。docker
1. sysvinit和systemd的命令对比列表shell
下表帮助系统管理员了解systemd中能够取代原先sysvinit工做流程的命令。注意:service和chkconfig这两个命令在systemd环境下依然可用。这里以sshd服务为例:服务器
sysvinit命令 | systemd命令 | 备注 |
service sshd start | systemctl start sshd.service | 用来启动一个服务(并不会重启现有的服务) |
service sshd stop | systemctl stop sshd.service | 用来中止一个服务(并不会重启现有的服务) |
service sshd restart | systemctl restart sshd.service | 用来中止并启动一个服务 |
service sshd reload | systemctl reload sshd.service | 当支持时,从新装载配置文件而不中断等待操做 |
service sshd condrestart | systemctl condrestart sshd.service | 若是服务正在运行,那么重启它 |
service sshd status | systemctl status sshd.service | 汇报服务是否正在运行 |
ls /etc/rc.d/init.d/ | systemctl list-unit-files --type=servicessh
|
用来列出能够启动或中止的服务列表 |
chkconfig sshd on | systemctl enable sshd.service | 在下次启动时或知足其余触发条件时设置服务为启动 |
chkconfig sshd off | systemctl disable sshd.service | 在下次启动时或知足其余触发条件时设置服务为禁用 |
chkconfig sshd | systemctl is-enabled sshd.service | 用来检查一个服务在当前环境下被配置为启用仍是禁用 |
chkconfig --list | systemctl list-unit-files --type=service(推荐) ls /etc/systemd/system/*.service |
输出在各个运行级别下服务的启用和禁用状况 |
chkconfig sshd --list | ls /etc/systemd/system/*.wants/sshd.service | 用来列出该服务在哪些运行级别下启用和禁用 |
chkconfig sshd --add | systemctl daemon-reload | 当建立新服务文件或者变动设置时使用 |
注意:以上列出的全部/sbin/service 和 /sbin/chkconfig 在systemd环境下依然能够工做,而且在必要的状况下将会被翻译成原生的等效命令。惟一的例外是 chkconfig --list。hibernate
sysvinit 和 systemd 改变运行级别命令对比表:命令行
sysvinit命令 | systemd命令 | 备注 |
telinit 3 | systemctl isolate multi-user.target 或者 systemctl isolate runlevel3.target OR telinit 3 |
改变至多用户运行级别 |
sed s/^id:.*:initdefault:/id:3:initdefault:/ | ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target | 设置在下一次启动时使用多用户运行级别 |
sysvinit 和 systemd 电源管理命令对比表:翻译
sysvinit命令 | systemd命令 | 操做 |
reboot | systemctl reboot | 重启机器 |
halt -p | systemctl poweroff | 关机 |
echo standby > /sys/power/statc | systemctl suspend | 待机 |
echo platform > /sys/power/dist; echo dist > /sys/power/state 或者 echo shutdown > /sys/power/disk;echo dist > /sys/power/state |
systemctl hibernate | 休眠 |
systemctl hybrid-sleep | 混合休眠模式(同时休眠到硬盘并待机) |
关机命令不是每一个登陆用户在任何状况下均可以执行的,通常只有管理员才能够关机。debug
2. systemctl命令实例调试
2.1 systemctl的基本用法
systemctl——列出全部已加载的单元及其状态(单元是任务/服务的术语)。
systemctl list-units——列出全部单元。
systemctl start [NAME...]——启动(激活)一个或多个单元。
systemctl stop [NAME...]——中止(停用)一个或多个单元。
systemctl disable [NAME...]——禁用一个或多个单元文件。
systemctl list-unit-files——显示全部已安装的单元文件及其状态。
systemctl --failed——显示启动过程当中哪些单元出现故障。
systemctl --type=xxx——类型过滤器;类型多是:服务,挂载点,设备,套接字和启动目标。
systemctl enable debug-shell.service——启动TTY 9上的shell,用于调试。
切换运行级别,重启和关闭也用systemctl来处理:
systemctl isolate graphical.target——切换到运行级别5,X服务器在运行级别5运行。
systemctl isolate multi-user.target——切换到运行级别3和TTY,不带X图形界面。
systemctl reboot——关闭和重启系统。
systemctl poweroff——关闭系统。
除了用于切换运行级别的命令外,全部这些命令均可以用普通用户权限执行。
2.2 实例
例出全部已加载的单元及其状态:
systemctl
整个输出界面包括5列:
UNIT——显示服务名称
LOAD——显示该服务是否已经加载。
ACTIVE——显示高级单元是否已经激活
SUB——显示低级单元是否已经激活
DESCRIPTION——显示服务功能说明
显示httpd服务的详细信息:
systemctl status httpd.service
以httpd服务为例,启动:
systemctl start httpd.service
中止:
systemctl stop httpd.service
显示一个服务的相互依赖状况:
systemctl list-dependencies nfs-server.service
在开机时启动一个服务,如例:
systemctl enable foo.service
在开机时禁用一个服务,如例:
systemctl disable foo.service
检查一个服务是否已开机启用,如例:
systemctl is-enabled foo.service; echo $?
0表示已开机启用,1表示没有开机启用。在Fedora 17中,除了返回值外,相应的“enable”或"disable"也会显示到标准输出上。
示例,修改了httpd.service后,经过如下命令就能让系统使用新的设置:
systemctl daemon-reload systemctl restart httpd.service
示例,检查一个服务的运行状况,以docker例:
systemctl status docker.service
检查资源使用状况,包括CPU,内存,IO:
systemd-cgtop
这使咱们能更轻松地看出哪一个服务使用了多少内存,CPU等。
以树形递归形式显示选中的Linux控制组群结构层次:
systemd0cgls
显示服务之间的依赖关系,例如以下命令:
systemctl list-dependencies
杀死一个服务进程,使用以下命令,以httpd为例:
systemctl kill httpd
使用mask再也不加载服务单元或从新加载服务,以防火墙为例:
再也不加载防火墙服务:
systemctl mask firewalld.service
从新加载防火墙服务:
systemctl unmask firewalld.service