在 Debian 上使用 systemd 管理系统

在 Debian 上使用 systemd 管理系统

人类已经无法阻止 systemd 占领全世界的 Linux 系统了,唯一阻止它的方法是在你自己的机器上手动卸载它。到目前为止,systemd 已经创建了比任何软件都多的技术问题、感情问题和社会问题。这一点从“Linux 初始化软件之战”上就能看出,这场争论在 Debian 开发者之间持续了好几个月。当 Debian 技术委员会最终决定将 systemd 放到 Debian 8(代号 Jessie)的发行版里面时,其反对者试图通过多种努力来取代这项决议,甚至有人扬言要威胁那些支持 systemd 的开发者的生命安全。

这也说明了 systemd 对 Unix 传承下来的系统处理方式有很大的干扰。“一个软件只做一件事情”的哲学思想已经被这个新来者彻底颠覆。除了取代了 sysvinit 成为新的系统初始化工具外,systemd 还是一个系统管理工具。目前为止,由于 systemd-sysv 这个软件包提供的兼容性,那些我们使用惯了的工具还能继续工作。但是当 Debian 将 systemd 升级到214版本后,这种兼容性就不复存在了。升级措施预计会在 Debian 8 "Jessie" 的稳定分支上进行。从此以后用户必须使用新的命令来管理系统、执行任务、变换运行级别、查询系统日志等等。不过这里有一个应对方案,那就是在 .bashrc 文件里面添加一些别名。

现在就让我们来看看 systemd 是怎么改变你管理系统的习惯的。在使用 systemd 之前,你得先把 sysvinit 保存起来,以便在 systemd 出错的时候还能用 sysvinit 启动系统。这种方法只有在没安装 systemd-sysv 的情况下才能生效,具体操作方法如下:


  1. # cp -av /sbin/init /sbin/init.sysvinit

在紧急情况下,可以把下面的文本:


  1. init=/sbin/init.sysvinit

添加到内核启动参数项那里。

systemctl 的基本用法

systemctl 的功能是替代“/etc/init.d/foo start/stop”这类命令,另外,其实它还能做其他的事情,这点你可以参考 man 文档。

一些基本用法:

  • systemctl - 列出所有单元(UNIT)以及它们的状态(这里的 UNIT 指的就是系统上的 job 和 service)
  • systemctl list-units - 列出所有 UNIT
  • systemctl start [NAME...] - 启动一项或多项 UNIT
  • systemctl stop [NAME...] - 停止一项或多项 UNIT
  • systemctl disable [NAME...] - 将 UNIT 设置为开机不启动
  • systemctl list-unit-files - 列出所有已安装的 UNIT,以及它们的状态
  • systemctl --failed - 列出开机启动失败的 UNIT
  • systemctl --type=mount - 列出某种类型的 UNIT,类型包含:service, mount, device, socket, target
  • systemctl enable debug-shell.service - 将一个 shell 脚本设置为开机启动,用于调试

为了更方便处理这些 UNIT,你可以使用 systemd-ui 软件包,你只要输入 systemadm 命令就可以使用这个软件。

你同样可以使用 systemctl 实现转换运行级别、重启系统和关闭系统的功能:

  • systemctl isolate graphical.target - 切换到运行级别5,就是有桌面的运行级别
  • systemctl isolate multi-user.target - 切换到运行级别3,没有桌面的运行级别
  • systemctl reboot - 重启系统
  • systemctl poweroff - 关机

所有命令,包括切换到其他运行级别的命令,都可以在普通用户的权限下执行。

journalctl 的基本用法

systemd 不仅提供了比 sysvinit 更快的启动速度,还让日志系统在更早的时候启动起来,可以记录内核初始化阶段、内存初始化阶段、前期启动步骤以及主要的系统执行过程的日志。所以,以前那种需要通过对显示屏拍照或者暂停系统来调试程序的日子已经一去不复返啦。

systemd 的日志文件都被放在 /var/log 目录。如果你想使用它的日志功能,需要执行一些命令,因为 Debian 没有打开日志功能。命令如下:


  1. # addgroup --system systemd-journal
  2. # mkdir -p /var/log/journal
  3. # chown root:systemd-journal /var/log/journal
  4. # gpasswd -a $user systemd-journal

