如何在 Debian 11 中启动时运行脚本如何在 Debian 11 中启动时运行脚本如何在 Debian 11 中启动时运行脚本如何在 Debian 11 中启动时运行脚本
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Debian 11 中启动时运行脚本

本教程介绍了如何在 Debian 11 和基于 Linux 的发行版中启动或启动时运行脚本或服务。

要在 Debian 11 上启动时正确添加服务和脚本,您需要创建 Systemd 单元。本教程重点介绍 Systemd 单元,如果您正在寻找在启动时运行脚本的快速说明,请直接跳至创建 Systemd 单元以在启动时运行脚本部分。

什么是 Systemd 单元?

Systemd 单元是包含正确管理或执行某些系统文件的信息的配置文件。 Systemd 单元可用于管理服务、套接字、设备、挂载点、自动挂载点、交换文件或分区、启动目标、监视的文件系统路径、由 systemd 控制和监督的计时器、资源管理片或组外部创建的流程。

Systemd 单元位于目录 /etc/systemd/system 下。任何想要在启动时使用 Systemd 单元运行的脚本都必须在此目录下的文件(单元)中指定。使用 ls 命令快速查看将向我们显示系统中现有的 systemd 单元。

ls /etc/systemd/system

上面的屏幕截图中未包含的文件之一是 tomcat.service,其内容如下图所示。

注意:以下信息供您熟悉单元配置文件。不用担心,您将创建的用于运行脚本的单元会更简单。

其中 [Unit] 指令:

描述:该指令允许您为单元添加描述,在这里您可以设置要识别的单元名称。

想要:在这里,您可以指定单元依赖关系。请注意,针对类似目的有不同的指令。例如,指令Requires用于指定严格的依赖关系,没有它该单元就无法工作。与 Requires 相反,Wants 用于指定依赖关系,没有这些依赖关系单元也可以继续工作。

之后:当前单元将在此指令中指定的单元之后开始。

[服务]部分指令:

类型:在前面的示例中,分叉表示应终止服务,同时保留必须分配 PID 的子进程。

环境:在这里,您可以指定单位环境变量。

ExecStart:该指令允许您指定要执行的路径和命令。

ExecStop:您可以指定用于停止设备的命令。

SuccessExitStatus:该指令允许您指定退出状态和信号。

用户:您可以指定该单位的用户所有者。

群组:您可以指定该单位的群组所有者。

UMask:您可以指定用户掩码。

RestartSec:如果设备自动重新启动,您可以在此处指定等待重试重新启动服务的时间。

重新启动:您可以为 Systemd 定义何时重新启动设备。可用选项有始终、失败时、中止时、成功时、看门狗时和异常时。

上例中的 [Install] 指令是 WantedBy。

WantedBy:该指令允许您将单位定义为依赖项;它类似于 Wants 指令,但指定当前单元是否被另一个单元视为依赖项。

[Unit] 部分中未包含在上一个屏幕截图中的其他常见指令:

需要:在此指令中,您可以指定依赖项以防止启动失败。与 Wants 指令相反,如果未满足指令 Requires 指定的依赖关系,则该单元将无法工作。

在[服务]部分:

PIDFile:forking指令需要PIDFile指令,其中包含子进程的文件pid的路径,以便Systemd识别它。

StartLimitInterval:表示设备有 60 秒的时间可以尝试 10 次失败后重新启动。

StartLimitBurst:该指令指示尝试次数限制,在前面的示例中,60 秒内尝试 10 次。

有关 Systemd 单元的更多信息,您可以阅读:https://manpages.debian.org/jessie/systemd/systemd.unit.5.en.html。

创建一个 Systemd 单元以在 Debian 11 上启动时运行脚本

与之前用于显示单元公共内容的 tomcat.service 文件相比,在启动时运行脚本可能更简单,并且包含更少的配置。

如前所述,包含启动时运行的脚本信息的文件(单元)位于目录 /etc/systemd/system 中。要定义启动时运行的脚本,您需要为此脚本创建一个新单元。要在/etc/systemd/system下创建一个单元,可以使用nano,如下例所示,其中我创建了一个名为script.service的单元,您可以按照您认为方便识别脚本的方式命名。

sudo nano /etc/systemd/system/script.service

脚本单元的内容将比前面用作示例的 tomcat.service 更简单。

将以下代码复制并粘贴到您在 /etc/systemd/system 下创建的文件中。

注意:将<此处的脚本名称>替换为您的脚本名称,将替换为您的脚本的路径脚本。

[Unit]

Description=Your Script Name here

After=default.target

[Service]

ExecStart=/PATH/TO/Script.sh

[Install]

WantedBy=default.target

将内容复制到 /etc/systemd/system/ 下的文件中后,需要使用 systemctl 命令启用它,如下所示。将 替换为您分配给该单元的正确名称。

现在您的脚本已准备好在 Debian 11 中启动时运行。

结论

如您所见,使用 Systemd 在 Debian 11 中启动时运行脚本非常简单。任何 Linux 用户级别都可以通过在units 目录中创建一个简单的文件来完成此任务。当然,Linux 提供了本教程中未描述的其他方法来在启动时运行脚本,例如 Cron。任何 Linux 用户都应该知道如何在启动时找到 Systemd 单元来运行服务或所需的脚本。 Systemd 单元和 cron 都是可接受的方法,而 rc.local 或 init.d 脚本已过时。

感谢您阅读本教程,该教程解释了如何在 Debian 11 中使用 Systemd 在启动时运行脚本。请继续关注我们以获取更多 Linux 提示和教程。

©2015-2025 艾丽卡 support@alaica.com