在 Linux 系统启动时运行脚本


根据您具体的 Linux 发行版和您尝试运行的脚本类型,有多种方法可以在 Linux 系统启动时运行脚本。

  • 使用 systemd - 在使用 systemd 的系统上,您可以为您的脚本创建一个 systemd 服务文件并将其配置为在启动时运行。

  • 使用 cron - 您可以使用 cron 守护进程来安排您的脚本在启动时运行。您可以在 cron 表 (crontab) 中添加一行,以便在启动时特定时间运行您的脚本。

  • 使用 init.d - 在使用较旧的 init.d 系统的系统上,您可以在 /etc/init.d 目录中创建一个脚本,并使用 update-rc.d 命令将其配置为在启动时运行。

  • 使用 .bashrc 或 .bash_profile - 您可以在您的 .bashrc 或 .bash_profile 中添加您的脚本命令,以便在每次终端登录时运行脚本。

  • 使用 /etc/rc.local - 您可以在 /etc/rc.local 文件中添加您的脚本命令,此文件在每次启动时都会执行。

需要注意的是,您选择的方法将取决于您的系统的具体细节以及您尝试运行的脚本。

使用 cron

要在启动时使用 cron 运行脚本,您需要执行以下操作:

  • 打开终端并键入“crontab -e”以打开 cron 表进行编辑。

  • 在文件的底部添加一个新行,格式如下:

@reboot /path/to/script arg1 arg2
  • 这一行告诉 cron 在系统重新启动时运行位于“/path/to/script”的脚本,并带有参数“arg1”和“arg2”。

  • 保存并退出 cron 表。

  • 在终端中键入“crontab -l”以验证脚本是否已正确添加。

  • 重新启动系统以测试脚本是否在启动时运行。

注意 - 如果您想将脚本安排在不同的时间或间隔运行,则可以将 @reboot 替换为特定时间或间隔。

示例

/path/to/script arg1 arg2 --> this command run the script every minute.

需要注意的是,脚本的路径必须是完整路径,而不是相对路径。还要确保脚本具有执行权限。

使用 rc.local

要在启动时使用 rc.local 文件运行脚本,您需要执行以下操作:

  • 打开终端并键入“sudo nano /etc/rc.local”以打开 rc.local 文件进行编辑。

  • 在“exit 0”行之前添加以下行:

/path/to/script arg1 arg2
  • 这一行告诉系统在系统启动时运行位于“/path/to/script”的脚本,并带有参数“arg1”和“arg2”。

  • 保存并退出文件。

  • 在终端中键入“sudo chmod +x /etc/rc.local”以使 rc.local 文件可执行。

  • 重新启动系统以测试脚本是否在启动时运行。

需要注意的是,脚本的路径必须是完整路径,而不是相对路径。还要确保脚本具有执行权限。

使用 init.d

要在启动时使用 init.d 系统运行脚本,您需要执行以下操作:

  • 打开终端并在 /etc/init.d 目录中创建一个新的脚本文件。您可以使用 nano 或 vi 等文本编辑器创建文件。

  • 在脚本文件的顶部添加以下几行:

#!/bin/sh
BEGIN INIT INFO
Provides: scriptname
Required-Start: $all
Required-Stop: $all
Default-Start: 2 3 4 5
Default-Stop: 0 1 6
Short-Description: Start scriptname at boot time
END INIT INFO
  • 这些行向 init 系统提供有关脚本的信息以及何时应运行它。

  • 添加执行脚本的命令,例如:/path/to/script arg1 arg2

  • 保存并退出文件。

  • 在终端中键入“sudo chmod +x /etc/init.d/scriptname”以使脚本文件可执行。

  • 在终端中键入“sudo update-rc.d scriptname defaults”以更新系统以便在启动时运行脚本。

  • 重新启动系统以测试脚本是否在启动时运行。

需要注意的是,脚本的路径必须是完整路径,而不是相对路径。还要确保脚本具有执行权限。

使用 systemd

要在启动时使用 systemd 运行脚本,您需要执行以下操作:

  • 在 /etc/systemd/system 目录中创建一个新的服务文件。您可以使用 nano 或 vi 等文本编辑器创建文件。文件名应采用“yourscriptname.service”的格式。

  • 将以下几行添加到服务文件中:

[Unit]
Description=Description of your script
After=network.target

[Service]
ExecStart=/path/to/script arg1 arg2
Restart=always
User=root
Group=root
Type=simple

[Install]
WantedBy=multi-user.target
  • 保存并退出文件。

  • 运行以下命令“sudo systemctl daemon-reload”以重新加载 systemd 管理器配置。

  • 运行以下命令“sudo systemctl enable yourscriptname.service”以启用服务。

  • 运行以下命令“sudo systemctl start yourscriptname.service”以启动服务。

  • 重新启动系统以测试脚本是否在启动时运行。

需要注意的是,脚本的路径必须是完整路径,而不是相对路径。还要确保脚本具有执行权限。

“Unit”部分中的“After”字段可以设置为不同的值,具体取决于脚本的依赖项,例如,如果您的脚本需要网络启动,则其值应为“network.target”,否则可以使用“default.target”。

结论

有多种方法可以在 Linux 系统启动时运行脚本,包括使用 systemd、cron、init.d、.bashrc 或 .bash_profile 和 rc.local。您选择的方法将取决于系统的具体细节以及您尝试运行的脚本。需要注意的是,脚本的路径必须是完整路径,而不是相对路径,还要确保脚本具有执行权限。此外,启动时运行脚本的方法也可能因您使用的 Linux 发行版而异,因此如果您不确定,最好查看文档或咨询专家。

更新于:2023年10月31日

77K+ 次查看

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告