在Debian上使用systemd工具对系统进行管理的方法

2020-02-03 13:20:36丽君

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

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

   
复制代码# cp -av /sbin/init /sbin/init.sysvinit

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

   
复制代码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 - 关机

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