我正在使用NVIDIA TX2系统上的Ubuntu 16.04,并且有一个包含以下命令的shell脚本launcher.sh
:
#!/bin/sh
cd /home/nvidia
sudo python test.py >> /home/nvidia/test_output.txt
,
基本上意味着将test.py
的输出存储在test_output.txt
。
test.py
有一行:print "Testing startup script!"
我想在系统启动时自动运行此脚本(以及稍后更复杂的脚本)。为此,我使用命令/home/nvidia/launcher.sh
将其添加到启动应用程序并重新启动系统。确实创建了文件test_output.txt
,但没有写入输出。我从终端测试了脚本,它工作正常。
如何在启动应用程序中实现此功能?
答案 0 :(得分:2)
初始化脚本通常不会初始化完整的环境,例如: G。 PATH
。为了执行,您最好提供命令的完整路径。
另一方面,sudo
在这里是不必要的,因为你显然不做任何需要root
权限的事情。如果您需要它,请注意sudo
正在以交互方式询问密码,如果在/etc/sudoers
中明确允许您尝试使用它执行的命令,则会停止执行脚本
如果test.py
位于/home/nvidia
,python
位于/usr/bin
,则脚本应为
#!/bin/sh
cd /home/nvidia
/usr/bin/python test.py >> test_output.txt
如果你想将错误输出添加到outfile,这可能对调试很有用,那就做最后一行
/usr/bin/python test.py >> test_output.txt 2&>1
或单独的错误日志
/usr/bin/python test.py >> test_output.txt 2> test_error.log