网站搜索

如何在重新引导或启动期间自动执行命令/脚本


当我启动 Linux 系统并登录时,我总是对幕后发生的事情着迷。通过按下裸机上的电源按钮或启动虚拟机,您可以启动一系列事件,从而形成一个功能齐全的系统 - 有时只需不到一分钟。当您注销和/或关闭系统时也是如此。

更有趣的是,您可以让操作系统在启动时以及登录或注销时执行某些操作。

在这篇与发行版无关的文章中,我们将讨论在 Linux 中实现这些目标的传统方法。

注意:我们假设使用 Bash 作为登录和注销事件的主 shell。如果您碰巧使用其他方法,其中某些方法可能有效,也可能无效。如果有疑问,请参阅 shell 的文档。

在重新引导或启动期间执行 Linux 脚本

在启动期间执行命令或运行脚本有两种传统方法:

方法#1 – 使用 cron 作业

除了广泛用于指示计划的常用格式(分钟/小时/月份/月份/星期)之外,cron 调度程序还允许使用@reboot。该指令后跟脚本的绝对路径,将使其在计算机启动时运行。

然而,这种方法有两个注意事项:

  1. a) cron 守护进程必须正在运行(正常情况下是这样),并且
  2. b) 脚本或 crontab 文件必须包含所需的环境变量(如果有)(有关更多详细信息,请参阅此 StackOverflow 线程)。

方法 #2 – 使用 /etc/rc.d/rc.local

即使对于基于 systemd 的发行版,此方法也有效。为了使此方法起作用,您必须向 /etc/rc.d/rc.local 授予执行权限,如下所示:

chmod +x /etc/rc.d/rc.local

并在文件底部添加您的脚本。

下图显示了如何使用 cron< 运行两个示例脚本(/home/gacanepa/script1.sh/home/gacanepa/script2.sh job 和 rc.local 分别及其各自的结果。

#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
#!/bin/bash
SITE="linux-console.net"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt

请记住,必须事先授予这两个脚本执行权限:

chmod +x /home/gacanepa/script1.sh
chmod +x /home/gacanepa/script2.sh

在登录和注销时执行 Linux 脚本

要在登录或注销时执行脚本,请分别使用 ~.bash_profile~.bash_logout。最有可能的是,您需要手动创建后一个文件。只需以与以前相同的方式在每个文件的底部放置一行调用脚本即可。

概括

在本文中,我们解释了如何在重新启动、登录和注销时运行脚本。如果您能想到我们可以包含在此处的其他方法,请随时使用下面的评论表来指出它们。我们期待您的回音!