对长期问题道歉,但我需要尽可能具体。
我正在创建一个项目,允许我使用遥控器控制相机的功能。这个项目是从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
答案 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 ./remote_function.py
开头,那么你有两个线索:
首先,为了让^工作,它必须与你的remote_function.py
在同一个文件夹中 - 也许你还记得修补过以自己的方式启动它的东西吗?
其次,您可以通过sudo grep 'python ./remote_function.py' ~
找到包含^的文件的位置 - 但由于它使用./
调用它 - 它应该非常明显(除非您有副本)那个文件分散在哪里 - 可能就是这种情况。