真的超赞!用systemd命令来管理linux系统!

真的超赞!用systemd命令来管理linux系统!

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

5. 管理远程系统

所有刚才提到的systemctl命令通常都能被用来管理远程主机,完成这个任务将用到ssh来进行通讯。你只需要像这样将远程主机和用户名添加到systemctl命令后。


  1. [root@linoxide ~]# systemctl status sshd -H root@1.2.3.4

6. 管理目标

Systemd有一个完成与sysVinit的runlevels相似任务的构想。

sysVinit的runlevels大多是以数字分级的。这里是runlevers在systemd中的对应元素。

0 runlevel0.target, poweroff.target

1, s, single runlevel1.target, rescue.target

2, 4 runlevel2.target, runlevel4.target, multi-user.target

3 runlevel3.target, multi-user.target

5 runlevel5.target, graphical.target

6 runlevel6.target, reboot.target

emergency emergency.target

6.1 改变当前目标

当前target可以用这个命令切换。


  1. [root@linoxide ~]# systemctl isolate graphical.target

6.2 列出当前目标

如果你想查看你正处于哪个target中,你需要列出相应的单元。虽然这样操作可能让你不太爽,但是这就是systemd工作的方式。


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

你可以看到“graphical.target”列在此处,这就是我们刚才切换到的目标。现在,让我们切换runlevel到multi-user.target,然后分析下列命令的输出。


  1. [root@linoxide ~]# systemctl isolate multi-user.target
  2. [root@linoxide ~]# systemctl list-units --type=target

6.3 列出默认目标

用这个systemctl命令来查看默认目标。


  1. [root@linoxide ~]# systemctl get-default

6.4 改变默认目标

通过systemctl的set-default命令可以将某个目标设置成默认目标。


  1. [root@linoxide ~]# systemctl set-default graphical.target

7. 记录 systemd 的日志

journald是systemd独有的日志系统,替换了sysVinit中的syslog守护进程。命令journalctl用来读取日志。


  1. [root@linoxide ~]# journalctl

7.1 查看引导信息

运行journalctl -b命令来查看所有引导日志。


  1. [root@linoxide ~]# journalctl -b

7.2 即时显示引导日志

下面这个命令可以实时显示系统日志(类似tail -f)。


  1. [root@linoxide ~]# journalctl -f

7.3 查看特定服务的日志

你可以像这样运用journalctl来查看你只想看到的服务或可执行程序的日志。


  1. [root@linoxide ~]# journalctl /usr/sbin/dnsmasq

8. 电源管理

systemctl命令也可以用来关机,重启或者休眠。

要关机、重启、挂起和休眠,分别使用如下命令:


  1. [root@linoxide ~]# systemctl poweroff
  2. [root@linoxide ~]# systemctl reboot
  3. [root@linoxide ~]# systemctl suspend
  4. [root@linoxide ~]# systemctl hibernate

9. 又及

systemd带来了一整套与操作系统交互的新途径,并且极具特色。举个栗子,你可以用hostnamectl命令来获得你的linux机器的hostname和其它有用的独特信息。


  1. [root@linoxide ~]# hostnamectl

原文发布时间:2014-09-12

本文来自云栖合作伙伴“linux中国”

时间: 2024-10-22 13:27:39

真的超赞!用systemd命令来管理linux系统!的相关文章

如何在 systemd 下管理Linux系统的时间和日期

如何在 systemd 下管理Linux系统的时间和日期 timedatectl是用来查询和修改系统时间和配置的Linux应用程序.它是systemd 系统服务管理的一部分,并且允许你检查和修改系统时钟的配置. 在这篇文章中,我们将涉及该小巧但十分重要应用程序的所有方面. 系统当前的时间状态 想要查看系统当前日期/时间,以及可使用不带任何参数的命令查看当前系统时间配置,可以这样: # timedatectl 输入的结果就像这样: 修改日期 想要修改系统日期,你可以简单地使用timedatectl

如何高效地管理Linux系统中的软件

