вторник, 29 мая 2012 г.

systemd и скрипт after.local

Не так давно писал про сервисы и демоны в Linux, где присутствует стартовый скрипт /etc/init.d/after.local из openSUSE.
Но пытаясь остановить bootchart с помощью этого скрипта, оказалось, что со всеми любимым systemd, after.local никакого эффекта не имеет вовсе, что мне даже подтвердили в bugzilla. Однако, jdmcdaniel3 описал как всё-таки подружить systemd и after.local.

Всё сводится к трём шагам:

1. Создать /lib/systemd/system/after-local.service со следующим содержимым:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.

[Unit]
Description=/etc/init.d/after.local Compatibility
ConditionFileIsExecutable=/etc/init.d/after.local

[Service]
Type=oneshot
ExecStart=/etc/init.d/after.local
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target


2. Собственно добавить after-local.service в автозагрузку, чтоб systemd понимал, что от него требуется:

systemctl enable /lib/systemd/system/after-local.service


3. Отредактировать /etc/init.d/after.local, вписав туда то, что вам нужно.
 

5 комментариев:

  1. Пардон, а от какого пользователя будет исполняться записанное в after.local? и возможно ли явным образом это указать?

    ОтветитьУдалить
    Ответы
    1. От root. Возможно указать, думаю, с помощью su

      Удалить
    2. Этот комментарий был удален автором.

      Удалить
    3. тоесть как писать?

      su user program

      или же

      su user
      program?

      первый вариант в консоли не работает.

      или может быть написать скрипт и запускать его?

      Удалить
    4. Вот: http://www.linux.org.ru/forum/general/5773560

      Удалить