LINUX.ORG.RU

Не хочет работать systemd-юнит

 ,


0

1

Сбсна не хочет работать systemd-юнит с таким содержанием:

[Unit]
Description=woraraund for zram
Before=shutdown.target

[Service]
ExecStart=/bin/sed -i 's/resume=UUID/#resume=UUID/g' /boot/grub2/grub.cfg
Type=simple
RemainAfterExit=yes 

[Install]
WantedBy=shutdown.target
Положил его в /etc/systemd/system/ systemctl enable и start делал. Юнит должен отрабатывать перед каждым выключением (еще бы хорошо и перед перезагрузкой). Подскажите кто знает...

Идиома systemd #42, «запуск скрипта при выключении системы»:

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/path/to/script

[Install]
WantedBy=multi-user.target

Твой Before= здесь не нужен.

Но вообще это выглядит как ужасный костыль, я думаю, тебе нужно решать корневую проблему, а не маскировать симптомы.

Если хочешь костылить ­-- лучше напиши хотя бы .path-юнит, который будет активироваться при изменении /boot/grub2/grub.cfg, чем херачить при каждом ребуте. Так, как это написано сейчас, оно будет дописывать ещё одну решётку при каждом срабатывании. Не говоря уже о том, что если я правильно понимаю твой полёт мысли, тебе это нужно делать перед гибернацией, а ты просишь перед выключением.

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

Да костыль. Хочу использовать как временное решение. Гибернация не нужна, только выкл и ребут. .path-юнит действительно лучше. Тебя не затруднит объяснить более развернуто?

Kapshibergen
() автор топика
Ответ на: комментарий от Kapshibergen

.path - юнит который мониторит файловый объект и срабатывает при действиях с ним.

https://www.freedesktop.org/software/systemd/man/systemd.path

PathChanged= may be used to watch a file or directory and activate the configured unit whenever it changes. It is not activated on every write to the watched file but it is activated if the file which was open for writing gets closed.

активации при закрытии открытого на запись файла.

PathModified= is similar, but additionally it is activated also on simple writes to the watched file

активация при любой записи в файл.

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

unit-name.path:

[Unit]
RequiresMountsFor=/boot/grub2/grub.cfg

[Path]
PathChanged=/boot/grub2/grub.cfg

[Install]
WantedBy=paths.target

unit-name.service:

[Unit]
RequiresMountsFor=/boot/grub2/grub.cfg

[Service]
Type=oneshot
ExecStart=/bin/sed -re 's|resume=[^ ]+||' -i /boot/grub2/grub.cfg

[Install]
Also=unit-name.path

Юниты должны иметь одинаковую часть названия до точки (в моём примере unit-name), это существенно.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 4)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.