LINUX.ORG.RU

Cron

 ,


1

1

В тред призываются мастера cron.

Заимел скрипт

cat /backup.sh 
#!/bin/sh
# backup with timeshift
if zenity --question --text='<span font="12">НАСТАЛО ВРЕМЯ БЕКАПА!</span>\nНачать бекап прямо сейчас?' \
        --default-cancel --cancel-label="Отложить" --ok-label='Да'; then
    echo "run backup app"
timeshift --create
fi
Скрипт работает

Согласно Archwiki, делаю su -c "crontab -e", прописываю, предположим, 09 20 * * * /backup.sh для проверки и, естественно, раз я сюда пишу, ничего не работает. В журнале следующее

апр 24 20:09:01 fake sudo[18647]:     anon : TTY=pts/1 ; PWD=/home/fake ; USER=root ; COMMAND=/usr/bin/crontab -l -u root
апр 24 20:09:01 fake sudo[18647]: pam_unix(sudo:session): session opened for user root by (uid=0)
апр 24 20:09:01 fake crontab[18648]: (root) LIST (root)
апр 24 20:09:01 fake sudo[18647]: pam_unix(sudo:session): session closed for user root
апр 24 20:09:01 fake crond[592]: (root) CAN'T OPEN (/etc/crontab): Нет такого файла или каталога
апр 24 20:09:01 fake crond[592]: (root) RELOAD (/var/spool/cron/root)
апр 24 20:09:01 fake kernel: audit: type=1006 audit(1556125741.424:153): pid=18655 uid=0 old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=9 res=1
апр 24 20:09:01 fake crond[18655]: pam_unix(crond:session): session opened for user root by (uid=0)
апр 24 20:09:01 fake CROND[18656]: (root) CMD (/backup.sh)
апр 24 20:09:01 fake CROND[18655]: (root) CMDOUT (Unable to init server: Не удалось подключиться к: В соединении отказано)
апр 24 20:09:01 fake CROND[18655]: (root) CMDOUT ()
апр 24 20:09:01 fake CROND[18655]: (root) CMDOUT ((zenity:18657): Gtk-WARNING **: 20:09:01.516: cannot open display: )
апр 24 20:09:01 fake CROND[18655]: pam_unix(crond:session): session closed for user root
Как быть? Я с cron'ом первый раз столкнулся. Дистр, если что, Manjaro


Тебе же по-русски написали:

cannot open display:

Оно пытается открыть окно zenity на дисплее “”.

mord0d ★★★★★
()
Ответ на: комментарий от targitaj

Именно это он и пытается сделать. У убунтоидов получилось, и у него получится… когда-нибудь.

mord0d ★★★★★
()

Вот так работает:

0 0 * * * export DISPLAY=:0.0; /usr/local/bin/alacritty; echo OK

Но гарантий, что у тебя будет именно :0.0 дисплей, гарантий никто не даёт.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Заработало так 55 20 * * * export DISPLAY=:0.0; /backup.sh; echo OK

Осталось таймшифт победить, не запускается. Спасибо!

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

echo OK — это я забыл убрать, тебе оно не нужно (ибо оно даже в случае фейла всё равно скажет “OK”). У меня оно было, чтобы на почту хоть что-то пришло после отработки кронджобы.

Ты также можешь экспортить DISPLAY внутри скрипта (в самом начале после шебанга).

И да, крон не для интерактивщины. Сделай лучше какой-нибудь локфайл, сри туда датой последнего удачного бэкапа, потом сравнивай (установи dateutils) даты, и если оно больше скольки тебе там надо дней, делай бэкап снова. А гуйнёй в кроне лучше не обмазывайся.

mord0d ★★★★★
()

Кстати, ты в курсе, что в твоём случае скрипт будет выполняться только в 20:09? Отказался — жди следующего дня.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Да, понимаю. Как, в принципе, и бредовость затеи. Сей бэкап мне понадобился два раза — при переносе системы на новый ssd и при одном за два года косячном обновлении. Проще приучить себя перед апдейтами бэкапы делать

https://gitlab.com/gobonja/timeshift-autosnap А решение рядом

Fake
() автор топика
Последнее исправление: Fake (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Обновления в убунте предлагает так же.

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