LINUX.ORG.RU

История изменений

Исправление Deleted, (текущая версия) :

Это пока наилучший вариант который я увидел, не подскажите где посмотреть реализацию, не до конца понимаю, ExecStartPost это название файла? Или systemd-hibernate.service.d должен являться файлом? У меня нет systemd-hibernate.service.d ни в качестве файла, ни в качестве папки.

Это такой стандартный способ изменения системных сервисов без изменения файлов в /lib/systemd/system/, которые ставятся из пакетов и не должны редактироваться вручную.

В твоём случае нужно переместить скрипт из /lib/systemd/system-sleep/ в какое-нибудь другое место. Затем нужно создать директорию /etc/systemd/system/systemd-hibernate.service.d, в неё положить файл с каким-нибудь именем .conf (например: 50-add-my-script.conf) и примерно таким содержимым:

[Service]
ExecStartPost=/новый/путь/к/твоему/скрипту post hibernate
Затем нужно сделать
systemctl daemon-reload
И всё должно работать. Надеюсь, никаких дополнительных таймаутов для ExecStartPost не существует...

Возможно, всё то же самое тебе нужно проделать также для systemd-hybrid-sleep.service и systemd-suspend-then-hibernate.service.

Кстати, похоже есть ещё один способ сделать то, что ты хочешь: создать отдельный сервис для твоего скрипта, указать что он должен работать стого после systemd-hibernate.service и добавить его в hibernate.target.

И в данном случае скрипт будет выполняться без ограничения по времени?

Да, должен без ограничения по времени.

Исходная версия Deleted, :

Это пока наилучший вариант который я увидел, не подскажите где посмотреть реализацию, не до конца понимаю, ExecStartPost это название файла? Или systemd-hibernate.service.d должен являться файлом? У меня нет systemd-hibernate.service.d ни в качестве файла, ни в качестве папки.

Это такой стандартный способ изменения системных сервисов без изменения файлов в /lib/systemd/system/, которые ставятся из пакетов и не должны редактироваться вручную.

В твоём случае нужно переместить скрипт из /lib/systemd/system-sleep/ в какое-нибудь другое место. Затем нужно создать директорию /etc/systemd/system/systemd-hibernate.service.d, в неё положить файл с каким-нибудь именем .conf (например: 50-add-my-script.conf) и примерно таким содержимым:

[Service]
ExecStartPost=/новый/путь/к/твоему/скрипту post hibernate
Затем нужно сделать
systemctl daemon-reload
И всё должно работать. Надеюсь, никаких дополнительных таймаутов для ExecStartPost не существует...

Возможно, всё то же самое тебе нужно проделать также для systemd-hybrid-sleep.service и systemd-suspend-then-hibernate.service.

Кстати, похоже есть ещё один способ сделать то, что ты хочешь: создать отдельный сервис для твоего скрипта, указать что он должен работать стого после hibernate.service и добавить его в hibernate.target.

И в данном случае скрипт будет выполняться без ограничения по времени?

Да, должен без ограничения по времени.