【问题标题】:rc.local and python scriptrc.local 和 python 脚本
【发布时间】:2011-04-23 10:14:33
【问题描述】:

我正在尝试在 Ubuntu Server 10.10 机器上启动脚本。

我的 rc.local 的相关部分如下所示:

/usr/local/bin/python3.2 "/root/Advantage/main.py" >> /startuplogfile
exit 0

如果我从 /etc 运行 ./rc.local 一切正常,它会将以下内容写入 /startuplogfile:

usage: main.py [--loop][--dry]

出于测试目的,这正是需要发生的事情。当我重新启动计算机时,它不会向 startuplogfile 写入任何内容。我冒昧地猜测在启动时运行 rc.local 时脚本没有启动。

我验证了 rc.local 以文件中的“touch /rclocaltest”开始。正如预期的那样,目录已创建。

我已经使用另一个 python 脚本测试了 rc.local,该脚本简单地在 / 中创建一个文件并打印到 /startuplogfile。从终端和重启后,它工作得很好。

我的执行位是这样设置的:

-rwxrwxrwx 1 root root    4598 2011-04-22 19:09 main.py

我完全不知道为什么会发生这种情况,我尝试了所有我能想到的解决问题的方法。关于可能导致此问题的任何想法,我完全没有想法。

编辑:我忘了提到我只通过 ssh 登录到这台机器。我不确定这会有所不同,因为据我所知,rc.local 是在登录之前执行的。

编辑:我注意到这篇文章有点混乱,所以让我总结一下:

  • 我验证了启动时调用了 rc.local
  • 如果手动调用 rc.local 一切正常
  • 权限设置正确
  • 测试 python 脚本按预期工作 使用 rc.local 启动
  • 我的实际 python 脚本只会运行 如果 rc.local 是手动调用的,则不是 开机时

【问题讨论】:

    标签: python unix ubuntu


    【解决方案1】:

    尝试像这样将 stderr 和 stdout 重定向到 /startuplogfile 中:

    /usr/local/bin/python3.2 "/root/Advantage/main.py" >> /startuplogfile 2>&1
    

    你会看到是否发生错误

    【讨论】:

    • 我现在就试试。你能帮我一个大忙并解释一下语法吗?我很感兴趣。
    • 这极大地帮助了我现在对正在发生的事情有了更清晰的了解。果然,错误来自python脚本。非常感谢
    • stderr(记录错误的地方)是 2。stdout(记录标准输出的地方)是 1,您可以将其放入文件中。编写 2>&1 时,您将 stderr 重定向到 stdout。
    【解决方案2】:

    绝对不想让该脚本在世界范围内可写。您尝试在启动时自动以 root 身份运行它,但由于它是全球可写的,任何人都可以更改脚本以执行任何操作 - 这是一个巨大的安全漏洞。

    【讨论】:

    • 你说得对,谢谢。我只是全力以赴尝试完成这项工作,一旦发生这种情况,我将开始锁定!
    猜你喜欢
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多