Systemctl是System control的缩写,是systemd最重要命令,systemd是 Linux 系统中负责初始化和管理服务的程序

1.   可用命令

通常systemctl都需要使用root权限,即加sudo;systemctl后面跟的服务文件即XXX.service一般在文件夹/etc/systemd/system/下面,个人用户文件常在 ~/.config/systemd/user/文件夹下

  • systemctl restart [xxx.service]: 重启服务
  • systemctl start [xxx.service]: 开启服务
  • systemctl status [xxx.service]:查看服务状态
  • systemctl reload [xxx.service]:重新加载服务的配置,且不重启,例如ssh,例如:
    1
    systemctl reload sshd
  • systemctl enable [xxx.service]:开机自启动,例如:
    1
    systemctl enable httpd.service
    下面简单说说其它的命令:  disable时取消引导时启用服务,is-enabled检查开机是否启动,list-units列出所有激活的单元,systemctl poweroff,reboot,hibernate相当于shutdown,之类的分别是关机、重启和休眠

2.XXX.service 文件的编写

一个 .service 文件需要按照 systemd 的配置文件格式来编写内容,这包括 [Unit][Service][Install] 三个部分:

  • [Unit] 部分:这部分包含了服务的描述信息(Description)、启动顺序(After、Before)、依赖关系(Requires)等信息。
  • [Service] 部分:这部分定义了服务的类型(Type),以及启动服务时要执行的命令(ExecStart)等信息。
  • [Install] 部分:这部分指定了服务的启用目标,例如 WantedBy=multi-user.target 表示该服务将在多用户模式下被激活。

TODO:ADD more instance and cases.

3.远程使用

1
systemctl status httpd -H root@192.168.0.12

-H选项,指定远程主机的用户名和密码,上述所有systemctl命令都可以用于通过systemctl命令本身管理远程主机。这将使用ssh与远程主机进行通信。

4.其它systemd命令

  • systemctl:这是 systemd 的核心命令,用于控制和管理 systemd 系统和服务管理器。它可以用来启动、停止、重启服务,以及检查服务的状态等。
  • journalctl:这个命令用于查询和显示系统的日志信息。它非常强大,可以按时间、优先级或其他标准过滤日志。
  • hostnamectl:此命令用于更改系统的主机名,也可以用来设置系统的各种配置,如时区、网络设置等。
  • timer:用于管理系统的定时器,可以创建、列出、删除或启用/禁用定时器。
  • target:用于管理 init 目标,可以通过它切换系统的运行级别。
  • startup-net:用于启动网络服务。
  • startup-tasks:用于启动任务服务。
  • bootchart:用于生成系统启动图表,帮助分析启动过程中的性能瓶颈。

参考:

使用Systemctl命令来管理系统服务 - 知乎 (zhihu.com)