Não é possível filtrar journalctl para o serviço do usuário

4

Eu criei o seguinte arquivo de serviço em ~/.config/systemd/user para fazer backup dos dados do meu trabalho quando estou logado no trabalho.

[Unit]
Description=Backup Work Related Files

[Service]
Type=oneshot
ExecStartPre=/usr/bin/ping -c 1 -W 1 xxx
ExecStart=/usr/bin/rsync -avzuhH --progress --delete --exclude=.Trash-1000 /some/folder/ xxx@xxx:Documents/backup
ExecStart=/usr/bin/rsync -avzuhH --progress file xxx@xxx:Documents/backup/file

Eu posso encontrar o serviço com systemctl --user list-unit-files e também posso iniciar o serviço com systemctl --user start backup_work.service . Por algum motivo, não consigo ver os registros desse serviço com journalctl --user -u backup_work.service . Eu vejo os logs do rsync e ping quando olho normalmente no diário, mas não consigo filtrar para o arquivo de serviço.

Há algo que eu preciso alterar no arquivo de serviço?

    
por kain88 23.08.2016 / 13:18

1 resposta

4

Você precisa de --user-unit= para filtrar as unidades do usuário, pois elas têm diferentes metadados anexados.

$ SYSTEMD_LOG_LEVEL=debug journalctl --user-unit=foobar
Journal filter: (((_UID=0 OR _UID=1000) AND OBJECT_SYSTEMD_USER_UNIT=foobar.service)
                 OR ((_UID=0 OR _UID=1000) AND COREDUMP_USER_UNIT=foobar.service)
                 OR (_UID=1000 AND USER_UNIT=foobar.service)
                 OR (_UID=1000 AND _SYSTEMD_USER_UNIT=foobar.service))

-u sempre adiciona filtros para unidades do sistema - é independente de --user , que seleciona apenas quais arquivos do diário devem ser lidos. (Na maioria das vezes você não precisa --user.)

$ SYSTEMD_LOG_LEVEL=debug journalctl --unit=foobar
Journal filter: ((OBJECT_SYSTEMD_UNIT=foobar.service AND _UID=0)
                 OR (UNIT=foobar.service AND _PID=1)
                 OR (COREDUMP_UNIT=foobar.service AND _UID=0 AND MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1)
                 OR _SYSTEMD_UNIT=foobar.service)
    
por 23.08.2016 / 14:35

Tags