Administrator
发布于 2025-01-26 / 10 阅读
0

systemctl基本使用指南

1. 开启服务

sudo systemctl start [服务名称]

2. 关闭服务

sudo systemctl stop [服务名称]

3. 禁止开机自启动

禁止服务开机自启动

sudo systemctl disable [服务名称]

4. 允许开机自启动

允许服务开机自启动

sudo systemctl enable [服务名称]

5. 编写一个开机自启动的脚本示例

要创建一个开机自启动的脚本,你需要:

  1. 编写脚本文件,例如 /usr/local/bin/my-startup-script.sh

  2. 使脚本可执行:chmod +x /usr/local/bin/my-startup-script.sh

  3. 创建一个 systemd 服务文件,例如 /usr/lib/systemd/system/my-startup-service.service,内容如下:

[Unit]
Description=My custom startup script

[Service]
Type=simple
ExecStart=/usr/local/bin/my-startup-script.sh

[Install]
WantedBy=multi-user.target
  1. 重新加载 systemd,使新的服务文件生效:

sudo systemctl daemon-reload
  1. 启用服务,使其开机自启动:

sudo systemctl enable my-startup-service
  1. 现在,你的脚本将在系统启动时自动执行。

通过掌握 systemctl 的基本使用,你可以轻松管理服务,定制系统的启动行为。

具体示例

编写Nginx开机自启动的脚本示例

新建配置

vim /usr/lib/systemd/system/nginx.service

写入配置

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/home/work/nginx/sbin/nginx
ExecReload=/home/work/nginx/sbin/nginx -s reload
ExecStop=/home/work/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

这是一个 systemd 单元文件(nginx.service),用于管理 nginx 服务。它包含了三部分:[Unit][Service][Install],下面是各部分的作用:

[Unit]

  • Description=nginx: 描述服务的名称或功能,这里是 nginx

  • After=network.target: 指定此服务应该在 network.target 之后启动,意味着网络服务已经启动,网络相关的操作可以正常进行。network.target 是 systemd 中的一个目标,它表示网络服务已准备好。

[Service]

  • Type=forking: 指定服务类型为 forking,表示 nginx 在启动时会派生一个子进程(通常是主进程会退出,而新的子进程继续运行)。这告诉 systemd 如何跟踪服务的启动过程。

  • ExecStart=/home/work/nginx/sbin/nginx: 指定启动 nginx 服务时执行的命令,这里是启动 /home/work/nginx/sbin/nginx

  • ExecReload=/home/work/nginx/sbin/nginx -s reload: 指定重新加载 nginx 配置时执行的命令,这里是发送 reload 信号给 nginx,使其重新加载配置文件而无需完全重启。

  • ExecStop=/home/work/local/nginx/sbin/nginx -s quit: 指定停止 nginx 服务时执行的命令,这里是发送 quit 信号给 nginx,使其优雅地停止服务。

  • PrivateTmp=true: 设置为 true 表示该服务会使用私有的临时目录(/tmp),而不会共享系统全局的临时目录。这样可以增强服务的安全性,避免服务之间的数据冲突或安全问题。

[Install]

  • WantedBy=multi-user.target: 指定该服务应该在 multi-user.target(多用户运行级别)时自动启动。multi-user.target 是 systemd 中的一个目标,表示系统已进入多用户模式,相当于传统的 runlevel 3(文本模式下的多用户环境)。

总结

这个 systemd 单元文件定义了如何启动、重新加载和停止 nginx 服务。它指定了 nginx 进程的位置、如何优雅地停止以及在启动时所依赖的系统状态。通过这个配置,systemd 可以管理 nginx 服务的生命周期,在系统启动时自动启动 nginx,并在需要时重新加载或停止它。

使配置生效

sudo systemctl daemon-reload
sudo systemctl enable nginx