Linux服务管理之系统管理员需要掌握的命令

systemd的主要命令行工具是systemctl。大多数Linux系统管理员应该都已经非常熟悉系统服务和init系统管理,比如service,chkconfig和telinit命令的使用。systemd也完成同样的管理任务,只是命令工具systemctl的语法有所不同而已。

1. sysvinit和systemd的命令对比列表

下表帮助系统管理员了解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=service


ls /lib/systemd/system/*.service
/etc/systemd/system/*.service

用来列出可以启动或停止的服务列表
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。

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
混合休眠模式(同时休眠到硬盘并待机)

关机命令不是每个登录用户在任何情况下都可以执行的,一般只有管理员才可以关机。

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

Linux服务管理之系统管理员需要掌握的命令_第1张图片

整个输出界面包括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

Linux服务管理之系统管理员需要掌握的命令_第2张图片

检查资源使用情况,包括CPU,内存,IO:

systemd-cgtop

Linux服务管理之系统管理员需要掌握的命令_第3张图片

这使我们能更轻松地看出哪个服务使用了多少内存,CPU等。

以树形递归形式显示选中的Linux控制组群结构层次:

systemd0cgls

Linux服务管理之系统管理员需要掌握的命令_第4张图片

显示服务之间的依赖关系,例如如下命令:

systemctl list-dependencies

Linux服务管理之系统管理员需要掌握的命令_第5张图片

杀死一个服务进程,使用如下命令,以httpd为例:

systemctl kill httpd

使用mask不再加载服务单元或重新加载服务,以防火墙为例:

不再加载防火墙服务

systemctl mask firewalld.service

重新加载防火墙服务

systemctl unmask firewalld.service


你可能感兴趣的:(Linux服务管理之系统管理员需要掌握的命令)