通过上面的设置,你就可以以普通用户权限使用 journal 软件查看日志。使用 journalctl 查询日志可以获得一些比 syslog 软件更方便的玩法:

  • journalctl --all - 显示系统上所有日志,以及它的用户
  • journalctl -f - 监视系统日志的变化(类似 tail -f /var/log/messages 的效果)
  • journalctl -b - 显示系统启动以后的日志
  • journalctl -k -b -1 - 显示上一次(-b -1)系统启动前产生的内核日志
  • journalctl -b -p err - 显示系统启动后产生的“ERROR”日志
  • journalctl --since=yesterday - 当系统不会经常重启的时候,这条命令能提供比 -b 更短的日志记录
  • journalctl -u cron.service --since='2014-07-06 07:00' --until='2014-07-06 08:23' - 显示 cron 服务在某个时间段内打印出来的日志
  • journalctl -p 2 --since=today - 显示优先级别为2以内的日志,包含 emerg、alert、crit三个级别。所有日志级别有: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), debug (7)
  • journalctl > yourlog.log - 将二进制日志文件复制成文本文件并保存到当前目录

Journal 和 syslog 可以很好的共存。而另一方面,一旦你习惯了操作 journal,你也可以卸载掉所有 syslog 的软件,比如 rsyslog 或 syslog-ng。

如果想要得到更详细的日志信息,你可以在内核启动参数上添加“systemd.log_level=debug”,然后运行下面的命令:


  1. # journalctl -alb

你也可以编辑 /etc/systemd/system.conf 文件来修改日志级别。

利用 systemd 分析系统启动过程

systemd 可以让你能更有效地分析和优化你的系统启动过程:

  • systemd-analyze - 显示本次启动系统过程中用户态和内核态所花的时间
  • systemd-analyze blame - 显示每个启动项所花费的时间明细
  • systemd-analyze critical-chain - 按时间顺序打印 UNIT 树
  • systemd-analyze dot | dot -Tsvg > systemd.svg - 为开机启动过程生成向量图(需要安装 graphviz 软件包)
  • systemd-analyze plot > bootplot.svg - 产生开机启动过程的时间图表

systemd 虽然是个年轻的项目,但已有大量文档。首先要介绍给你的是Lennart Poettering 的 0pointer 系列。这个系列非常详细,非常有技术含量。另外一个是免费桌面信息文档,它包含了最详细的关于 systemd 的链接:发行版特性文件、bug 跟踪系统和说明文档。你可以使用下面的命令来查询 systemd 都提供了哪些文档:


  1. # man systemd.index

不同发行版之间的 systemd 提供的命令基本一样,最大的不同之处就是打包方式。

原文发布时间:2014-10-11

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

时间: 2025-01-30 01:49:04

在 Debian 上使用 systemd 管理系统的相关文章

如何安装Debian的非systemd复刻版本Devuan Linux

Devuan Linux 是 Debian 最新的复刻版本,是基于 Debian 的一个被设计为完全去除了 systemd 的版本. Devuan 宣布于 2014 年底,并经过了一段活跃的开发.最新的发行版本是 beta2,发行代号为: Jessie (没错,和当前 Debian 的稳定版同名). 当前稳定版的最后发行据说会在 2017 年初.如果想了解关于该项目的更多信息,请访问社区官网:https://devuan.org/ . 本文将阐述 Devuan 当前发行版的安装.在 Debian

在Debian上设置USB网络打印机和扫描仪服务器

在Debian上设置USB网络打印机和扫描仪服务器 假定你想要在你的家庭/办公网络中设置一台Linux打印服务器,而你手头上却只有USB打印机可用(因为他们比那些有着内建网络接口或无线模块的打印机要便宜得多).此外,如果这些设备中有一台是一体化的,而你也想要通过网络共享其整合的扫描仪,这该怎么办?在本文中,我将介绍怎样安装并共享一台USB一体机(Epson CX3900喷墨打印机和扫描仪),一台USB激光打印机(Samsung ML-1640),以及作为锦上添花,配置一台PDF打印机.所有这一切

如何在Debian上安装配置ownCloud

