systemd命令管理linux系统

转自:真的超赞!用systemd命令来管理linux系统! (szrlee)

Systemd是一种新的linux系统服务管理器。

它替换了init系统,能够管理系统的启动过程和一些系统服务,一旦启动起来,就将监管整个系统。在本文中,我们用的是安装有 systemd 216 版本的centos 7.0,其最新版本可以从 freedesktop.org 下载得到。

因为linux操作系统里出现的这一个新人,PID 1被“systemd”占据了,这能通过pstree命令看到。

 
  
  1. [root@linoxide ~]# pstree

那么现在让我们来探索systemd擅长什么,它又有多大的可能性成为sysVinit的新的替代品。

1. 更快启动

sysvinit一次一个串行地启动进程。

而Systemd则并行地启动系统服务进程,并且最初仅启动确实被依赖的那些服务,极大地减少了系统引导的时间。

你可以用下面的命令看到系统引导用时:

 
  
  1. [root@linoxide ~]# systemd-analyze

使用 time 参数也能够显示同样的内容。

 
  
  1. [root@linoxide ~]# systemd-analyze time

如果你想以进程初始化所占用时间排序打印出所有正在运行的单元列表,那么systemd-analyze命令可以帮助你完成这个任务。

 
  
  1. [root@linoxide ~]# systemd-analyze blame

上面的截屏只显示了小部分进程,你可以就像less分页器那样用箭头滚动列表。

2. systemctl 命令

systemctl命令是自systemd出现以来被广泛讨论的命令。你可以通过这个命令管理你的整个系统,让我们通过探究这个命令来更进一步。

2.1 列出单元

systemctl命令可以带上list-units,也可以什么选项都不带来列出所有正在运行的单元。

 
  
  1. [root@linoxide ~]# systemctl

 
  
  1. [root@linoxide ~]# systemctl list-units

2.2 列出失败的单元

运行失败的单元可以用带--failed选项的命令显示出来。

 
  
  1. [root@linoxide ~]# systemctl --failed

你可以在这篇文章很多地方看到systemctl的用法。

3. 管理服务

让我们来看看systemd是怎么管理系统服务的。

3.1 激活的服务

所有被激活的服务可以同下面这条命令来查看。

 
  
  1. [root@linoxide ~]# systemctl list-units -t service

3.2 服务状态

在sysvinit中,我们可以用“service”命令来管理服务,但在systemd中,我们用systemctl这个命令。 我们可以用下面这个命令来查看服务是否在运行。

 
  
  1. [root@linoxide ~]# systemctl status dnsmasq

3.3 启动一个服务

用下面这条命令来启动服务。

 
  
  1. [root@linoxide ~]# systemctl start dnsmasq

对应于service命令,这个命令不进行输出。但是毋庸置疑,我们可以通过再次查看这个刚刚被启动的服务的status(状态)来确认他是否被成功地启动了。

3.4 停止一个服务

现在聪明的你一定知道怎么在systemd下用命令来关闭服务了吧。

 
  
  1. [root@linoxide ~]# systemctl stop dnsmasq

3.5 重启一个服务

类似的,重启系统服务是用‘systemctl restart’来管理的。

 
  
  1. [root@linoxide ~]# systemctl restart dnsmasq

3.6 重新加载一个服务

在我们需要重新加载服务的配置文件又不想重启这个服务(例如ssh)时,我们可以用这个命令。

 
  
  1. [root@linoxide ~]# systemctl reload sshd

虽然上述几个命令的语法是可以工作的,但是官方文档建议我们用下面这种语法形式来运行命令(LCTT 译注,即使用在服务名后面跟上“.service”的完整名称):

 
  
  1. [root@linoxide ~]# systemctl status dnsmasq.service

4. 管理引导时的服务

chkconfig命令被用来管理系统引导时的服务。同样用systemd也可以管理引导时的系统服务。

4.1 检查服务引导时是否运行

这条命令用来确定服务是否是引导时启动的。

 
  
  1. [root@linoxide ~]# systemctl is-enabled dnsmasq.service

4.2 让服务在引导时运行

systemctl命令是这样来enable(使之在引导时启动)一个服务的。(这相当于sysvinit中的‘chkconfig on’)

 
  
  1. [root@linoxide ~]# systemctl enable dnsmasq.service

4.3 取消服务在引导时运行

类似的,使服务不在引导时启动用这个命令。

 
  
  1. [root@linoxide ~]# systemctl disable dnsmasq.service

你可能感兴趣的:(Linux)