4

Я создал следующий служебный файл в ~/.config/systemd/user для резервного копирования моих рабочих данных, когда я захожу на работу.

[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

Я могу найти сервис с помощью systemctl --user list-unit-files и я также могу запустить сервер с помощью systemctl --user start backup_work.service . По какой-то причине я не вижу журналы для этой службы с journalctl --user -u backup_work.service . Я вижу журналы rsync и ping, когда выгляжу нормально в журнале, но не могу отфильтровать файл службы.

Что-то мне нужно изменить в служебном файле?

1 ответ1

5

Вам нужно --user-unit= для фильтрации пользовательских единиц, поскольку к ним прикреплены разные метаданные.

$ 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 всегда добавляет фильтры для системных блоков - он не зависит от --user , который только выбирает, из каких файлов журнала читать. (В большинстве случаев вам не нужен --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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .