systemctl是一个在基于 systemd 的 Linux 系统中用于控制 systemd 系统和服务管理器的命令行工具。systemd 是一个系统和服务管理器,它提供了系统启动、服务管理、日志记录等一系列功能。systemctl命令是与 systemd 进行交互的主要方式,它非常强大且功能丰富。

1. 管理服务(Unit)

1.1 启动服务:

sudo systemctl start [服务名称]

例如,启动httpd服务(假设已安装):

sudo systemctl start httpd

1.2 停止服务:

sudo systemctl stop [服务名称]

例如,停止httpd服务:

sudo systemctl stop httpd

1.3 重启服务:

sudo systemctl restart [服务名称]

例如,重启httpd服务,常用于在修改服务配置文件后使其生效:

sudo systemctl restart httpd

1.4 重新加载服务配置:

sudo systemctl reload [服务名称]

此命令在不重启服务的情况下重新加载服务的配置文件,适用于某些服务可以在运行时重新加载配置而无需完全重启的情况,如nginx:

sudo systemctl reload nginx

1.5 查看服务状态:

sudo systemctl status [服务名称]

该命令显示服务当前的运行状态,包括是否正在运行、启动时间、最近一次启动或停止的结果等信息。例如查看vsftpd服务状态:

sudo systemctl status vsftpd

输出类似如下内容:

● vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2024 - 01 - 01 10:00:00 UTC; 1h ago
  Process: 1234 ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf (code = exited, status = 0/SUCCESS)
 Main PID: 1234 (vsftpd)
    Tasks: 1 (limit: 4915)
   Memory: 1.2M
   CGroup: /system.slice/vsftpd.service
           └─1234 /usr/sbin/vsftpd /etc/vsftpd.conf

其中 “Active: active (running)” 表明服务正在运行。

2. 服务开机自启管理

2.1 设置服务开机自启:

sudo systemctl enable [服务名称]

例如,设置httpd服务开机自启:

sudo systemctl enable httpd

执行后会创建或修改符号链接,将服务单元文件链接到系统启动相关的目录。

2.2 取消服务开机自启:

sudo systemctl disable [服务名称]

例如,取消httpd服务开机自启:

sudo systemctl disable httpd

此命令会删除相关的符号链接,使服务在系统启动时不再自动启动。

2.3 查看服务是否开机自启:

sudo systemctl is - enabled [服务名称]

例如,查看httpd服务是否开机自启,若输出为enabled则表示开机自启,若为disabled则表示未设置开机自启:

sudo systemctl is - enabled httpd

3. 系统管理相关

3.1 启动进入指定运行级别(target):

运行级别在 systemd 中被称为 target。例如,要启动到图形化界面(通常是graphical.target):

sudo systemctl start graphical.target

若要启动到多用户文本界面(multi - user.target):

sudo systemctl start multi - user.target

3.2 查看当前运行级别(target):

systemctl get - default

输出结果会显示当前默认的启动目标,例如graphical.target或multi - user.target。

3.3 设置默认运行级别(target):

例如,将默认运行级别设置为多用户文本界面:

sudo systemctl set - default multi - user.target

若要恢复为图形化界面为默认:

sudo systemctl set - default graphical.target

3.4 重启系统:

sudo systemctl reboot

3.5 关闭系统:

sudo systemctl poweroff

3.6 挂起系统(进入睡眠状态):

sudo systemctl suspend

3.7 使系统进入休眠状态:

sudo systemctl hibernate

4. 管理服务依赖关系

4.1 查看服务依赖关系:

sudo systemctl list - dependencies [服务名称]

例如,查看httpd服务的依赖关系,会显示该服务所依赖的其他服务以及依赖它的服务:

sudo systemctl list - dependencies httpd