Menu

目录

管理系统服务

systemd提供systemctl命令来运行、关闭、重启、显示、启用/禁用系统服务。

sysvinit命令和systemd命令

systemd提供systemctl命令与sysvinit命令的功能类似。当前版本中依然兼容service和chkconfig命令,相关说明如表 1,但建议用systemctl进行系统服务管理。

表 1 sysvinit命令和systemd命令的对照表

sysvinit命令

systemd命令

备注

service foo start

systemctl start foo.service

用来启动一个服务 (并不会重启现有的)。

service foo stop

systemctl stop foo.service

用来停止一个服务 (并不会重启现有的)。

service foo restart

systemctl restart foo.service

用来停止并启动一个服务。

service foo reload

systemctl reload foo.service

当支持时,重新装载配置文件而不中断等待操作。

service foo condrestart

systemctl condrestart foo.service

如果服务正在运行那么重启它。

service foo status

systemctl status foo.service

汇报服务是否正在运行。

chkconfig foo on

systemctl enable foo.service

在下次启动时或满足其他触发条件时设置服务为启用。

chkconfig foo off

systemctl disable foo.service

在下次启动时或满足其他触发条件时设置服务为禁用。

chkconfig foo

systemctl is-enabled foo.service

用来检查一个服务在当前环境下被配置为启用还是禁用。

chkconfig –list

systemctl list-unit-files –type=service

输出在各个运行级别下服务的启用和禁用情况。

chkconfig foo –list

ls /etc/systemd/system/*.wants/foo.service

用来列出该服务在哪些运行级别下启用和禁用。

chkconfig foo –add

systemctl daemon-reload

当您创建新服务文件或者变更设置时使用。

显示所有当前服务

如果您需要显示当前正在运行的服务,使用命令如下:

systemctl list-units --type service

如果您需要显示所有的服务(包括未运行的服务),需要添加-all参数,使用命令如下:

systemctl list-units --type service --all

例如显示当前正在运行的服务,命令如下:

$ systemctl list-units --type service
UNIT                           LOAD   ACTIVE SUB     DESCRIPTION
abrt-ccpp.service              loaded active exited  Install ABRT coredump hook
abrt-oops.service              loaded active running ABRT kernel log watcher
abrt-vmcore.service            loaded active exited  Harvest vmcores for ABRT
abrt-xorg.service              loaded active running ABRT Xorg log watcher
abrtd.service                  loaded active running ABRT Automated Bug Reporting Tool
...systemd-vconsole-setup.service loaded active exited  Setup Virtual Consoletog-pegasus.service            loaded active running OpenPegasus CIM Server

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

46 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'

显示服务状态

如果您需要显示某个服务的状态,可执行如下命令:

systemctl status name.service

相关状态显示参数说明如表2所示。

表 2 状态参数说明

参数

描述

Loaded

说明服务是否被加载,并显示服务对应的绝度路径以及是否启用。

Active

说明服务是否正在运行,并显示时间节点。

Main PID

相应的系统服务的PID值。

Status

相关系统服务的其他信息。

Process

相关进程的其他信息。

CGroup

相关控制组(CGroup)的其他信息。

如果您需要鉴别某个服务是否运行,可执行如下命令:

systemctl is-active name.service

同样,如果您需要判断某个服务是否被启用,可执行如下命令:

systemctl is-enabled name.service

例如查看gdm.service服务状态,命令如下:

# systemctl status gdm.service
gdm.service - GNOME Display Manager   Loaded: loaded (/usr/lib/systemd/system/gdm.service; enabled)   Active: active (running) since Thu 2013-10-17 17:31:23 CEST; 5min ago
 Main PID: 1029 (gdm)
   CGroup: /system.slice/gdm.service
           ├─1029 /usr/sbin/gdm
           ├─1037 /usr/libexec/gdm-simple-slave --display-id /org/gno...           └─1047 /usr/bin/Xorg :0 -background none -verbose -auth /r...Oct 17 17:31:23 localhost systemd[1]: Started GNOME Display Manager.

运行服务

如果您需要运行某个服务,请在root权限下执行如下命令:

systemctl start name.service

例如运行httpd服务,命令如下:

# systemctl start httpd.service

关闭服务

如果您需要关闭某个服务,请在root权限下执行如下命令:

systemctl stop name.service

例如关闭蓝牙服务,命令如下:

# systemctl stop bluetooth.service

重启服务

如果您需要重启某个服务,请在root权限下执行如下命令:

systemctl restart name.service

执行命令后,当前服务会被关闭,但马上重新启动。如果您指定的服务,当前处于关闭状态,执行命令后,服务也会被启动。

例如重启蓝牙服务,命令如下:

# systemctl restart bluetooth.service

启用服务

如果您需要在开机时启用某个服务,请在root权限下执行如下命令:

systemctl enable name.service

例如设置httpd服务开机时启动,命令如下:

# systemctl enable httpd.service
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'

禁用服务

如果您需要在开机时禁用某个服务,请在root权限下执行如下命令:

systemctl disable name.service

例如在开机时禁用蓝牙服务启动,命令如下:

# systemctl disable bluetooth.servicerm '/etc/systemd/system/dbus-org.bluez.service'rm '/etc/systemd/system/bluetooth.target.wants/bluetooth.service'