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

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


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。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
相关文章
相关标签/搜索