我在 NVIDIA TX2 系统上使用 Ubuntu 16.04,并且有一个 shell 脚本 launcher.sh
包含以下命令:
#!/bin/sh
cd/home/英伟达
sudo python test.py >>/home/nvidia/test_output.txt
,
基本上意味着将 test.py
的输出存储在 test_output.txt
中。
test.py
有一行:print "Testing startup script!"
我希望这个脚本(以及稍后更复杂的脚本)在系统启动时自动运行。为此,我使用命令 /home/nvidia/launcher.sh
将它添加到 Startup Applications 并重新启动了系统。文件 test_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
关于python - 启动 shell 脚本不产生输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48562073/