[РЕШЕНО] Необходимо вызывать скрипт: при загрузке -И- при выключении -И- каждые 5 минут

От избытка оперативы и в заботах о стареньком винчестере, а также для ускорения вещей, решил хранить кэш Google Chrome в оперативке (ramdrive).

Для этого имеется:

1. ramdrive, монтируемый в ~/.chrome/ramdrive

2. скрипт для сохранения содержимого диска в архив и для извлечения обратно:
#!/bin/bash

shopt -s dotglob
cd /home/$USER/.chrome

if [[ "$1" == "save" ]]; then
        rm ramdisk.tar
        tar cpf ramdisk.tar ramdisk/*
elif [[ "$1" == "restore" ]]; then
        rm -rf ramdisk/*
        tar xf ramdisk.tar
fi

3. systemd сервис-файл, который запускает вышеупомянуты скрипт при загрузке и при выключении:
[Unit]
Description=Keep Chrome's RAM disk between power-offs

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/home/$USER/bin/chrome-ramdisk restore
ExecStop=/home/$USER/bin/chrome-ramdisk save

[Install]
WantedBy=multi-user.target

Все работает замечательно, но я бы хотел поместить на этот диск еще и "user data" (помимо одного лишь кэша), и меня волнует сохранность данных в случае зависания, внезапного/некорректного выключения. Для этого неплохо было бы обновлять архив еще и на регулярной основе (а не только в момент выключения).

Можно ли решить этот вопрос:
а. Изменением имеющегося .service файла?
б. Добавлением отдельного .service файла специально для периодики?

Решение через CRONTAB мне известно, но я предпочел бы systemd. Оставлю крон как запасной вариант.

----

Решение через systemd.timers:

1. /etc/systemd/system/chrome-ramdisk.service (срабатывает при ВКЛ-ВЫКЛ системы):
[Unit]
Description=Keep Chrome's RAM disk between power-offs

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/home/pilat/bin/chrome-ramdisk restore
ExecStop=/home/pilat/bin/chrome-ramdisk save

[Install]
WantedBy=multi-user.target

2. /etc/systemd/system/chrome-ramdisk.timer (Таймер):
[Unit]
Description=Sync Chrome RAMdisk every 15 minutes

[Timer]
# Time to wait after booting before we run first time
OnBootSec=15min
# Time between running each consecutive time
OnUnitActiveSec=15min
Unit=chrome-ramdisk-job.service

[Install]
WantedBy=multi-user.target

# (c) http://jason.the-graham.com/2013/03/06/how-to-use-systemd-timers/

3. /etc/systemd/system/chrome-ramdisk-job.service (Job-юнит, пинаемый Таймером):
[Unit]
Description=Service file for timed saving of Chrome RAMdisk

[Service]
Type=simple
ExecStart=/home/pilat/bin/chrome-ramdisk save

Источник: http://jason.the-graham.com/2013/03/06/how-to-use-systemd-timers/
mityukov
Решение через CRONTAB мне известно, но я предпочел бы systemd. Оставлю крон как запасной вариант.
systemd-timers?
PGP 0x31361F01
arcanisrepo
Уже есть для кэша в памяти велосипед.
mityukov
Решение через CRONTAB мне известно, но я предпочел бы systemd. Оставлю крон как запасной вариант.
крон уже устаревший! большая часть системы на systemd-timers переехала.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
 
Зарегистрироваться или войдите чтобы оставить сообщение.