python - 在 Ubuntu 上自动启动 python 脚本

标签 python ubuntu autostart

这似乎出现了好几次,但我已经完成了所有的答案并尝试了我能找到的一切,但我仍然无法在我的 Kubuntu 18.04 系统上启动时运行 Python 脚本。

我有一个为家庭自动化项目设置数据记录器的项目。这是一个运行 Micropython 的 ESP32 板,它通过 WiFi 发送回 MQTT 消息以保存在计算机上。我已经设法让它全部正常工作,我现在只需要启动一个在计算机上运行的 Python 脚本来获取 MQTT 消息。我可以从终端运行它并且它工作得很好。我认为让它在启动时自动运行是微不足道的,所以我不必每次打开计算机时都输入它,但我已经花了几个小时它仍然不会这样做!我尝试过的事情:

  1. 使用系统设置中的自动启动 GUI 运行命令 python/home/rosebank/datalogger/datalogger_server.py
  2. 编写一个仅包含命令 python/home/rosebank/datalogger/datalogger_server.py 的 .sh 文件,使其可执行并使用自动启动 GUI 运行该脚本文件
  3. 按照以下说明在 ~/.config/autostart 文件夹中创建 .desktop 文件:https://stackoverflow.com/questions/...05612#25805612使用 Python 命令
  4. 如上但运行.sh 脚本文件
  5. 将上面的 .desktop 文件复制到/etc/xdg/autostart
  6. 在 X-GNOME-Autostart-Delay 上设置 60 秒延迟,以防 MQTT 代理尚未运行
  7. 创建一个 .conf 文件并放入 etc/init
  8. 将 .py 文件复制到/bin 并在 crontab 文件底部添加“@reboot python/bin/datalogger_server.py &”

从字面上看,我尝试的任何事情都不会让这个脚本运行!!我只是不明白这有多么困难,正如我所说的,我需要做的就是在启动后在终端中输入命令并且它可以工作,那么为什么我不能让它自动工作呢?! 我不知道发生了什么。代码根本没有运行吗?它是否尝试运行并给出错误消息?是否有任何地方可以找到它生成的任何错误消息?正如我所说,代码仅从终端运行就可以正常工作,所以我不明白为什么它不能在启动时运行。

编辑:澄清一下,在这台计算机上,它会在开机时自动登录,唯一的“用户”是 rosebank。所以让它在登录时运行而不是在启动时运行是完全没问题的。让用户而不是 root 运行它也很好,因为它只需要能够写入用户的主文件夹并且不需要(可能不应该有)任何特殊权限。我真的只是在寻找一种自动方式来完成与我在终端中键入命令时所发生的完全相同的事情。

最佳答案

我在运行 PyPI 本地服务器时遇到了同样的问题。 我开发了一个本地 PyPI 服务器,它应该使用 hostingpypi runserver --port PORT --host HOST 命令运行。

因此,从 https://pypi.org/project/pypiserver/#running-as-a-systemd-service 借用了 systemd 配置文件并用它在 Ubuntu 启动时运行我的脚本。

关于python - 在 Ubuntu 上自动启动 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59510227/

相关文章:

bash - 保存来自 bash 循环命令的终端输出

android - 如何为所有设备打开自动启动应用程序窗口?

python - 属性错误: module 'sklearn' has no attribute 'model_selection'

python - 使用 Django 提供动态生成的图像

python - 在 python 中使用 scipy 解决有界非线性最小化

python - 包控制 : The dependency 'markupsafe' is not currently installed

ubuntu - Ubuntu下docker + ufw的最佳实践是什么

ubuntu - 如何让我的 Stardog 服务在 azure ubuntu VM 中自动启动?

c++ - 引导序列中的多线程应用程序 - C++/Debian

python - 如何强制 scipy.optimize.fmin_l_bfgs_b 使用 'dtype=float32'