我正在寻找一种在启动时运行 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