LINUX.ORG.RU

Выполнить действие перед размонрированием разделов

 ,


1

1

Хочу вынести кое-какую директорию на tmpfs(/dev/shm) и перед выключением системы (до того как диски размонтировались) копировать данные с tmpfs на постоянный раздел. Я как понимаю этот самый момент перед размонтированием нужно ловить через systemd? Но не получается нагуглить таргет, перед которым нужно запустить сервис, единственное что нашел это «umount.target», но судя по всему это уже финальная стадия и если в сервисе указать: «Before=umount.target»

то есть шанс попасть уже на размонтированное устройство. Как правильно реализовать? Да и всё происходит на Arch, если это важно.


Во-первых, не клади ничего в /dev/shm. Для пользовательских целей есть /tmp.

Во-вторых, примерно так:

[Unit]
DefaultDependencies=no
Before=sysinit.target shutdown.target
RequiresMountsFor=/tmp /path/to/persistent/storage
Conflicts=shutdown.target

[Service]
Type=oneshot
ExecStart=/path/to/restore/script
ExecStop=/path/to/save/script

[Install]
WantedBy=sysinit.target

Вместо /path/to/persistent/storage — путь до той точки монтирования, где ты будешь хранить архив. Вместо /path/to/restore/script и /path/to/save/script — пути до скриптов.

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

Спасибо, попробую сегодня после работы.

А почему, кстати, нельзя хранить данные в /dev/shm? Например в archwiki для хранении кеша Firefox используют пример именно с /dev/shm

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

Да, я видел, но как я понял он просто раз в час синхронизирует всё, абсолютно не заботясь о синхронизации перед выключением, по крайней мере я не нашел как он это делает.

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

Потому что эту ФС использует glibc для своих внутренних нужд (для реализации system v shared memory), и ты можешь ему помешать.

Если в арчвики так написано — значит, это было написано некомпетентным человеком.

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

Если вдруг кому-то понадобится, то к примеру в первом ответе нужно добавить строку «RemainAfterExit=yes» в "[Service]" и тогда всё работает отлично.

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

Да, точно, забыл. Спасибо за исправление.

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