当 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 脚本的主要内容,如果未能解决你的问题,请参考以下文章