Fedora 20如何在启动结束时运行脚本

7

我正在使用 Fedora 20。我有一个两行的bash脚本需要在启动结束时运行。我希望每次开机时自动运行它。如何实现?

我尝试使用"sudo crontab -e"来插入我的可执行脚本,但它总是告诉我时间不对,无法修改文件。


我现在没有完整的细节,但你需要编写一个systemd服务,在正常启动后自行运行。此外,更多关于脚本何时需要运行的细节将会有所帮助。 - Ignacio Vazquez-Abrams
StackOverflow是用于编程问题的。请使用问题底部的“flag”链接,并要求管理员将其移动到http://unix.stackexchange.com。祝你好运。 - shellter
我投票关闭此问题,因为它与编程无关。 - womble
3个回答

20

您可以在/usr/lib/systemd/system/目录下创建一个Systemd单元文件,命名为<service_name>.service。以下是模板:

[Unit]
Description=<description_string>

[Service]
WorkingDirectory=<working_directory>
Type=forking
ExecStart=/bin/bash <absolute_path_to_script>
KillMode=process

[Install]
WantedBy=multi-user.target

将尖括号中的任何内容替换为您的特定信息。 'WantedBy = multi-user.target'是让Systemd在每次启动时运行您的脚本的关键。

在命令行上,告诉Systemd启用您的服务:

systemctl enable <service_name>.service
下次重启时,您的脚本应该会运行。日志将写入 /var/log/messages。
Fedora在单元文件上有一些基本文档:Systemd unit files

2

您可以将/etc/rc.local追加到系统启动后运行。

如果不存在,您可能需要创建它:

查看此答案


我在某处读到说它在Fedora 20及更高版本中不可用/不好。 - 5YrsLaterDBA
你需要启用它:systemctl enable rc-local.service - Tiago Lopo
我在调用脚本的时候插入了以下代码:$ sudo systemctl enable rc-local.service,但是得到了以下提示: 单元文件没有[Install]部分。它们不应该使用systemctl启用。 可能出现这种类型单元的原因有: 1)通过从另一个单元的.wants/或.requires/目录中创建符号链接,可以静态启用单元。 2)一个单元的目的可能是作为某个其他单元的帮助程序,该单元具有对它的要求依赖性。 3)可以通过激活(套接字、路径、定时器、D-Bus、udev、脚本化的systemctl调用等)在需要时启动单元。 - 5YrsLaterDBA
是的,我看了那个答案并尝试了它。我检查了可执行文件,并添加了那个bash命令行,还重新启动了我的机器。与上述相同。 - 5YrsLaterDBA
你也一样吗?你找到了解决方案吗? - user5154816

2

Charlie的回答更好,但您仍然可以使用Tiago的回答。

只是不要忘记,如果您想使用/etc/rc.local方式,请在编辑后授予此文件执行权限:

chmod +x /etc/rc.local


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接