https://habr.com/ru/company/southbridge/blog/255845/ (С)
https://www.redhat.com/sysadmin/systemd-oneshot-service
systemd — подсистема инициализации и управления службами в Linux Debian
systemctl list-units - список юнитов добавленных в systemd
systemctl list-unit-files - все доступные unit-файлы
systemctl list-units -t service - список активных сервисов
systemctl list-units --all - список сервисов, которые пытался загрузить systemd
systemctl cat NetworkManager.service - информация о модуле сервиса
systemctl is-active NetworkManager.service -является ли сервис NetworkManager.service активным на данный момент
systemctl stop NetworkManager.service - остановка сервиса NetworkManager.service
systemctl start NetworkManager.service - остановка сервиса NetworkManager.service
systemctl enable NetworkManager.service - включение сервиса в автозагрузку
systemctl disable NetworkManager.service - удаление нужного сервиса из автозагрузки
systemctl status NetworkManager.service - просмотр статуса NetworkManager.service
systemctl list-unit-files --type target - список всех таргетов, полезно для написания своего юнита
Задача возникла из-за необходимости автоматически включать Wi-Fi интерфейс в старом ноутбуке HP Pavilion g7
Будем создавать службу wi-fi-on.service
1) Создаем файл /etc/systemd/system/wi-fi-on.service
[Unit]
Description=Enables WiFi
[Service]
Type=oneshot
User=root
ExecStart=/opt/wi-fi-on.sh
[Install]
WantedBy=multi-user.target
2) Включаем наш сервис в автозагрузку
systemctl enable wi-fi-on.service
3) Содержимое файла /opt/wi-fi-on.sh
#!/bin/bash
#rfkill unblock all
nmcli r wifi on
!!!Внимание - rfkill unblock all не помогала в рамках скрипта, поскольку NetworkManager блокировал Wi-Fi обратно.
Запуск сервера GSecTLS при запуске системы
1) Создаем файл модуля сервиса /etc/systemd/system/GSecTLS .service:
права на файл - 644
[Unit]
Description=Start up of GSecTLS server on boot
After=systemd-networkd.service
[Service]
Type=oneshot
User=root
ExecStart=/opt/GSecTLS.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
2) Включаем наш сервис в автозагрузку
systemctl enable GSecTLS .service
3) Содержимое файла /opt/GSecTLS.sh
права на файл - 644
#!/bin/bash
GSecTLS