Создать файл журнала очень просто. По умолчанию все журналы в журнале также попадают в системный журнал, и это значение по умолчанию должно быть на месте. rsyslog.conf управляет тем, как обрабатываются записи, передаваемые в syslog. Кроме того, SyslogFacility
по умолчанию имеет значение daemon
, поэтому записи журнала для любой службы обычно заканчиваются в файле daemon.log
в /var/log
.
В вашем сервисном файле добавьте в раздел [service]
SyslogFacility=local2
(число может быть от 0 до 7)https://www.freedesktop.org/software/systemd/man/systemd.exec.html
Измените /etc/rsyslog.conf (найдите существующие строки для изменения )так, чтобы local2 регистрировался в определенном файле (первая строка )и в идеале не регистрировался в системном журнале, добавив local2.none
как показано (он уже есть в журнале ).
local2.* /var/log/your-service-name.log
*.*;auth,authpriv.none,local2.none -/var/log/syslog
[править] вам также нужно изменить весь охват
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none,local2.none -/var/log/messages
Конечно, тогда фактическое удержание должно быть выполнено с помощью logrotate.
ХТХ
Это непросто, но есть решение.
Начнем со службы, которая запускает VNC и подключает нас к экрану входа в GDM
$ systemctl cat vnc-gdm.service
# /etc/systemd/system/vnc-gdm.service
[Unit]
Description=VNC Server (gdm)
After=graphical.target
[Service]
ExecStart=bash -c 'x11vnc -auth /run/user/$(id -u Debian-gdm)/gdm/Xauthority -display :0 -nopw'
Restart=on-failure
RestartSec=3
[Install]
WantedBy=graphical.target
Затем для каждого пользователя, которого мы хотим поддерживать, мы добавляем еще один сервис VNC. Он будет опрашивать каждые 2 секунды в ExecStartPre=
, чтобы узнать, есть ли у этого пользователя экземпляр Xorg
. Когда это произойдет, он остановит vnc-gdm.service
, чтобы освободить порт 5900
, чтобы его собственный экземпляр x11vnc
мог привязаться к нему.
Затем запускается x11vnc
.
$ systemctl cat vnc-stew.service
# /etc/systemd/system/vnc-stew.service
[Unit]
Description=VNC Server (stew)
After=graphical.target
[Service]
User=stew
ExecStartPre=sh -c 'while ! pgrep -U stew Xorg; do sleep 2; done'
ExecStartPre=+systemctl stop vnc-gdm.service
ExecStart=x11vnc -many -shared -display :1 -auth /home/stew/.Xauthority -rfbauth /home/stew/.vnc/passwd
Restart=on-failure
RestartSec=3
[Install]
WantedBy=graphical.target
Я говорю, что это не гладко, потому что как только вы входите в систему через gdm :, ваше соединение обрывается, и вам нужно повторно подключиться к вашему новому дисплею. Я также не тестировал это с несколькими пользователями. Кроме того, если я выйду -из сеанса X -, я почти уверен, что не смогу вернуться.
Мне также не нравится, как мы используем systemctl stop
в ExecStartPre=
.