Tenho um script de backup (wrapper rsync) em execução, eu estava usando --log-file
flag com rsync antes, depois de mudar para StandardOutput/StandardError o systemd começou a acrescentar ' ^M ' entre as linhas de log. Como posso removê-lo com a instrução de arquivo unitário, por favor?
[Unit]
Description=...
Wants=...
[Service]
Type=oneshot
User=adrian
Group=adrian
ReadOnlyPaths=/
ReadWritePaths=/var/log/foo.log
StandardOutput=append:/var/log/foo.log
StandardError=append:/var/log/foo.log
ExecPaths=/usr/local/bin /usr/bin /bin
ExecStart=/usr/local/bin/foo_script.sh
[Install]
WantedBy=multi-user.target
Configurações de ambiente
echo $LANG
en_US.UTF-8
Tentei vários modos de saída, mas com o mesmo resultado.
Não é causado pelo editor ou outra ferramenta, o systemd loggin está anexando-o. A versão original com o logging especificado no script com o sinalizador rsync estava funcionando sem nenhum problema. journalctl -u <service name>
está renderizando ok, mas a diretiva de saída do systemd está anexando-o ali.
Conforme confirmado nos comentários, os caracteres de retorno de carro não foram colocados pelo systemd no arquivo definido nos parâmetros
StandardOutput=
e do serviçoStandardError=
, mas estavam sendo emitidos porrsync
ele mesmo devido à presença da--progress
opção na linha de comando.A
--progress
opção (que também pode ser habilitada por meio da-P
opção macro) faz com que o rsync produza contagens progressivas dos bytes e da porcentagem de cada arquivo conforme ele é transferido. Essas contagens produzem uma linha seguida por um caractere de retorno de carro para que o cursor permaneça na mesma linha em um terminal, e a próxima atualização sobrescreva a contagem anterior. Uma nova linha é enviada para mover para a próxima linha no terminal quando o rsync começa a transferir o próximo arquivo ou conclui a sessão de transferência e produz as contagens de resumo da sessão.O OP confirmou que remover a
--progress
opção do comando rsync no script wrapper também removeu os caracteres de retorno de carro no arquivo de log de saída, resolvendo o problema.