随着Linux开源系统平台的不断发展,越来越多的开源软件可以提供给Linuxhttp://www.aliyun.com/zixun/aggregation/6579.html">用户使用,这样,也使得更多的文件"吞噬"着硬盘空间.作为一种优秀的开源操作系统,如何高效地管理系统中的软件是一个很重要的问题.因此Linux提供了多种方法,用户可以根据实际情况方便地对软件进行管理.比如,它提供了对文件打包的功能,用户可以使用其将若干文件或目录打成一个软件包:同时,它也提供了多种

Linux 命令 “Uptimed” 记录 Linux 系统的 uptime

Uptimed 堪称 uptime 命令的守护程序版本,利用它你可以将 Linux 系统每次的 uptime 记录起来,并根据时间长短进行排名. 以下为在我的 Funtoo 上安装 Uptimed 后并执行 uprecords 的结果: # Uptime | System Boot up ----------------------------+--------------------------------------------------- 1 10 days, 04:46:13 | Li

vnc server配置、启动、重启与连接,图形管理linux系统

环境:RedHat Linux 5企业版.Xwindows:gnome (红帽默认安装的图形界面) 尽管我们可以使用SSH连接远程通过字符界面来操作Linux,但是对于更多熟悉图形人来说是很不方便的,因此开启Linux的远程桌面还是很有必要的.目前有两种比较流行的方式:XDM(X display manager)方案和VNC方案,而我个人比较倾向于VNC方案,一是因为VNC方案配置起来相对比较容易,二是VNC方案支持多种连接方式,比如通过浏览器访问Linux桌面,免去需要安装客户端的麻烦. 接下

Linux系统中的进程管理简介

在Linux系统里,当前正在运行的程序实例称为进程.比如,当你启动Apache的时候,系统会为它分配一个进程ID.然后就可以用这个ID监视和控制这个程序. 进程监视和控制是任何Linux系统管理员的核心任务.一个管理员可以终止("kill").重启一个进程,甚至可以为它指定一个不同的优先级.标准的Linux命令"ps"和"top"通常用于查看当前的进程列表.下面我来说明如何用这些命令和其它命令来管理Linux系统中的进程. 用ps监视进程 一个监

跨平台PowerShell如何远程管理Linux/Mac/Windows?

 跨平台PowerShell如何远程管理Linux/Mac/Windows? 首先,在要管理的机器上安装跨平台PowerShell:https://github.com/PowerShell/PowerShell/releases 如何安装呢?看Instructions: Platform Downloads How to Install Windows 10 / Server 2016 .msi Instructions Windows 8.1 / Server 2012 R2 .msi

Linux swapon命令详解 Linux swapon命令怎么用

Linux swapon命令用于激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存. 语法 /sbin/swapon -a [-v] /sbin/swapon [-v] [-p priority] specialfile ... /sbin/swapon [-s] 参数说明: -h 请帮帮我 -V 显示版本讯息 -s 显示简短的装置讯息 -a 自动启动所有SWAP装置 -p 设定优先权,你可以在0到32767中间选一个数字给他.或是在 /etc/fstab 里面加

在Linux系统中使用tar命令压缩和解压文件的教程

  linux中的tar命令 tar(磁带归档)命令是linux系统中被经常用来将文件存入到一个归档文件中的命令. 其常见的文件扩展包括:.tar.gz 和 .tar.bz2, 分别表示通过了gzip或bzip算法进一步进行了压缩. 在本教程中我们会管中窥豹一下在linux桌面或服务器版本中使用tar命令来处理一些创建和解压归档文件的日常工作的例子. 使用tar命令 tar命令在大部分linux系统默认情况下都是可用的,所以你不用单独安装该软件. tar命令具有两个压缩格式,gzip和bzip,

Linux 系统下查看硬件信息命令大全

Linux 系统下查看硬件信息命令大全 有许多命令可以用来查看 Linux 系统上的硬件信息.有些命令只能够打印出像 CPU 和内存这一特定的硬件组件信息,另外一些命令可以查看多种硬件组件的信息. 这个教程可以带大家快速了解一下查看各种硬件设备的信息和配置详情的最常用的命令. lscpu lscpu命令能够查看 CPU 和处理单元的信息.该命令没有任何其他选项或者别的功能. lscpu 运行该命令会看到下面输出: lspci lspci是另一个命令行工具,可以用来列出所有的 PCI 总线,还有与