在openSuSE上使用systemctl管理系统服务

这是我在使用openSuSE过程中学习和使用systemd来管理系统的一些笔记。 首先那就让我们来先看看什么是systemd:

Systemd

Systemd是Linux下的一个程序,用来初始化系统。像SysV一样,其将会被Linux内核启动。 在opneSuSE上,systemd将会是系统进程号为1的进程,其负责初始化系统和启动系统服务。

openSuSE从12.3版本开始,用systemd作为默认的系统初始化程序代替了SysV。 想了解systemd和SysV的对于,可以参看这里

用sytemctl进行系统管理

systemd提供了systemctl命令来进行系统服务管理,其调用格式如下:

systemctl [通用选项] 子命令 [子命令选项]

在系统上管理服务

像SysV一样,通过子命令start|stop|restart等来管理服务:

systemctl start|stop|status|restart|reload|… <服务名>.service

如查看当前cron服务的状态:

# systemctl status cron.service cron.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/cron.service; enabled) Active: active (running) since Mon 2015-01-26 15:50:21 CST; 3 days ago Main PID: 1247 (cron) CGroup: /system.slice/cron.service └─1247 /usr/sbin/cron -n

systemctl支持一次操作多个服务,只要在子命令后添加多个服务名即可。

使用enable|disable来设置开启自动启动或者不启动一个服务:

systemctl enable|disable <服务名>.service

Systemd的启动目标

在SysV的启动系统上,用启动级别(runlevel)来表示系统的启动状态,已经哪些服务伴随这级别一起启动。 如 0 (关闭系统),3 (多用户带网络),5 (多用户带网络,显示图形用户界面)。

而在Systemd上,用目标(target)表示这个概念,如 graphical.target 提供了多用户带网,显示图像用户界面的启动目标,就相当与level 5。 systemd提供了很多内置的目标单元,可以用下面的命令查看:

# systemctl list-unit-files –type=target

为了和SysV兼容,system提供了如下的启动目标:

SysV的运行级别 Systemd的启动目标 描述
0 runlevel0.target, halt.target, poweroff.target 关闭系统
1,S runlevel1.target, rescue.target 单用户模式
2 runlevel2.target, multi-user.target 多用户无网络模式
3 runlevel3.target 多用户带网络模式
4 runlevel4.target 未定义
5 runlevel5.target, graphical.target 图形模式
6 runlevel6.target, reboot.target 重启

用systemctl来操作目标

同样可以使用systemctl来操作启动目标,如更改当前目标:

systemctl isolate <目标名>.target

这类似在SysV上使用telinit X到某个运行级别。 登录到默认目标:

systemctl default

获取当前激活的目标:

systemctl list-units –type=target

显示某个目标的依赖:

systemctl show -p “Requires” <目标名>.target systemctl show -p “Wants” <目标名>.target

可以使用下面的方式来修改默认的启动目标:

ln -sf /lib/systemd/system/<目标名>.target /etc/systemd/system/default.target

这里只是简单地介绍了下systemd在系统管理的一些基本用法,systemd还有很多的高级应用,比如自定目标等等。 想了解更多关于systemd,请参考如下链接:

http://www.freedesktop.org/wiki/Software/systemd http://0pointer.de/blog/projects

最后在给一个命令systemd-analyze plot,其可以生成系统服务启动时间的一个SVG图,如:

systemd-analyze plot > startup-time.svg

Startup-time