如何在Debian上安装配置ownCloud 据其官方网站,ownCloud可以让你通过一个Web界面或者WebDAV访问你的文件.它还提供了一个平台,可以轻松地查看.编辑和同步您所有设备的通讯录.日历和书签.尽管ownCloud与广泛使用Dropbox非常相似,但主要区别在于ownCloud是免费的,开源的,从而可以自己的服务器上建立与Dropbox类似的云存储服务.使用ownCloud你可以完整地访问和控制您的私人数据,而对存储空间(除了硬盘容量)或客户端的连接数量没有限制. ownClou

如何安装 Debian 的非 systemd 复刻版本 Devuan Linux

Devuan Linux 是 Debian 最新的复刻版本,是基于 Debian 的一个被设计为完全去除了 systemd 的版本. Devuan 宣布于 2014 年底,并经过了一段活跃的开发.最新的发行版本是 beta2,发行代号为: Jessie (没错,和当前 Debian 的稳定版同名). 当前稳定版的最后发行据说会在 2017 年初.如果想了解关于该项目的更多信息,请访问社区官网:https://devuan.org/ . 本文将阐述 Devuan 当前发行版的安装.在 Debian

如何在Ubuntu,Linux Mint,Debian上禁用IPv6

如何在Ubuntu,Linux Mint,Debian上禁用IPv6 [编者注]都说IPv4地址枯竭了,要推广IPv6,但是迟迟不见动静,既然如此,在它完全就绪前,就不要让它来打扰我们的系统好了. IPv6 IPv6是寻址方案IPv4的下一个版本,被用来给域名分配数字地址. IPv6比IPv4支持更多的地址.然而,它还没有被广泛支持,还在被接受的过程中. 你的系统支持IPv6么? 为了支持IPv6,需要很多事情.首先你需要系统/操作系统支持IPv6.Ubuntu,Linux Mint,和大多是现

如何在 Ubuntu 上安装配置管理系统 Chef (大厨)

Chef是面对IT专业人员的一款配置管理和自动化工具,它可以配置和管理你的基础设施(设备),无论它在本地还是在云上.它可以用于加速应用部署并协调多个系统管理员和开发人员的工作,这包括可支持大量的客户群的成百上千的服务器和程序.chef最有用的是让基础设施变成代码.一旦你掌握了Chef,你可以获得自动化管理你的云端基础设施或者终端用户的一流的网络IT支持. 下面是我们将要在本篇中要设置和配置Chef的主要组件. 安装Chef的要求和版本 我们将在下面的基础环境下设置Chef配置管理系统. 管理和配

Ubuntu/Debian上安装Nginx+php环境

尽管Apache已经占据半片江山,但很多人仍然在寻找其他的方式去托管他们的站点,Apache不只是一个选择,其他很多优秀的服务器程序例如lighthttp和nginx也是不错的选择.本教程将要向您展现如何在Ubuntu操作系统上面安装,教程同样适用在Debian,尽管有一点点小差别,但并没有太大影响.怎么样,下面我们开始吧. 0.开始注意 为了完成教程中提到的操作,我们假设您已经安装了一个基本的Debian或者Ubuntu操作系统.怎么安装系统这是不同的教程了,这里就不再详细说明.本教程主要介绍

Debian上安装TightVNC Server

from:www.penlug.org/twiki/bin/view/Main/TightVNC     Using VNC   The tool vncserver allows you to run additional X servers on a single machine. These X servers don't display anywhere, but instead you need to connect to them using vncviewer. The addit

在Ubuntu/Debian上用Unison来同步文件

Unison是一款免费的.跨平台的文件同步工具:有了它,我们就能够将两套文件副本(实例)保存在两个不同的平台上,或保存在同一个系统的不同磁 盘上.不像简单的镜像方法或备份实用工具,Unison可以同时更新分布式目录结构的两个副本.它可以检测并显示有冲突的更新.而且不像分布式文件系 统,Unison是一款用户级程序:不需要改动内核,也没必要在任何一个主机上都要拥有根用户权限. Unison可在与互联网连接的任何一对机器之间使用,通过直接套接层链路或基于加密SSH连接的隧道进行联系.它谨慎使用网络带