当 Jetson Nano(Ubuntu 18.04)上的互联网连接可用时运行 python 脚本

Posted

技术标签:

【中文标题】当 Jetson Nano(Ubuntu 18.04)上的互联网连接可用时运行 python 脚本【英文标题】:Run python script when internet connection becomes available on Jetson Nano (Ubuntu 18.04) 【发布时间】:2022-01-11 19:10:13 【问题描述】:

我需要设置一个 Jetson Nano 设备,以便在每次有 Internet 连接可用时启动 Python 脚本。

所以,参考this question,我做了以下事情:

我创建了“run_when_connection_available”脚本:
#!/bin/sh

# create a dummy folder to check script execution
mkdir /home /user_name/dummy_folder_00

# kill previous instances of the system
pkill python3

# move to folder with python script and launch it
cd /home/user_name/projects/folder
/usr/bin/python3 launcher.py --arg01 --arg02 ...

# create another dummy folder to check script execution
mkdir /home /user_name/dummy_folder_01

我使这个脚本可执行并将其复制到 /etc/network/if-up.d

现在,每次我将以太网电缆插入并再次插入时,我都可以看到在 /home/user_name 中创建了虚拟文件夹,但没有启动 python 脚本(至少,它没有出现在系统中监视器)。我尝试从终端运行脚本中的命令,一切正常,python 程序按预期启动。我做错了吗?

【问题讨论】:

【参考方案1】:

我正在尝试找出与您相似的东西,但不完全相同..

这个解决方案让我的脚本 python 脚本运行在互联网连接上,我可以检查日志并且一切正常:

Raspbian - Running A Script After An Internet Connection Is Established

但是,我的脚本使用 notify-send 向我的窗口管理器发送通知,我似乎无法使用 systemd - 该脚本在用户空间内运行时有效,所以我认为它与 systemd 和许格。希望这对您来说不是问题,我希望这可以解决您的问题。

你不应该在中间需要一个 bash 脚本,我得到了 systemd 服务来运行我的 python 脚本 chmod u+x <file>.py 并将 #!/usr/bin/env python3 放在 python 文件的顶部,以便它可以直接在 .service 文件下执行像这样:

ExecStart=/path/to/file/file.py

【讨论】:

【参考方案2】:

好吧,我猜这是权限问题,我通过以用户名运行所有内容来解决它,所以我将脚本修改为

sudo -user user_name /usr/bin/python3 launcher.py --arg01 --arg02 ...

【讨论】:

以上是关于当 Jetson Nano(Ubuntu 18.04)上的互联网连接可用时运行 python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

[Jetson Nano]Jetson Nano快速入门

jetson nano(ubuntu18.04)设置开机自启动python文件

Jetson nano VNC远程桌面配置

Jetson_nano环境配置

Jetson Nano刷机

jetson nano学习笔记1