2017-04-24 147 views
1

我嘗試在啓動時運行我的python腳本,但它不起作用。python腳本不會在啓動時運行ubuntu

這裏是我的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腳本(作品):

#!/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.publish可以讓我的腳本停止工作,我NE w到Linux,我不知道爲什麼。有人可以幫我嗎?謝謝你的幫助。

Ubuntu 16.04

讓我知道你是否需要更多信息。

+0

你會得到什麼錯誤信息? – jprockbelly

+0

您可以使用圍繞該導入的「try」塊得到'paho.mqtt.publish'的錯誤。我認爲腳本在啓動時運行時,找不到默認路徑中的模塊,您可能需要在您的'rc.local'文件中指定它 – kuro

+0

@jprockbelly我沒有看到錯誤信息,或者我沒有知道如何獲取錯誤信息。我還應該補充一點,如果我像這樣正常運行它,我的腳本就可以正常工作./script.py –

回答

0

它看起來像你對我需要設置/你的Python scrypt前更改文件的寫權限做到這一點:

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

爲你工作,因爲(也許你是該文件的所有者) 。

典型的Linux文件權限被描述爲:

enter image description here

卻使用了CHMOD與物業的標誌,所以Linux的有權利寫入文件太大,請參閱ubuntu help :)

0

我自己也遇到過這個問題。對我來說,問題是路徑。我可以通過使用shell腳本啓動python腳本並從crontab啓動shell腳本來實現它。

這是我的launcher.sh。如果你不想要,你可以不使用sudo。 home/pi/record_data是我的文件所在的路徑。

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

在這種情況下,record_video.py是我想在啓動時運行的python文件。在crontab編輯中,我在下面添加了這一行。

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

如果它適合你,請嘗試一下:)祝你好運。 雖然我還沒有將錯誤記錄到文件中。

相關問題