如何使用 systemd 实现开机启动

在 Linux 系统中,systemd 是一个强大的初始化系统和服务管理器,广泛用于启动和管理系统服务。通过 systemd,我们可以非常方便地配置脚本和程序在系统启动时自动运行。本文将介绍如何使用 systemd 来实现开机启动。

1. 创建 systemd 服务文件

要使自定义命令或脚本在系统启动时自动执行,首先需要创建一个 systemd 服务单元文件。我们以执行以下命令为例:

nohup ./iptables-server -a :1086 -u admin -p xyidc123 > /dev/null 2>&1 &

假设该命令的文件路径为 /root/iptables-web/iptables-server

步骤 1:创建服务文件

首先,创建一个新的 systemd 服务文件。例如,我们将服务命名为 iptables-server.service

sudo nano /etc/systemd/system/iptables-server.service

步骤 2:编辑服务文件

在打开的文件中,添加以下内容:

[Unit]
Description=Start iptables server
After=network.target

[Service]
ExecStart=/root/iptables-web/iptables-server -a :1086 -u admin -p xyidc123
WorkingDirectory=/root/iptables-web
User=root
Restart=always

[Install]
WantedBy=multi-user.target
  • Description:服务的描述,可以自定义。
  • After=network.target:确保该服务在网络服务启动后执行。
  • ExecStart:指定要执行的命令及其参数。
  • WorkingDirectory:设置命令执行的工作目录。
  • User=root:指定以 root 用户身份运行该命令。
  • Restart=always:确保服务在意外停止后会重新启动。
  • WantedBy=multi-user.target:表示该服务将会在系统启动时自动启动。

步骤 3:保存并退出

编辑完成后,按 Ctrl+O 保存文件,按 Ctrl+X 退出编辑器。

2. 重新加载 systemd 配置

服务文件创建完成后,我们需要告诉 systemd 重新加载服务配置。

sudo systemctl daemon-reload

这条命令会重新加载所有服务文件,包括刚才我们创建的 iptables-server.service 文件。

3. 启动服务

接下来,我们可以手动启动服务来确认它是否能够正常运行。

sudo systemctl start iptables-server.service

您可以使用以下命令来检查服务是否正在运行:

sudo systemctl status iptables-server.service

如果服务启动正常,您应该能看到类似如下的输出:

● iptables-server.service - Start iptables server
   Loaded: loaded (/etc/systemd/system/iptables-server.service; disabled; vendor preset: enabled)
   Active: active (running) since Sat 2024-12-09 10:24:10 UTC; 1min ago
   ...

4. 设置开机自启

如果服务可以正常启动,并且您希望它在每次系统启动时自动运行,可以通过以下命令启用该服务:

sudo systemctl enable iptables-server.service

该命令会创建必要的符号链接,使服务在系统启动时自动启动。

步骤 5:重启系统测试

为确保设置生效,您可以重启计算机并确认服务是否会在启动时自动运行。

sudo reboot

重启后,您可以使用以下命令检查服务状态:

sudo systemctl status iptables-server.service

如果服务在启动时成功运行,您会看到服务的状态是 active (running)

5. 总结

通过使用 systemd,我们可以非常方便地将脚本和命令设置为开机自动启动。只需创建一个自定义的服务单元文件,配置启动命令,重新加载 systemd,并启用服务,就能确保它在每次系统启动时都自动执行。

使用 systemd 配置开机启动不仅可以节省手动执行命令的时间,还能提高系统的自动化管理能力。

最后修改:2024 年 12 月 09 日
赞赏必须赞赏,多多益善,老板一直发大财!