当前位置: 首页 > 知识库问答 >
问题:

Python脚本不会在启动ubuntu时运行

法玮
2023-03-14

我试图在启动时运行我python脚本,但它不起作用。

下面是我的python脚本(不起作用):

#!/usr/bin/env python

import paho.mqtt.publish as publish
from datetime import datetime

t = str(datetime.now())
print t
with open("/home/james/mqtt/log.txt", "a+") as f:
    f.write("it works " + t + "\n")

这是我的python脚本(works):

#!/usr/bin/env python

from datetime import datetime

t = str(datetime.now())
print t
with open("/home/james/mqtt/log.txt", "a+") as f:
    f.write("it works " + t + "\n")

下面是我的rc.local文件(也可以尝试crontab并在/ect/init.d中设置服务):

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# /bin/mqtt_test.py &
# mosquitto_sub -t "mqtt"

/home/james/mqtt/script.sh
# /etc/mqtt/mqtt_test.py

exit 0

看起来通过导入paho.mqtt.发布可以让我的脚本停止工作,我是Linux的新手,我不知道为什么。有人可以帮助我吗?感谢您的帮助。

Ubuntu 16.04

如果你需要更多信息,请告诉我。

共有2个答案

董翰池
2023-03-14

在我看来,在python脚本这样做之前,您需要设置/更改文件的写权限:

f.write("it works " + t + "\n")

因为你正在工作(也许你是文件的所有者)。

典型的linux文件权限描述为:

请使用带有属性标志的chmod,这样linux也有权写这个文件,请参考ubuntu帮助:)

帅颖逸
2023-03-14

我自己也面临过这个问题。对我来说,问题是路径。我可以通过使用shell脚本启动python脚本并从crontab启动shell脚本来让它工作。

这是我的< code>launcher.sh。如果你不想的话,你可以不使用须藤。< code>home/pi/record_data是我的文件所在的路径。

cd /
cd home/pi/record_data
sudo python record_video.py

在这种情况下,< code>record_video.py是我希望在启动时运行的python文件。在crontab编辑中,我添加了下面这一行。

@reboot sh /home/pi/record_data/launcher.sh &

如果它对你有效,请尝试一下:)祝你好运。不过,我还没有将错误记录到文件中。

 类似资料:
  • 本文向大家介绍在Windows启动时自动运行Python脚本?,包括了在Windows启动时自动运行Python脚本?的使用技巧和注意事项,需要的朋友参考一下 将Python脚本添加到Windows启动时,基本上表示Python脚本将在Windows启动时运行。这可以通过两步过程来完成- 步骤#1:在Windows启动文件夹中添加或添加脚本 在启动Windows后,它会执行(相当于双击)其启动文件

  • 问题内容: 首先,这可能需要移至超级用户。我无法确定哪个场地更好。 我正在尝试编写一个将在启动/重新启动时运行的R脚本,并将该计算机添加到doRedis工作者池中。(doRedis是一个foreach后端)。 这是我的R脚本“〜/ Rworker.R” 我可以使用command从命令行运行此脚本 。 接下来,我编写了一个shell脚本来运行R脚本,标题为“ /etc/init.d/StartWor

  • 问题内容: 在Amazon S3 Linux实例上,我有两个名为的脚本,它们 永远 启动和停止(依次运行Node.js应用程序)。我使用这些脚本手动启动和停止我的Node.js应用程序。到目前为止,一切都很好。 我的问题:我还想将其设置为在系统启动时运行。我知道我需要在其中添加文件,并且知道如何将其符号链接到其中的适当目录,但是我无法弄清楚放置在其中的文件中实际需要什么。我认为这应该只是一条线,例

  • 问题内容: 我一直在尝试使用设置脚本以定期运行python程序。python程序失败,因为它找不到我的导入– 我知道这是因为我在日志文件中捕获了错误。为了解决此问题,我创建了,然后在其中复制了自己的内容,然后注销并再次登录。这似乎不足以解决问题,而且我对尝试其他方法一无所知。 我正在运行OSX 10.8.3。 相关主题: launchd执行python脚本,但导入失败(不适用-我的脚本指向正确的p

  • 问题内容: 我有一个node.js脚本,需要在启动时启动 并 在www-data用户下运行。在开发期间,我始终使用以下命令启动脚本: 我确切地看到了发生了什么,manager.js现在运行良好。搜索所以我发现我不得不把它放在我的。另外,我学会了将输出指向日志文件,并将追加到“将stderr重定向到stdout”,它应该是守护程序,因此最后一个字符是。 最后,我的样子是这样的: 如果我自己运行此代码

  • 问题内容: 我的用例是我想初始化文件中的某些函数,然后使用定义的那些函数启动ipython。有什么办法可以做 问题答案: 根据文档,这很简单: 使用以下命令启动IPython: 如果不带选项调用,它将执行顺序列出的所有文件,并将您放入解释器,同时仍然确认您可能在文件中设置的任何选项 。此行为与标准Python不同,标准Python在被称为as时只会执行一个文件,而忽略您的配置设置。 所以,只需使用