Ubuntu 16.04(NVIDIA TX2)启动脚本无输出问题求助
解决NVIDIA TX2 Ubuntu 16.04开机启动脚本无输出的问题
我之前在NVIDIA TX2的Ubuntu 16.04上折腾开机启动脚本时,也碰到过和你一模一样的问题——手动跑脚本没问题,开机自动执行就没输出。咱们来一步步排查解决:
1. 核心问题:sudo需要无密码验证
开机自动运行时,脚本里的sudo会触发密码验证,但此时没有交互终端,命令会静默失败,自然不会有输出。你可以给nvidia用户配置免密执行python:
- 打开终端,运行
sudo visudo - 在文件末尾添加一行(先通过
which python确认你的python绝对路径,比如/usr/bin/python):nvidia ALL=(ALL) NOPASSWD: /usr/bin/python - 按
Ctrl+O保存,回车确认,再按Ctrl+X退出编辑器。
2. 捕获所有输出(包括错误信息)
你当前只重定向了标准输出,脚本执行的错误信息会丢到标准错误里,不会写入test_output.txt,所以看不到问题。修改launcher.sh的重定向逻辑:
#!/bin/sh cd /home/nvidia sudo python test.py >> /home/nvidia/test_output.txt 2>&1
2>&1会把错误信息也合并到输出文件里,方便你排查到底是哪里出了问题。
3. 用python的绝对路径避免环境变量问题
开机启动的环境变量和终端环境不一样,python可能指向的不是你预期的版本。先通过which python拿到绝对路径,然后修改脚本:
#!/bin/sh cd /home/nvidia sudo /usr/bin/python test.py >> /home/nvidia/test_output.txt 2>&1
4. 延迟执行确保系统环境初始化完成
有时候开机启动脚本执行太早,系统某些基础服务还没就绪(虽然你的test.py很简单,但保险起见),可以给脚本加个延迟:
- 打开Startup Applications,编辑你的启动项,把命令改成:
延迟10秒再执行脚本,确保系统环境都准备好。bash -c "sleep 10 && /home/nvidia/launcher.sh"
验证方法
修改完后先手动执行/home/nvidia/launcher.sh确认正常,然后重启系统,查看test_output.txt。如果还是有问题,文件里的错误信息会帮你定位具体问题。
内容的提问来源于stack exchange,提问作者Rahul Bohare
相关产品推荐
相关产品推荐

