在启动时运行 bash 脚本?

在启动时运行 bash 脚本?

我正在寻找一种在启动时运行 bash 脚本的方法,该脚本只会显示信息。例如

#!/bin/bash
echo "test"
echo "info"
exit

答案1

启动时运行脚本的两种方法。

  • 将其添加到/etc/.rc.local文件中
  • 将其添加到/etc/profile.d/foobar.sh

但请记住,由于没有标准输出的终端,因此脚本不会打印。

另一种方法是将文本放入/etc/motd文件中。每次通过 SSH 进入机器时,您都会看到打印出来的内容。

答案2

如果您将脚本放入 中/etc/profile.d/,它可能会在启动时运行,但仅仅是因为root处于活动状态。如果您这样做,然后运行su​​,您可能会看到该脚本在您的终端中再次开始运行。因此,虽然这会在系统启动时巧合地运行脚本,但不是系统启动运行了脚本,而是 的活动root启动了它。

如果您想要一个脚本来运行真正的系统启动,而不仅仅是用户登录(包括root登录),那么请尝试服务。优点是您可以使用systemctl status ...创建服务来检查其状态并不难。

调整,然后将其粘贴到你的终端中

echo '[Unit]
Description=My amazing startup script

[Service]
Type=simple
ExecStart=/opt/path/to/myamazingstartup.sh

[Install]
WantedBy=multi-user.target' > /etc/systemd/system/myamazingstartup.service

chmod 755 /etc/systemd/system/myamazingstartup.service
systemctl enable myamazingstartup.service

# Now, `/opt/path/to/myamazingstartup.sh` will run at every startup. 

# Optional to start now:
systemctl start myamazingstartup

# Check how its running:
systemctl status myamazingstartup
  • WantedBy=multi-user.target部分为必填项,否则systemctl enable将失败。备选设置是graphical.target和其他。您可以阅读更多内容
  • Type=simple也是强制性的
  • 请输入您自己的信息:
    • Description=
    • ExecStart=

瞧!您有一个在启动时运行脚本的服务,甚至允许您检查其状态。

答案3

如果您希望脚本向系统日志发送消息,请使用logger而不是echo

#!/bin/bash
logger <<HERE
test
info
HERE
#exit  # Not really useful; the script will exit anyway

相关内容