Python 启动shell脚本不生成输出

Python 启动shell脚本不生成输出,python,linux,bash,shell,Python,Linux,Bash,Shell,我在NVIDIA TX2系统上使用Ubuntu 16.04,有一个shell脚本launcher.sh,包含以下命令: #/垃圾箱/垃圾箱 cd/home/nvidia sudo python test.py>>/home/nvidia/test_output.txt 基本上意味着将test.py的输出存储在test\u output.txt中 test.py有一行:print“Testing startup script!” 我希望这个脚本(以及以后更复杂的脚本)在系统启动时自动运行。为此,我

我在NVIDIA TX2系统上使用Ubuntu 16.04,有一个shell脚本
launcher.sh
,包含以下命令:

#/垃圾箱/垃圾箱
cd/home/nvidia
sudo python test.py>>/home/nvidia/test_output.txt

基本上意味着将
test.py
的输出存储在
test\u output.txt

test.py
有一行:
print“Testing startup script!”

我希望这个脚本(以及以后更复杂的脚本)在系统启动时自动运行。为此,我使用命令
/home/nvidia/launcher.sh
将其添加到启动应用程序中,并重新启动了系统。确实创建了文件
test\u output.txt
,但没有写入任何输出。我从终端测试了脚本,效果很好


如何在启动应用程序中实现这一点?

初始化脚本通常没有初始化完整的环境,例如。g<代码>路径。为了执行,您最好提供命令的完整路径

另一方面,这里不需要
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
如果要将错误输出添加到输出文件中(这可能对调试有用),请使用最后一行

/usr/bin/python test.py >> test_output.txt 2&>1
或用于单独的错误日志

/usr/bin/python test.py >> test_output.txt 2> test_error.log

初始化脚本通常没有初始化完整的环境,例如。g<代码>路径。为了执行,您最好提供命令的完整路径

另一方面,这里不需要
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
如果要将错误输出添加到输出文件中(这可能对调试有用),请使用最后一行

/usr/bin/python test.py >> test_output.txt 2&>1
或用于单独的错误日志

/usr/bin/python test.py >> test_output.txt 2> test_error.log

您是否已将该路径添加到
$path
var?我是否添加python文件的路径或脚本或两者?您是否必须输入sudo的密码?@Guy,是的,当我从终端运行脚本时,它提示我输入密码。您是否已将该路径添加到
$path
var?我是否添加python文件的路径或脚本或两者?您是否必须为sudo输入密码?@Guy,是的,当我从终端运行脚本时,它提示我输入密码。我用
/usr/bin/python
替换了
sudopython
,它工作得非常好!我可以问一下为什么记录输出需要
2&>1
?正如我写的那样,这是为了重定向错误输出:我用
/usr/bin/python
替换了
sudo python
,它工作得非常好!我可以问一下为什么记录输出需要
2&>1
?正如我写的那样,这是为了重定向错误输出: