Como obtenho a saída deste script python para anexar a um arquivo de log
sudo inotifywait -mr --format '%e%w%f' --event move $srdir | python3 /usr/bin/m-sync.py $bkdir $srdir >> /mnt/msync.py.log2
não funciona. Nenhuma mensagem de erro, apenas um arquivo de log não modificado vazio.
Se eu fizer apenas sudo inotifywait -mr --format '%e%w%f' --event move $srdir | python3 /usr/bin/m-sync.py $bkdir $srdir
, a saída será enviada para o console conforme o esperado.
Por fim, sudo inotifywait -mr --format '%e%w%f' --event move $srdir | python3 /usr/bin/m-sync.py $bkdir $srdir >> /mnt/msync.py.log2
é executado a partir de um script como um serviço pelo systemd, mas não acho que seja relevante, pois quando eu o executo manualmente a partir da linha de comando, ele ainda não faz log.
Em todos os casos, o script realmente faz o trabalho corretamente, eu simplesmente não consigo obter sua saída em um log.
O script python apenas incase importa:
#!/usr/bin/python3
import sys
import time
from subprocess import call
src = ""
bkdir = sys.argv[1]
srdir = sys.argv[2]
while True:
line = sys.stdin.readline()
event, path = line.split("/",1)
path="/"+path.rstrip();
if event in ["MOVED_FROM","MOVED_FROM,ISDIR"]:
src = path.replace(srdir, bkdir, 1)
if event in ["MOVED_TO","MOVED_TO,ISDIR"]:
dst = path.replace(srdir, bkdir, 1)
sys.stdout.write(time.strftime("%Y-%m-%d %H:%M:%S") + " mv " + src + " " + dst )
call(["mv", src, dst])
Edit: Aparentemente sudo inotifywait -mr --format '%e%w%f' --event move $srdir | sudo python3 /usr/bin/m-sync.py $bkdir $srdir >> /mnt/msync.py.log2
executado a partir da linha de comando funciona. Observe o segundo sudo antes de invocar python. No entanto, quando executado pelo systemd, tudo é root por padrão e ainda não é enviado para o log.