You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetson Nano(Ubuntu 18.04)网络连通时自动运行Python脚本问题咨询

问题原因及解决方案
  • /etc/network/if-up.d下的脚本默认以root身份执行,和你手动执行时用的普通用户环境完全不同,是核心问题所在:
    • 普通用户通过pip安装的第三方依赖包默认存在~/.local/lib路径下,root用户默认不会读取该路径,会触发模块不存在的报错直接导致脚本退出
    • 如果你的Python脚本依赖GUI相关能力,root用户默认没有DISPLAY环境变量,也会启动失败
  • 你脚本里的pkill python3逻辑存在严重问题:root身份执行该命令会杀掉系统所有用户的python3进程,包括系统自带的服务进程,大概率会引发异常中断,建议改为精准匹配你自己的脚本进程:pkill -f "launcher.py"
  • 你当前没有捕获脚本运行的错误日志,无法定位具体失败原因
  • 注意你提供的脚本示例中mkdir命令的路径多写了空格(/home /user_name/),会导致创建路径错误,如果你实际脚本也是这么写的需要修正

修复步骤

  1. 首先修改你的run_when_connection_available脚本,添加日志输出、指定执行用户,修改后参考内容如下:
#!/bin/sh
# 开启日志输出,所有运行信息和错误都会写入该文件,方便排查问题
exec > /var/log/conn_auto_run.log 2>&1
echo "脚本开始运行,时间:$(date)"

mkdir /home/user_name/dummy_folder_00

# 精准杀之前的同名脚本进程,避免误杀其他系统Python进程
pkill -f "launcher.py"

cd /home/user_name/projects/folder
# 替换user_name为你自己的实际用户名,用普通用户身份执行Python脚本
# 后面的Python版本号替换为你Jetson Nano实际使用的版本,可通过python3 --version查询
sudo -u user_name PYTHONPATH=/home/user_name/.local/lib/python3.6/site-packages /usr/bin/python3 launcher.py --arg01 --arg02 ...

mkdir /home/user_name/dummy_folder_01
echo "脚本执行完成"
  1. 修改完脚本后重新放到/etc/network/if-up.d目录,保持可执行权限。
  2. 如果脚本还是启动失败,直接查看/var/log/conn_auto_run.log文件的内容,就能看到具体的报错信息,对应修复即可。

可选优化:确保互联网连通后再执行脚本

如果你需要避免网卡刚连上但互联网还没通的场景,可以在执行Python脚本前添加连通性检测逻辑:

# 检测互联网连通,最多重试5次
RETRY_COUNT=5
while [ $RETRY_COUNT -gt 0 ]; do
    ping -c 2 223.5.5.5 > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        break
    fi
    RETRY_COUNT=$((RETRY_COUNT-1))
    sleep 1
done
if [ $RETRY_COUNT -eq 0 ]; then
    echo "互联网连通检测失败,退出脚本"
    exit 1
fi

内容的提问来源于stack exchange,提问作者Carlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:15:03