启动shell脚本不生成输出

时间:2018-02-01 11:50:18

标签: python linux bash shell

我正在使用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,但没有写入输出。我从终端测试了脚本,它工作正常。

如何在启动应用程序中实现此功能?

1 个答案:

答案 0 :(得分:2)

初始化脚本通常不会初始化完整的环境,例如: G。 PATH。为了执行,您最好提供命令的完整路径。

另一方面,sudo在这里是不必要的,因为你显然不做任何需要root权限的事情。如果您需要它,请注意sudo正在以交互方式询问密码,如果在/etc/sudoers中明确允许您尝试使用它执行的命令,则会停止执行脚本

如果test.py位于/home/nvidiapython位于/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