Raspbian上的rc.local中的Python脚本在启动时无法开始使用

时间:2019-03-02 06:23:42

标签: python linux ubuntu raspberry-pi raspbian

这是我的Python脚本(main.py):

#! /usr/bin/env python
import time

# ..... some file imports from the same folder .....

try:
    # .... Some setup code

    while True:
        if turnOffRequestHandler.turnOffIsRequested():
            break;
        time.sleep(1)

except BaseException as e:
    pass
finally:
    # ..... Some code to dispose resources

我尝试在每次启动时调用它的方法是先编辑rc.local使其与此类似:

#!/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.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
python3 /home/pi/Desktop/ProjectFolder/sample/main.py &
exit 0

,然后通过导航到包含目录并执行以下命令来使我的python脚本可执行:

chmod 755 main.py

然后,我希望系统重新启动后才能运行我的脚本。我不知道它是否运行。我可以告诉我的是,我 t应该呼叫了一些网络终结点。我现在想知道它是否真的执行了,但是wifi尚未连接。

我该如何诊断?因为,当我尝试手动执行(在系统启动并连接了Wifi之后)时,像这样:

pi@raspberrypi:~ $ /etc/rc.local

它正在启动,一切都按预期进行。

编辑:是否有可能与以下事实有关:我尝试执行的脚本在其中引用了位于同一文件夹中的文件(与/ etc /..)?

2 个答案:

答案 0 :(得分:0)

我会尝试使用带有'echo“ something” >> to_file'的简单bash脚本。

答案 1 :(得分:0)

您可以在使用脚本时将输出(如打印“东西”)重定向到文件。 像这样更改脚本:

python3 /home/pi/Desktop/ProjectFolder/sample/main.py &> logfile.txt

,然后在您的文件中使用普通打印来在文件中打印1个问题。 您必须在代码运行时刷新输出,才能查看输出文件:

import sys
sys.stdout.flush()

修改

如果您使用的是python 3.3或更高版本,则有另一种方法-print具有用于刷新输出的参数。