LINUX.ORG.RU
решено ФорумAdmin

Помогите написать unit для systemd

 


0

1

Есть такая штука tacacs+, да она старая-дырявая и прочее, но надо поставить.

Из консоли нормально стартует:

root@tacacs:~/tacacs-F4.0.4.28# /usr/sbin/tac_plus -C /etc/tacacs+/tac_plus.cfg
root@tacacs:~/tacacs-F4.0.4.28# ss -tanlp | grep 49
LISTEN 0      4096         0.0.0.0:49         0.0.0.0:*    users:(("tac_plus",pid=11762,fd=0))
LISTEN 0      4096            [::]:49            [::]:*    users:(("tac_plus",pid=11762,fd=2))

написал такой модуль:
[Unit]
Description=TACACS+ daemon instance tacacs
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/tac_plus -C /etc/tacacs+/tac_plus.cfg
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failture

[Install]
WantedBy=multi-user.target

Стартовать не хочет:
root@tacacs:~/tacacs-F4.0.4.28# systemctl status tac_plus
* tac_plus.service - TACACS+ daemon instance tacacs
     Loaded: loaded (/etc/systemd/system/tac_plus.service; enabled; preset: enabled)
     Active: inactive (dead) since Wed 2025-01-15 11:43:13 UTC; 13min ago
   Duration: 3ms
       Docs: man:tac_plus(8)
             man:tac_plus.conf(5)
    Process: 11725 ExecStart=/usr/sbin/tac_plus -C /etc/tacacs+/tac_plus.cfg (code=exited, status=0/SUCCESS)
   Main PID: 11725 (code=exited, status=0/SUCCESS)
        CPU: 4ms

Jan 15 11:43:13 tacacs systemd[1]: Started tac_plus.service - TACACS+ daemon instance tacacs.
Jan 15 11:43:13 tacacs tac_plus[11725]: Reading config
Jan 15 11:43:13 tacacs tac_plus[11725]: Version F4.0.4.28 Initialized 1
Jan 15 11:43:13 tacacs tac_plus[11726]: Received signal 15, shutting down
Jan 15 11:43:13 tacacs tac_plus[11727]: Received signal 15, shutting down
Jan 15 11:43:13 tacacs systemd[1]: tac_plus.service: Deactivated successfully.

★★★★★
Ответ на: комментарий от anonymous

+ kostik87

с forking аналогично:

* tac_plus.service - TACACS+ daemon instance tacacs
     Loaded: loaded (/etc/systemd/system/tac_plus.service; enabled; preset: enabled)
     Active: inactive (dead) since Wed 2025-01-15 12:03:39 UTC; 3s ago
   Duration: 894us
       Docs: man:tac_plus(8)
             man:tac_plus.conf(5)
    Process: 11855 ExecStart=/usr/sbin/tac_plus -C /etc/tacacs+/tac_plus.cfg (code=exited, status=0/SUCCESS)
   Main PID: 11856 (code=exited, status=0/SUCCESS)
        CPU: 6ms

Jan 15 12:03:39 tacacs systemd[1]: Starting tac_plus.service - TACACS+ daemon instance tacacs...
Jan 15 12:03:39 tacacs tac_plus[11855]: Reading config
Jan 15 12:03:39 tacacs tac_plus[11855]: Version F4.0.4.28 Initialized 1
Jan 15 12:03:39 tacacs systemd[1]: Started tac_plus.service - TACACS+ daemon instance tacacs.
Jan 15 12:03:39 tacacs tac_plus[11857]: socket FD 0 AF 2
Jan 15 12:03:39 tacacs tac_plus[11857]: socket FD 2 AF 10
Jan 15 12:03:39 tacacs tac_plus[11857]: Received signal 15, shutting down
Jan 15 12:03:39 tacacs systemd[1]: tac_plus.service: Deactivated successfully.


нет ли параметра для работы не в фоне.

нет, он по дефолту в фон уходит, там наоборот есть ключ чтобы в фронте оставался

Kolins ★★★★★
() автор топика
Последнее исправление: Kolins (всего исправлений: 1)
Ответ на: комментарий от kostik87

Помести строку запуска в bash скрипт и вызывай его с типом forking.

да, так заработало, спасибо

Ещё можно пользователя явно задать.

это следующий шаг

Kolins ★★★★★
() автор топика
  1. Скорее всего, дело в +, это используемый управляющий символ в systemd: https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html

  2. https://github.com/abn/tac_plus-rpm, старый, но, возможно, подойдёт (после переработки)

  3. Restart=on-failture - тут опечатка

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 3)
Ответ на: комментарий от Dimez

Скорее всего, дело в +, это используемый управляющий символ в systemd: https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html

может и в этом, переменовал каталог с конфигом, но без вызова через sh всеравно не работало

https://github.com/abn/tac_plus-rpm, старый, но, возможно, подойдёт (после переработки)

у меня он и есть, работает и ладно, если что поновее появится буду переходить

Restart=on-failture - тут опечатка

спасибо, поправил

Kolins ★★★★★
() автор топика
Последнее исправление: Kolins (всего исправлений: 1)