找出Raspberry Pi / Linux启动时的启动

时间:2017-04-21 16:23:59

标签: python linux raspberry-pi autostart

对长期问题道歉,但我需要尽可能具体。

我正在创建一个项目,允许我使用遥控器控制相机的功能。这个项目是从Python程序运行的,并将其输出管道传输到另一个程序,称为chdkptp(这是允许我控制摄像机的程序)。前一段时间我试图弄清楚如何让这个项目在启动时启动(所以我可以插入我的Raspberry Pi,让所有东西都能在不需要桌面的情况下工作)。我尝试了几个不同的东西(例如将我想要的命令添加到rc.local文件等),但最终添加了一个自动启动

~/.config/autostart

这就是我所做文件的内容:

[Desktop Entry]
Encoding=UTF-8
Name=Terminal autostart
Comment=Start a terminal and boot remote_function.py piped into chdkptp.sh
Exec=/usr/bin/lxterm -e 'cd chdkptp-r735 && ./remote_function.py|./chdkptp.sh'

基本上这会打开lxterm并执行我需要启动我的python程序的命令,该程序将其输出传递给chdkptp,这样就可以了。

但我的问题是: 我相信我可能不小心在不同的位置启动了我的Python程序,同时试图找出我需要做什么因为我的python程序启动了两次。我知道这是因为当程序启动并运行时我有一个LED闪光灯,但它闪烁了两次,我无法弄清楚我的程序启动的其他地方。我该如何解决这个问题?

我可能已经有了答案,但不知道这意味着什么......我输入了某人建议的这个命令:

ps -ax | grep 'remote_function.py'

得到了这个回复:

875 ?        S      0:00 xterm -class UXTerm -title uxterm -u8 -e cd chdkptp-r735 && ./remote_function.py|./chdkptp.sh
1026 pts/0    Ss+    0:00 bash -c cd chdkptp-r735 && ./remote_function.py|./chdkptp.sh
1028 pts/0    S+     0:00 python ./remote_function.py
2169 pts/1    S+     0:00 grep --color=auto remote_function.py

这是答案吗?如果是这样,这究竟是什么意思?在我的python程序开始时它与shebang有什么关系吗?谈到这一点,我是一个新手。如果那不是答案,我该如何找到我的程序在启动时启动的其他位置?

shebang就是这个,供参考:

#!/usr/bin/env python

2 个答案:

答案 0 :(得分:1)

[解决]

我明白了。

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

我一直用VNC连接到我的覆盆子pi,并且我有一个自动启动命令和我的remote_python自动启动以启动VNC服务器,所以我可以远程访问我的pi而不需要监视器。事实证明,VNC服务器存在某种错误,它会启动两次。当然。我正在使用x11 VNC服务器而现在只启动了一次:)

答案 1 :(得分:0)

事实上,你有两个运行python脚本的进程。

找出从第二个开始的内容可能不是很有趣,但是既然你可以看到第二个以python ./remote_function.py开头,那么你有两个线索:

首先,为了让^工作,它必须与你的remote_function.py在同一个文件夹中 - 也许你还记得修补过以自己的方式启动它的东西吗?

其次,您可以通过sudo grep 'python ./remote_function.py' ~找到包含^的文件的位置 - 但由于它使用./调用它 - 它应该非常明显(除非您有副本)那个文件分散在哪里 - 可能就是这种情况。