Alguns pensamentos da parte superior da minha cabeça: você poderia usar | sudo -u mainuser tee
para gravar o arquivo (mas se você quiser dividir STDOUT e STDERR, ele pode tornar-se um pouco confuso ), ou você poderia no script verificar se o log arquivos existem e são de propriedade de mainuser
, se não criar e chown mainuser
. Em seguida, anexar a saída como você manteria a propriedade.
Snippet rápido:
#!/bin/sh
user="mainuser"
group="mainuser"
for i in /home/mainuser/data/logs/app.log /home/mainuser/data/logs/app.err.log; do
if [ ! -f "${i}" ] || [ "$(stat -c%U -- "${i}")" != "${user}" ]; then
touch -- "${i}"
chown ${user}:${group} -- "${i}"
fi
done
Isso é rápido e não lida com casos como os arquivos de log existentes como diretórios / links e assim por diante muito bem, mas na prática pode ser bom.
Eu não trabalhei com o Upstart, então talvez existam formas mais simples.