gnu screen як системний сервіс

| щоденник, комп'ютери, linux, підказка

отже, знову про gnu screen, від якого я в захваті: arch wiki підказує, що screen можна запускати автоматично для сесій того чи іншого користувача, як системний сервіс systemd. може бути зручно (особливо на серверах), бо тоді screen стартує окремо від самої сесії, і не закривається разом з нею.

робиться просто: створюється файл /etc/systemd/system/screen@.service з таким вмістом:

[Unit]
Description=screen
After=network.target

[Service]
Type=simple
User=%i
ExecStart=/usr/bin/screen -DmS autoscreen
ExecStop=/usr/bin/screen -S autoscreen -X quit

[Install]
WantedBy=multi-user.target

далі — включаємо автостарт сервісу для якогось користувача (наприклад, для urist’а):

  $ [sudo] systemctl enable screen@urist

може знадобитися перезавантажити конфігурацію systemd (якщо сервіс вже існував, але знадобилося відредагувати файл .service тощо):

  $ [sudo] systemctl daemon-reload

можна одразу запустити screen:

  $ [sudo] systemctl start screen@urist

все, сесія screen для urist’а стартватиме автоматично на старті системи й чекатиме, поки urist підключиться — і крутитиметься далі навіть після того, як він відключиться. підключатися як зазвичай:

  $ screen -r [autoscreen]