【问题标题】:Fedora 20 how to run script at the end of startupFedora 20 如何在启动结束时运行脚本
【发布时间】:2015-02-09 22:15:32
【问题描述】:

我正在使用 Fedora 20。我有一个两行 bash 脚本需要在启动结束时运行。我希望它在每次机器启动时自动运行。我该怎么做?

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

【问题讨论】:

  • 我现在没有完整的详细信息,但是您需要编写一个在正常启动后自行运行的 systemd 服务。此外,有关脚本何时需要运行的更多详细信息也会有所帮助。
  • StackOverflow 用于编程问题。请使用问题底部的flag 链接,并要求版主将其移至unix.stackexchange.com。祝你好运。
  • 我投票结束这个问题,因为它与编程无关。

标签: linux bash fedora fedora20


【解决方案1】:

您可以在 /usr/lib/systemd/system/.service 中创建一个 Systemd 单元文件。这是一个模板:

[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,它会在系统启动后立即运行。

    如果不存在,您可能必须创建它:

    Check this answer

    【讨论】:

    • 我在某处读到它不适用于 Fedora 20 及更高版本。
    • 您必须启用它:systemctl enable rc-local.service
    • 在插入我的行来调用我的脚本后,我得到了以下信息: $ sudo systemctl enable rc-local.service 单元文件没有 [Install] 部分。它们并不意味着使用 systemctl 启用。拥有这种单元的可能原因是: 1) 一个单元可以通过从另一个单元的 .wants/ 或 .requires/ 目录进行符号链接来静态启用。 2) 一个单元的目的可能是充当对它有需求依赖的其他单元的助手。 3) 可以在需要时通过激活(socket、path、timer、D-Bus、udev、scripted systemctl call,...)启动一个单元。
    • 是的,我阅读了该答案并尝试了它。我将其检查为可执行文件并添加了该 bash 行并重新启动了我的机器。同上。
    • 我也一样,你找到解决办法了吗?
    【解决方案3】:

    查理的答案更好,但你仍然可以使用蒂亚戈的答案。

    只是不要忘记如果你想使用/etc/rc.local的方式,编辑后授予这个文件的执行权限:

    chmod +x /etc/rc.local

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多