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

Why is my Python script running twice in the background when I try to execute it at startup of my Raspberry Pi by adding the command to /etc/profile?

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

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

我确实知道它在后台 运行ning 两次,因为在我的代码中我有一个蜂鸣器,有时发出两次哔哔声,有时发出 3 次哔哔声,它发出 4 次而不是 2 次和6 次而不是 3 次。此外,代码最终自相矛盾,显然是因为每个脚本 运行 都试图同时做其他事情。

提前致谢。

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

查看相关讨论:

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

因此您可以禁用 VNC,执行 danny 建议的 运行 级别,创建一个新用户(不同于用于 VNC 的用户)或开始在您的脚本中执行此类操作:

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

我在 boot/startup.

上用 运行 脚本的更好方法回答我自己的问题

我不太清楚为什么会这样,但我确实了解到使用这种方法在启动时执行脚本是一种不好的做法,最好避免。

我开始改用 Crontab。

这是你需要做的:

crontab -e

这将打开 crontab,然后添加以下行:

@reboot python /filelocation/filename.py

这将在 Pi 启动后立即执行脚本。

不再运行双脚本!