我需要从rc.local运行我的Python程序,后台运行,sudo到用户帐户并且nohup'd。但是:
nohup sudo -u pi ~pi/doit.py >~pi/doit.out &
不起作用,因为shell将重定向应用于在root下运行的整个命令,因此文件由root创建,而不是我想要的用户pi。
所以我尝试在Python程序中进行重定向。举例来说,我做了:
#!/usr/bin/python
import sys
import time
sys.stdout = open('doit.out', 'w')
while True:
print(time.ctime())
sys.stdout.flush()
time.sleep(1)
但这会在每次打印时截断文件,即使我将文件打开模式设置为append,以及是否包含flush()或使用python -u运行它。
所以: 1.为什么Python将truncatung保留为重定向的stdout,如何阻止它? 要么: 2.如何在命令行上获取重定向以对nohup和sudo执行的命令进行操作,而不是整个命令行? 要么: 对我的启发和启蒙都有上述答案。
问候 - 菲利普