简单介绍systemctl命令

systemctl命令是Linux系统管理工具systemd的主要命令之一,用于管理系统服务。许多现代Linux发行版,如Ubuntu、Debian、Fedora、Linux Mint、OpenSuSE、Redhat都采用systemd作为默认的init系统。systemctl可以控制系统的启动、停止、重启、关闭、查看状态等操作。

下面是一些常用的systemctl命令及其说明:

systemctl start <service> # 启动指定的服务。
systemctl stop <service> # 停止指定的服务。
systemctl restart <service> # 重启指定的服务。
systemctl enable <service> # 设置指定的服务在系统启动时自动启动。
systemctl disable <service> # 设置指定的服务在系统启动时不自动启动。
systemctl status <service> # 查看指定服务的状态。
systemctl is-active <service> # 检查指定服务是否正在运行。
systemctl is-enabled <service> # 检查指定服务是否设置为自动启动。
systemctl is-failed <service> # 检查指定服务是否启动失败。
systemctl list-units # 列出所有的系统服务和其状态。

与以前老版本的service命令相反,如:service <服务名> statrt,systemctl的命令格式systemctl start <服务名>。 为除了上述常用命令外,systemctl还支持其他一些命令和选项,可以通过man systemctl命令查看systemctl的完整文档和用法。

总结一下,systemctl是Linux系统中用于管理系统服务的命令,通过它可以方便地控制服务的启动、停止、重启等操作,并查看服务的运行状态。

以下是一些常见的systemctl命令使用示例:

启动、停止、重启、重新加载配置

启动服务使用start参数,例如要启动firewalld的服务,命令就是 systemctl start firewalld

如果是要停止已经启动的服务,就是stop,还是以firewalld为例,命令为 systemctl stop firewalld

同样的道理,如果是重启服务的话,就是用restart,systemctl restart firewalld

重新加载又是什么意思恩,就是你修改了比如ssh的配置,但是你又不想重启,就可以用reload来重新加载服务配置,systemctl reload sshd

查看指定服务的状态

如果想要查看指定服务的状态,可以使用 systemctl status <服务名> ,状态情况看输出结果的 Active 后面的内容。

下面列举几个常见的状态:

  • active(running):服务正在执行中
  • active(exited):仅执行一次就正常结束,当前并没有在系统中执行。
  • active(waiting):服务正在执行当中,不过还再等待其他的事件才能继续处理。
  • inactive(dead):服务没有运行。

下图就是查看了firewalld服务,该服务是没有运行的状态

查看服务状态

nginx的服务状态为运行中

nginx运行状态

除了status可以查看服务的状态,还有以下的几种

  • is-active查看服务是否正在运行,下面的执行结果就是shhd服务现在正在运行

sshd服务正在运行

  • is-enabled是用来查看服务没有配置为systemd支持的开机自启动。下图的输出结果说明了,firewalld服务没有配置为开机自启动。

firewalld服务没有开机自运行

  • is-failed是检测服务是否启动失败的命令。(截图待候补)

服务添加或删除开机自启动行为

上面有提到查看服务是否为开机自启动,而enable和disable这两个命令就分别为添加和删除引导时服务自启动的命令。 同样还是以firewalld服务为例,

systemctl enable firewalld # 添加自启动
systemctl disable firewalld # 删除自启动

下面的图是创建和删除服务的输出结果,可以看到,创建服务自启动是,会把相关的服务配置文件创建一个软链到/usr/lib/systemd/system目录中,而删除则是在该目录中移除对应的服务配置文件的软链。有兴趣的朋友可以自己去这个目录里面查看。

创建和删除自启动项

列出所有的服务

要列出所有的服务,可以使用list-units参数,完整的命令为systemctl list-units,运行结果如下图中所示的一样

查看所有服务及其状态