скажімо, ми маємо сервер з linux без графічного середовища, на якому щось крутиться; цей сервер був «безголовий», аж ось хтось прикрутив до стіни кронштейн з монітором, і тепер в сервера є екран — але там нічого не показує, окрім запрошення залогінитися (яким ніхто ніколи не користується, тому що ssh). як вивести щось корисне чи просто цікаве на цей екран, — скажімо, htop
? — без потреби логінитися руцями? відповідь: налаштувати автологін «користувача» з дуже обмеженими правами у віртуальній консолі tty1, з автозапуском htop
. спробуймо.
користувач htop
найпростіше, що спадає на думку для автозапуску чогось — вказати, скажімо, /usr/bin/htop
як «оболонку» для користувача. отже, системний користувач без пароля (-r) з id 999 (-u) без домашньої теки (-M) чи групи (-N), і /usr/bin/htop
замість оболонки:
sudo useradd -M -N -r -u 999 -c "Run htop on tty1" -s /usr/bin/htop htop
перевірка, чи все на місці:
sudo grep htop /etc/passwd
автологін до tty1
тепер можна налаштувати автологін до віртуальної консолі tty1 для htop’а:
sudo mkdir -p /etc/systemd/system/getty@tty1.service.d
sudo nano /etc/systemd/system/getty@tty1.service.d/autologin.conf
# ----- >8 -----
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin htop --noclear %I linux
# ----- 8< -----
лишилось випробувати, перезапустивши віртуальну консоль tty1 (НЕ варто пробувати безпосередньо на своєму комп’ютері — можна залишитися без графічного середовища):
sudo systemctl daemon-reload
sudo systemctl restart getty@tty1.service
якщо щось пішло не так — переключитися на іншу tty (ctrl+alt+f2-6
), прибрати/відредагувати файл /etc/systemd/system/getty@tty1.service.d/autologin.conf
і знову перезапустити сервіс getty@tty1.service
. якщо все гаразд — на підключеному до сервера моніторі з’явиться htop.
варіант з опціями?
додавання htop до /etc/passwd як «оболонку» для користувача зваблює простотою і надійністю: htop неможливо закрити, бо спроба це зробити вилогінює користувача htop, але systemd знову запускає agetty — автологін, і знову htop на екрані. але є одне але: стандартно htop
поновлює екран щодві секунди, і з часом це почина дратувати. окрім того, непогано було би відображати дерево процесів, сортувати за навантаженням процесора тощо:
htop --delay 50 --readonly --tree --sort-key PERCENT_CPU --highlight-changes=100
але… /etc/passwd
не дозволяє додати опції для оболонки. можна дозволити користувачеві htop логінитися, зробити bash оболонкою, і додати автостарт до .bashrc
, але… мій кіт зможе підключити клавіатуру й наклацяти якусь шкоду на сервері? ніт.
наразі все, піду-но я спати.
поновлення. як правильно натякнув disfinder в коментарях, ніхто не боронить намалювати будь-які опції htop’ові в окремому скрипті, а вже скрипт зробити «оболонкою» для користувача? єдина засторога: далеко не факт, що htop на сервері (debian 10 buster) і htop на лептопі (manjaro) виявляться тим самим htop’ом, — варто перевірити, які опції пітримує той, що буде на дисплеї (в моєму випадку --readonly
та --highlight
не підтримуються). отже:
sudo touch /bin/htop.kiosk
sudo nano /bin/htop.kiosk
# ----- >8 -----
#!/bin/sh
/bin/htop --delay 50 --tree --sort-key PERCENT_CPU
# ----- 8< -----
невеличка заміна в профілі користувача htop, і не забути перезавантажити сервіс автологіну:
sudo usermod -s /bin/htop.kiosk htop
sudo systemctl restart getty@tty1.service
готово.
p.s. аптайм домашнього сервера: 264 дні.