如何在Debian上使用systemd管理系统
发布网友
发布时间:2022-04-23 20:02
我来回答
共1个回答
热心网友
时间:2023-10-08 13:33
转载 现在就让我们来看看 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-journal2.# mkdir -p /var/log/journal3.# chown root:systemd-journal /var/log/journal4.# 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 提供的命令基本一样,最大的不同之处就是打包方式。