当我尝试通过将命令添加到/ etc/profile启动我的Raspberry Pi来执行它时,为什么我的Python脚本在后台运行两次?

问题描述:

当我尝试在启动Raspberry Pi时通过将命令添加到/ etc/profile来执行它时,为什么我的Python脚本在后台运行两次?当我尝试通过将命令添加到/ etc/profile启动我的Raspberry Pi来执行它时,为什么我的Python脚本在后台运行两次?

我有一个写在文件/ etc/profile文件末尾的命令,用于在我的Raspberry Pi启动时运行的Python脚本,“sudo python /path/filename.py &”,由于某种原因它运行每次两次。当我将该行注释掉并从命令行手动执行它时,它将正常运行。为什么会发生这种情况,我能做些什么来防止这种情况发生?

我知道它在背景中运行两次,因为在我的代码中,我有一个蜂鸣器在有时会发出两次蜂鸣声,而在其他蜂鸣器发出三次蜂鸣声,而不是发出2次和6次蜂鸣声,而不是3次蜂鸣声。而且代码最终会自相矛盾,显然是因为每个脚本运行都试图在同一时间做其他事情。

在此先感谢。

+0

可能会更好的覆盆子pi堆交换? –

+0

您确定要让脚本开始使用/ etc/profile吗?无论如何,请尝试通过创建日志文件进行调试。我可以想出很多原因,为什么你的蜂鸣器不正常,并不是所有的脚本都运行了两次。 –

+0

可能应该在http://raspberrypi.stackexchange.com/ – lit

您是否启用了VNC?我认为这是问题。这是给我的。

看到这个相关讨论:

https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=59285

所以,你可以禁用VNC,做水平丹尼建议的运行,创建一个新用户(以使用VNC的一个不同),或开始做这种你的脚本中的东西:

if [ x"$ALREADY_DONE" == x"" ]; then 
    export ALREADY_DONE=yes 
    foobar 
fi 
+1

我没有启用VNC。我解决这个问题的方式是在其他地方启动我的启动脚本,因为许多人建议不要使用/ etc/profile来执行此操作。我使用的是“crontab -e”,而是写了“@reboot sudo python /filelocation/filename.py”,它很好用。感谢您的输入! –