Linux за българи: Форуми

BSD секция => Системни настройки => Темата е започната от: anakinn в Mar 22, 2007, 15:40



Титла: Crontab
Публикувано от: anakinn в Mar 22, 2007, 15:40
Имам следните редове в кронтаба (отварям го по следня начин
le /etc/crontab)

#29     15      *       *       *       root    /usr/local/bin/gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-`date +%F`.fbk
35      15      *       *       *       root    gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-`date +%F`.fbk >/dev/null 2>&1

Ако от конзола го стартирам, базата е малко за една секунда изпълнява командата - няма проблем. След всяка промяна в кронтаба правя /etc/rc.d/cronta restart ,но така и не се създаде този файл....

Предложения?


Титла: Crontab
Публикувано от: urud в Mar 22, 2007, 16:04
Пробвай с пълния път до gbak


Титла: Crontab
Публикувано от: sunshine в Mar 22, 2007, 16:13
указал си че всеки ден в 15:35 ще се изпълнява съответната функция.

Пробвай на всеки 5 мин със:
*/5      *      *       *       *       root    gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-`date +%F`.fbk >/dev/null 2>&1

ако създаде файла тогава можеш да сложиш това което ти трябва, повече описание на crontab тук


Титла: Crontab
Публикувано от: anakinn в Mar 22, 2007, 17:12
Пробвах също така и с пълния път до gbak, но все тая.
Ето какво има в /var/log/cron:

Mar 22 17:06:00 KAR1 /usr/sbin/cron[41222]: (root) CMD (   gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-`date +)

Сякаш прочита командата до преди "%" символа...


Титла: Crontab
Публикувано от: martos в Mar 22, 2007, 18:31
Пробвай да сложиш всичко в "" или го запиши в някакъв скрипт, който се извиква от крон


Титла: Crontab
Публикувано от: sunshine в Mar 22, 2007, 18:36
това със стартирането на външен скрипт ще тръгне
може cron да не може да пуска такива разширени команди и да изисква пускането на скриптче


Титла: Crontab
Публикувано от: anakinn в Mar 23, 2007, 09:48
Новия /etc/crontab

47      9       *       *       *       root    sh /data/backup/get-archive.sh

cat get-archive.sh
#!bin/sh
gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-`date +%F`.fbk

ако го стартирам ръчно
sh get-archive.sh - няма проблем :)





Титла: Crontab
Публикувано от: sunshine в Mar 23, 2007, 14:30
Неможах да разбера, тръгнали както трябва или не


Титла: Crontab
Публикувано от: anakinn в Mar 23, 2007, 18:47
Не, отново crontab не го стартира.
Просто исках да кажа, че скрипта работи sh get-archive.sh
Пусто...


Титла: Crontab
Публикувано от: Hapkoc в Mar 23, 2007, 18:57
Цитат

       In  addition  to LOGNAME, HOME, and SHELL, cron(8) will look at MAILTO if it has any reason to send mail as a result of running com-
       mands in ``this'' crontab.  If MAILTO is defined (and non-empty), mail is sent to the user so named.  If MAILTO is defined but empty
       (MAILTO=""), no mail will be sent.  Otherwise mail is sent to the owner of the crontab.


Виж пощата на потребителя, от чийто crontab се опитваш да стартираш скрипта (mail). Сложи в crontab-а нещо от тоя род:

* * * * * /bin/env > /tmp/env.out

После виж какво има в тоя файл - това е обкръжението, с което се стартират командите от cron. Можеш да го сравниш с нормалното обкръжение на потребителя (diff).

Горе-долу за това се сещам.


Титла: Crontab
Публикувано от: GoodT в Mar 23, 2007, 20:00
Махни шела "sh" от реда - 47      9       *       *       *       root    sh /data/backup/get-archive.sh


Титла: Crontab
Публикувано от: anakinn в Mar 26, 2007, 11:34
Добавих:
*       *       *       *       *       root    /bin/env > /tmp/env.out

KAR1# cat /tmp/env.out
KAR1#
празно

пробвах също така да махна "sh" от реда, който изпълнявам, но пак без ефект...

Mar 26 11:33:00 KAR1 /usr/sbin/cron[56391]: (root) CMD (/data/backup/get-archive.sh)
Mar 26 11:33:00 KAR1 /usr/sbin/cron[56392]: (operator) CMD (/usr/libexec/save-entropy)
Mar 26 11:33:27 KAR1 /usr/sbin/cron[56432]: (tmp.43582) ORPHAN (no passwd entry)
Mar 26 11:34:00 KAR1 /usr/sbin/cron[56438]: (root) CMD (/bin/env > /tmp/env.out)
Mar 26 11:34:01 KAR1 /usr/sbin/cron[56439]: (root) CMD (/data/backup/get-archive.sh)


Титла: Crontab
Публикувано от: sunshine в Mar 26, 2007, 15:14
явно нещо cron-а не работи добре
прекомпилирай го от source код
това което остава, други варянти в конфигурацията няма





Титла: Crontab
Публикувано от: anakinn в Mar 26, 2007, 17:12
Значи аз ползвам това, кеото върви с дистрибуцията.
В /usr/ports/... - има няколко крон-а - кой по-точно да сложа?

А помежду другото мисля, че крона си бачка без проблем, тъй като добавих следното:
18      13      *       *       *       root    mkdir /wwwwwwwwwwwwww

и директорията бе създадена





Титла: Crontab
Публикувано от: GoodT в Mar 27, 2007, 21:14
Остава вариянта с правата на файла (скрипта). Мисля, че не си го направил изпълним.
#chmod u+x /data/backup/get-archive.sh
Друга причина за да не го изпълни cron-a не виждам.


Титла: Crontab
Публикувано от: sunshine в Mar 27, 2007, 22:20
мдам правата , гадно обикновено всеки ги установява на 1-во място

сложи достъп 777 до скрипта и ще тръгне щом ти създава директория cron без проблем


Титла: Crontab
Публикувано от: anakinn в Mar 28, 2007, 10:55
Пак не става. chmod-нах цялата директория на 777 дори.

cat /var/log/cron
Mar 28 10:52:00 KAR1 /usr/sbin/cron[72116]: (root) CMD (gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-`date +)
Mar 28 10:53:23 KAR1 /usr/sbin/cron[72148]: (tmp.43582) ORPHAN (no passwd entry)
Mar 28 10:54:00 KAR1 /usr/sbin/cron[72158]: (root) CMD (sh /data/backup/get-archive.sh)
Mar 28 10:54:24 KAR1 /usr/sbin/cron[72187]: (tmp.43582) ORPHAN (no passwd entry)
Mar 28 10:55:00 KAR1 /usr/sbin/cron[72194]: (root) CMD (sh /data/backup/get-archive.sh)
Mar 28 10:55:00 KAR1 /usr/sbin/cron[72195]: (operator) CMD (/usr/libexec/save-entropy)
Mar 28 10:55:00 KAR1 /usr/sbin/cron[72196]: (root) CMD (/usr/libexec/atrun)

cat /etc/crontab
55      10      *       *       *       root    sh /data/backup/get-archive.sh
#52     10      *       *       *       root    gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-`date +%F`.fbk

Не знам вече...


Титла: Crontab
Публикувано от: neter в Mar 28, 2007, 11:27
Виж описанието на първия резултат от ей това търсене
http://www.google.bg/search?....10&sa=N


Титла: Crontab
Публикувано от: GoodT в Mar 28, 2007, 12:14
Пак ще кажа - махни го това "sh" от реда - 55      10      *       *       *       root    sh /data/backup/get-archive.sh
55      10      *       *       *       root    /data/backup/get-archive.sh
Шела си е указан SHELL=/bin/sh
И щом скрипта е с права за изпълнение, няма причина да не го пуска.





Титла: Crontab
Публикувано от: neter в Mar 28, 2007, 12:34
Може и нещо да пропускам, ама защо се занимавате с правата на get-archive.sh? Аз като гледам логовете, той си се изпълнява. Въпроса е, че реда с gbak не се изпълнява целия, защото % го отрязва. Затова предложих на човека да използва скоби, вместо апострофи. Може и да сложи съдържанието между апострофите в една променлива и после да я използва в реда с gbak. Току виж тези неща помогнали.





Титла: Crontab
Публикувано от: anakinn в Mar 28, 2007, 14:27
neter: сайта, който посочи, вече няколко минути чакам отговор оп мейла, но уви. Можеш ли да напишеш тука какво имаш в предвид това да използвам скоби, вместо "%" ?


Титла: Crontab
Публикувано от: neter в Mar 28, 2007, 16:00
Това, което ти пратих не е сайт, а страница с резултати от търсене в Google. Както и да е. Та там се вижда написано $(date +%A). Ти използваш `date +%F`. Виках да замениш апострофите (`) със скоби, както беше написано там. Т.е., предлагам да пробваш 2 варианта на реда. Единият е:
Цитат
gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-(date +%F).fbk

а другия е в два реда
Цитат
promenliva=(date+%F)
gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-$promenliva.fbk

Задаването на променливата можеш да я пробваш и с някоя от тези вариации
Цитат
promenliva=date+%F

Цитат
promenliva=`date+%F`

и т.н., игра на въображението. И за двата варианта ти препоръчвам да ги сложиш в един отделен скрипт и в crontab-а да зададеш изпълнението на този скрипт. Съжалявам, че приказвам толкова отнесено, но в момента нямам машина, на която да тествам какво приказвам.





Титла: Crontab
Публикувано от: anakinn в Mar 28, 2007, 16:51
Изпробвах всичките опции...

cat getarch.sh

#!bin/sh
promenliva=`date+%F`
gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-$promenliva.fbk

 sh getarch.sh
date+%F: not found

gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-(date +%F).fbk
Badly placed ()'s.
С /bin/csh съм, пробвах и с други шелове, но...

Направо не знам вече какво е.....


Титла: Crontab
Публикувано от: Hapkoc в Mar 28, 2007, 17:06
gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-$(date +%F).fbk


Титла: Crontab
Публикувано от: anakinn в Mar 29, 2007, 09:33
В cron имам
gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-$(date +%F).fbk

cat /var/log/cron

 /usr/sbin/cron[76914]: (root) CMD (gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-$(date +)

а не трябва ли в cron да направя нещо от рода на
cd /data/backup; ./archive.sh (промених името на файл)

Нали файловете се стартират така?
"./" и името на скрипта?
мисля че някъде от там идва целия проблем...





Титла: Crontab
Публикувано от: IID_IUnknown в Mar 31, 2007, 12:26
tail /var/log/cron


Титла: Crontab
Публикувано от: anakinn в Apr 02, 2007, 17:57
tail -f /var/log/cron
Apr  2 17:30:00 KAR1 /usr/sbin/cron[94246]: (root) CMD (/usr/libexec/atrun)
Apr  2 17:33:00 KAR1 /usr/sbin/cron[94249]: (operator) CMD (/usr/libexec/save-en     tropy)
Apr  2 17:35:00 KAR1 /usr/sbin/cron[94262]: (root) CMD (/usr/libexec/atrun)
Apr  2 17:40:00 KAR1 /usr/sbin/cron[94267]: (root) CMD (/usr/libexec/atrun)
Apr  2 17:44:00 KAR1 /usr/sbin/cron[94270]: (operator) CMD (/usr/libexec/save-en     tropy)
Apr  2 17:45:00 KAR1 /usr/sbin/cron[94283]: (root) CMD (/usr/libexec/atrun)
Apr  2 17:50:00 KAR1 /usr/sbin/cron[94286]: (root) CMD (/usr/libexec/atrun)
Apr  2 17:55:00 KAR1 /usr/sbin/cron[94290]: (operator) CMD (/usr/libexec/save-en     tropy)
Apr  2 17:55:00 KAR1 /usr/sbin/cron[94291]: (root) CMD (/usr/libexec/atrun)
Apr  2 17:57:19 KAR1 /usr/sbin/cron[94334]: (tmp.43582) ORPHAN (no passwd entry)
Apr  2 17:58:00 KAR1 /usr/sbin/cron[94338]: (root) CMD (gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-$(date +)


Титла: Crontab
Публикувано от: GoodT в Apr 02, 2007, 20:17
Ти го измъчи тоя cron :)
Направи си скриптчето /data/backup/get-archive.sh
#!/bin/sh
gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-`date +%F_%H:%M`.fbk
Направи го изпълним:
#chmod u+x /data/backup/get-archive.sh
Посочи го в /etc/crontab:
минута      час      *       *       *       root    /data/backup/get-archive.sh
И готово.
Ако в уречения час не се изпълни поглени какво ще ти каже crona : #mail

ПП: Сложил съм и часа в името на файла. На няколко от твойте примери имаш малки, но съществени грешки, като интервал примерно :)





Титла: Crontab
Публикувано от: daxen в Apr 02, 2007, 21:06
Навсякъде в скрипта си слагай пълния път /usr/local/bin/gbak
с това трябва да се оправиш :)


Титла: Crontab
Публикувано от: anakinn в Apr 03, 2007, 10:12
cron-а стана ....

 tail -f /var/log/cron
Apr  3 09:00:00 KAR1 /usr/sbin/cron[96401]: (operator) CMD (/usr/libexec/save-entropy)
Apr  3 09:00:00 KAR1 /usr/sbin/cron[96402]: (root) CMD (/usr/libexec/atrun)
Apr  3 09:05:00 KAR1 /usr/sbin/cron[96419]: (root) CMD (/usr/libexec/atrun)
Apr  3 09:10:00 KAR1 /usr/sbin/cron[96438]: (root) CMD (/usr/libexec/atrun)
Apr  3 09:11:00 KAR1 /usr/sbin/cron[96447]: (operator) CMD (/usr/libexec/save-entropy)
Apr  3 09:15:00 KAR1 /usr/sbin/cron[96471]: (root) CMD (/usr/libexec/atrun)
Apr  3 09:17:00 KAR1 /usr/sbin/cron[94334]: (*system*) RELOAD (/etc/crontab)
Apr  3 09:17:00 KAR1 /usr/sbin/cron[94334]: (tmp.43582) ORPHAN (no passwd entry)
Apr  3 09:17:35 KAR1 /usr/sbin/cron[96504]: (tmp.43582) ORPHAN (no passwd entry)
Apr  3 09:18:10 KAR1 /usr/sbin/cron[96528]: (tmp.43582) ORPHAN (no passwd entry)
Apr  3 09:20:00 KAR1 /usr/sbin/cron[96533]: (root) CMD (/data/backup/archive.sh)
Apr  3 09:20:00 KAR1 /usr/sbin/cron[96534]: (root) CMD (/usr/libexec/atrun)
Apr  3 09:22:00 KAR1 /usr/sbin/cron[96539]: (operator) CMD (/usr/libexec/save-entropy)
Apr  3 09:25:00 KAR1 /usr/sbin/cron[96552]: (root) CMD (/usr/libexec/atrun)
Apr  3 09:30:00 KAR1 /usr/sbin/cron[96555]: (root) CMD (/usr/libexec/atrun)
Apr  3 09:33:00 KAR1 /usr/sbin/cron[96558]: (operator) CMD (/usr/libexec/save-entropy)
Apr  3 09:35:00 KAR1 /usr/sbin/cron[96571]: (root) CMD (/usr/libexec/atrun)
Apr  3 09:40:00 KAR1 /usr/sbin/cron[96575]: (root) CMD (/usr/libexec/atrun)
Apr  3 09:44:00 KAR1 /usr/sbin/cron[96578]: (operator) CMD (/usr/libexec/save-entropy)
Apr  3 09:45:00 KAR1 /usr/sbin/cron[96591]: (root) CMD (/usr/libexec/atrun)
Apr  3 09:50:00 KAR1 /usr/sbin/cron[96594]: (root) CMD (/usr/libexec/atrun)
Apr  3 09:55:00 KAR1 /usr/sbin/cron[96598]: (operator) CMD (/usr/libexec/save-entropy)


cat /etc/crontab

20      9       *       *       *       root    /data/backup/archive.sh


 cat arhive.sh
#!/bin/sh
/usr/local/bin/gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-`date + %F_%H:%M`.fbk


Титла: Crontab
Публикувано от: daxen в Apr 03, 2007, 11:49
Пробвай в archive.sh да слоиш това
Примерен код

#!/bin/bash
DAY=`date +%d`
MONTH=`date +%m`
YEAR=`date +%Y`
TIME=`date +%T`
GBAK="/usr/local/bin/gbak"
file_name=/data/backup/invenory-$DAY-$MONTH-$YEAR-$TIME.fbk
location="/var/db/firebird/inventory"

$GBAK -b $location $file_name






Титла: Crontab
Публикувано от: anakinn в Apr 03, 2007, 14:35
cat arch.sh
#!/bin/bash
DAY=`date +%d`
MONTH=`date +%m`
YEAR=`date +%Y`
TIME=`date +%T`
GBAK="/usr/local/bin/gbak"
file_name=/data/backup/invenory-$DAY-$MONTH-$YEAR-$TIME.fbk
location="/var/db/firebird/inventory.fdb"

$GBAK -b $location $file_name


cat /var/log/cron
Apr  3 14:25:00 KAR1 /usr/sbin/cron[97369]: (root) CMD (/usr/libexec/atrun)
Apr  3 14:26:00 KAR1 /usr/sbin/cron[96528]: (*system*) RELOAD (/etc/crontab)
Apr  3 14:26:00 KAR1 /usr/sbin/cron[96528]: (tmp.43582) ORPHAN (no passwd entry)
Apr  3 14:26:30 KAR1 /usr/sbin/cron[97421]: (tmp.43582) ORPHAN (no passwd entry)
Apr  3 14:27:00 KAR1 /usr/sbin/cron[97425]: (root) CMD (arhive.sh)
Apr  3 14:30:00 KAR1 /usr/sbin/cron[97473]: (root) CMD (/usr/libexec/atrun)
Apr  3 14:33:00 KAR1 /usr/sbin/cron[97515]: (operator) CMD (/usr/libexec/save-entropy)
Apr  3 14:35:00 KAR1 /usr/sbin/cron[97571]: (root) CMD (/usr/libexec/atrun)



А ако го пусн
sh arch.sh - създава файла...

Не знам вече

Да пробвам някаква друга алтернатива на крон?
Или пък да си ъпдейтна цялата система - портове, пакети
така може някаква промяна по cron-а да се направи...
/което пък не знам точно как става/
първо cvsup, после buildkernel, installkerne, buildworld?





Титла: Crontab
Публикувано от: sunshine в Apr 03, 2007, 15:50
мен ми се струва че имаш проблеми със cron или със правата за достъп

каквото и да пробваш повече няма да стане, защото си направил вече основните комбинации от кадето идва проблема


Титла: Crontab
Публикувано от: anakinn в Apr 03, 2007, 15:56
И аз си мисля, че имам някакъв друг проблем.
cron-а си работи, защото ако му задам да създава директории или разни други такива неща няма проблем. Той дори прави самия бекъп. Даже най-вероятно така ще го оставя. Т.е. те ще се презаписват.

Тук малко ще се отклоня от темата /почти го преживях тоя крон/ може ли накратко обяснение как да си ъпдейтна цялата система - портове, пакети, системни файлове, .conf-ове.
и ако го направя - старите конфове ще ми се запазят ли?


Титла: Crontab
Публикувано от: IID_IUnknown в Apr 03, 2007, 16:40
Погледни си последната извадка от лога и сам си отговори на въпроса какво е различното между твоя скрипт и останалите, които се изпълняват.
Крон демона идея си няма къде ти се намира скрипта, който искаш да изпълниш, дай му пълния път до него в командата. Целия ти проблем идва от това, че не ползваш пълните пътища, разчитайки на environment-а (който обаче крона не го вдига)


Титла: Crontab
Публикувано от: anakinn в Apr 04, 2007, 16:16
Значи описах пълния път то скрипта, но това съм го правил


 ./data/backup/arhive.sh
zsh: no such file or directory: ./data/backup/arhive.sh

Това е крона:
Apr  4 16:07:49 KAR1 /usr/sbin/cron[4885]: (tmp.43582) ORPHAN (no passwd entry)
Apr  4 16:08:00 KAR1 /usr/sbin/cron[4888]: (root) CMD (/data/backup/arhive.sh)


Мислех си да го направя по следния начин. Създавам файла само с името invenntory.fbk и после в cron
mv inventory.fb .... нещо със датата
м?


Титла: Crontab
Публикувано от: IID_IUnknown в Apr 04, 2007, 21:54
И за какво ти е тази точка отпред?


Титла: Crontab
Публикувано от: anakinn в Apr 05, 2007, 09:18
Ами нали така се стартирват файлове
точка "." и тогава файла?

В кронтаба пробвах със и без "."

10      9      *       *       *       root    /data/backup/arhive.sh
00      22      *       *       *       root    /usr/local/bin/gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory.fbk

С mv няма ли как да се получи номера?


Титла: Crontab
Публикувано от: neter в Apr 05, 2007, 09:41
Само да вметна... anakinn, изпълними файлове се изпълняват по 2 начина:
1. Отиваш в папката, където е файла (cd /bla/bla/bla) и изпълняваш файла с ./file
2. Независимо къде се намираш, изпълняваш файла с /bla/bla/bla/file
Когато изписваш пълния път до файла, не се пише точка отпред  :xclam:

Не каза какво стана с примера, който ти дадох? Благодаря на Hapkoc, че ме поправи, понякога недоглеждам  ;)


Титла: Crontab
Публикувано от: anakinn в Apr 05, 2007, 11:55
Благодаря за разяснението.

Т.е. както е сега в кронтаба /просто сменям времето и /etc/rc.d/cron restart/ е правилно нали така?

Примера имаш предвид скобите вместо % ?
Пак нямаше ефект...

М/у другото пробвах на една друга машина FreeBSD 6.2 и там крон-а не може да се справи със %-та

Предполагам станах доста банален с този крон, но такова нещо не ме яло толкова време.

Okey - може ли да помоля някой от Вас, да пусне нещо в крона - примерно - tar cvfz /../../../file date + %F и т.н.
за да видим как ще реагира?


Титла: Crontab
Публикувано от: GoodT в Apr 05, 2007, 17:05
Защо си мисля, че проблема ти е от дребните грешки:
. . .
cat arhive.sh
#!/bin/sh
/usr/local/bin/gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-`date + %F_%H:%M`.fbk
. . .
Има интервал между + и % , а не трябва.
Иначе cron-a стартира скрипта:
Apr  3 09:20:00 KAR1 /usr/sbin/cron[96533]: (root) CMD (/data/backup/archive.sh)
Съвет: стартирай си скрипта от шела: #sh /data/backup/archive.sh  и виж какво става и какво не става :)





Титла: Crontab
Публикувано от: anakinn в Apr 05, 2007, 18:19
Махнах интервала
KAR1# cat arhive.sh
#!/bin/sh
/usr/local/bin/gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-`date +%F_%H:%M`.fbk

KAR1# tail -f /var/log/cronApr  5 18:11:00 KAR1 /usr/sbin/cron[9864]: (operator) CMD (/usr/libexec/save-entropy)
Apr  5 18:15:00 KAR1 /usr/sbin/cron[9895]: (root) CMD (/usr/libexec/atrun)
Apr  5 18:15:48 KAR1 /usr/sbin/cron[9923]: (tmp.43582) ORPHAN (no passwd entry)
Apr  5 18:16:00 KAR1 /usr/sbin/cron[9926]: (root) CMD (/data/backup/archive.sh)
Apr  5 18:16:42 KAR1 /usr/sbin/cron[9954]: (tmp.43582) ORPHAN (no passwd entry)
Apr  5 18:17:00 KAR1 /usr/sbin/cron[9957]: (root) CMD (/data/backup/archive.sh)


Създава файл, но с такова име
KAR1# ll
total 1082
-rwxr-xr-x  1 root  wheel   108B Apr  5 18:14 arhive.sh
-->  -rw-r--r--  1 root  wheel   320K Apr  5 18:13 inventory-.fbk  <--
-rwxrwxrwx  1 root  wheel   298K Apr  4 22:00 inventory.fbk

последния файл /inventory.fdb/ го правя просто с този ред в крона:
00      22      *       *       *       root    /usr/local/bin/gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory.fbk


Титла: Crontab
Публикувано от: GoodT в Apr 05, 2007, 23:30
План "Б" :)
След като си създаваш /data/backup/inventory.fbk просто си го премествай с датата.
Промени си скриптчето /data/backup/archive.sh :
#!/bin/sh
mv /data/backup/inventory.fbk /data/backup/inventory-`date +%F`.fbk

Да има и права за изпълнение: #chmod u+x /data/backup/archive.sh  , ако няма.
Запиши го в /etc/crontab с 5 мин. по късно (примерно) от създаването.
ако - 00       22       *        *        *       root    /usr/local/bin/gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory.fbk
то -   05     22     *     *      *      root    /data/backup/archive.sh


Титла: Crontab
Публикувано от: anakinn в Apr 06, 2007, 09:23
tail -f /var/log/cron
Apr  6 09:15:00 KAR1 /usr/sbin/cron[12033]: (root) CMD (/usr/libexec/atrun)
Apr  6 09:19:47 KAR1 /usr/sbin/cron[12134]: (tmp.43582) ORPHAN (no passwd entry)
Apr  6 09:20:00 KAR1 /usr/sbin/cron[12156]: (root) CMD (/data/backup/archive.sh)
Apr  6 09:20:00 KAR1 /usr/sbin/cron[12157]: (root) CMD (/usr/libexec/atrun)

cat arhive.sh
#!/bin/sh
#/usr/local/bin/gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-`date +%F_%H:%M`.fbk

Пробвах и с "/bin/mv"

Пак не става, ако стартирам скрипта ръчно
/data/backup/archive.sh - го мести

А само да попитам
Защи започваме с
#!/bin/sh , след като това са ми шеловете?
/bin/sh
/bin/csh
/bin/tcsh
/sbin/nologin
/usr/local/bin/zsh
/usr/local/bin/bash


Титла: Crontab
Публикувано от: anakinn в Apr 11, 2007, 13:38
Някой пробва ли кронтаба с ред съдържащ "%F" ?


Титла: Crontab
Публикувано от: anakinn в Apr 13, 2007, 17:00
Моля Ви, не оставяйте темата така...

Знам че може би вече е досадно, но... проблема си е проблем, а и вече си мисля, че аз не бъркам нещо конкретно.


Титла: Crontab
Публикувано от: sunshine в Apr 13, 2007, 21:38
crontab-а с %F си върви перфектно при мен на федора и си прави резевно копие на postgresql.

#!/bin/sh
указва че ще ползваш този шел
ако имаш други шелове след него ще пуска шелове в шела
което може да ти даде грешка
#! указва ще следващите команди ще бъдат изпълнявани с тази програма

виж можеби правиш някаква дребна грешка (синтактична), ако не някой софтуер не ти работи както трябва друг да се заеме да ти оправи скрипта ако не можеш сам


Титла: Crontab
Публикувано от: IID_IUnknown в Apr 15, 2007, 00:13
Цитат (anakinn @ Април 06 2007,10:23)

cat arhive.sh
#!/bin/sh
#/usr/local/bin/gbak -B /var/db/firebird/inventory.fdb

# в началото на реда указва коментар, т.е. тази команда не се изпълнява.


Титла: Crontab
Публикувано от: sunshine в Apr 15, 2007, 11:00
Цитат

cat arhive.sh
#!/bin/sh
#/usr/local/bin/gbak -B /var/db/firebird/inventory.fdb

# в началото на реда указва коментар, т.е. тази команда не се изпълнява.


IID_IUnknown прав си (седнал в някой случаи  :D ), но anakinn пита за #! на първия ред в скрипта иначе си е така  # забранява изпълнението на реда в други случаи е // или -- или /* респективно */


Титла: Crontab
Публикувано от: anakinn в Apr 16, 2007, 11:17
Съжалявам - моя грешка, вече се..

 cat arhive.sh
#!/bin/sh
/usr/local/bin/gbak -B /var/db/firebird/inventory.fdb /data/backup/inventory-`date +%F_%H:%M`.fbk

tail -f /var/log/cron
Apr 16 11:17:37 KAR1 /usr/sbin/cron[45370]: (tmp.43582) ORPHAN (no passwd entry)
Apr 16 11:18:00 KAR1 /usr/sbin/cron[45373]: (root) CMD (/data/backup/archive.sh)

и пак няма резултат

Хайде някой да пусне една подобна команда в крона
примерно mkdir /aaaaaaa-`date +%F_%H:%M`


Титла: Crontab
Публикувано от: IID_IUnknown в Apr 16, 2007, 12:38
http://www.penguin-soft.com/penguin/man/1/gbak.print

с това не съм работил, но като гледам параметрите за базата ти са в environment променливи, които ги нямаш в обкръжението на крона ...
Просто цялата тази история смърди на липсващи environment variabltes.


Титла: Crontab
Публикувано от: anakinn в Apr 16, 2007, 12:57
Ами не знам. Аз единствено бекъп/рестор - това правя.
А някакъв резултат от обикновен ред в крона, който да съдържа тези символи, има ли?

А това в началото на скрипта #!/bin/sh
може ли да се промени с #!/bin/bash csh, zsh - примерно?

Не съм наясно, затова питам.


Титла: Crontab
Публикувано от: sunshine в Apr 16, 2007, 13:17
Цитат

А това в началото на скрипта #!/bin/sh
може ли да се промени с #!/bin/bash csh, zsh - примерно?


може и точно така се сменя
зависи кой шел ще ти пуска командите
без значение дали е SH, BASH , CSH Или ниакой твой скрипт който да прави нещо друго с тези команди

а защо не работиш с копиране на директория или файл, а ползваш gbak ефекта ще е същия, ако не ще е по-добър





Титла: Crontab
Публикувано от: anakinn в Apr 16, 2007, 14:37
Искаш да кажеш да копирвам самия .fdb файл, вместо всеки път gbak - ще опитам

Принципно след gbak backup/restore базата се поизчиства и донякъде се пооптимизира. В началото беше малка, но вече стана 11-12мб

cron: (пробвах и само cp .......)
35      14      *       *       *       root    /bin/cp /var/db/firebird/inventory.fdb /data/backup/inventory-`date +%F`.fdb


tail -f /var/log/cron
Apr 16 14:34:00 KAR1 /usr/sbin/cron[45946]: (root) CMD (cp /var/db/firebird/inventory.fdb /data/backup/inventory-`date +)
Apr 16 14:34:28 KAR1 /usr/sbin/cron[45977]: (tmp.43582) ORPHAN (no passwd entry)
Apr 16 14:35:00 KAR1 /usr/sbin/cron[45984]: (root) CMD (/bin/cp /var/db/firebird/inventory.fdb /data/backup/inventory-`date +)
Apr 16 14:35:00 KAR1 /usr/sbin/cron[45985]: (root) CMD (/usr/libexec/atrun)

Прави ми впечатление, че крона изобщо не ги възприема тези символи... ето един пример:

cat /etc/crontab
38      14      *       *       *       root    mkdir /aaaaaaaaaaaaaa-`date +%F`

tail -f /var/log/cron
Apr 16 14:37:12 KAR1 /usr/sbin/cron[46023]: (tmp.43582) ORPHAN (no passwd entry)
Apr 16 14:38:00 KAR1 /usr/sbin/cron[46030]: (root) CMD (mkdir /aaaaaaaaaaaaaa-`date +)


Титла: Crontab
Публикувано от: anakinn в Apr 19, 2007, 17:49
Okey...
Хайде тогава като за край на темата, само да помоля някой да пусне някакъв ред в кронтаба с тези символи.


Благодаря !


Титла: Crontab
Публикувано от: Hapkoc в Apr 19, 2007, 20:26
anakinn, прав си мой човек. :)

cron явно има проблем с процентите, трябва да му ги escape-неш.

Ей така:

* * * * * /bin/echo $(date +%F)

се получава същото като при тебе:

Apr 19 20:24:01 shtaiga /USR/SBIN/CRON[16076]: (sasoiliev) CMD (/bin/echo $(date +)

А ей така:

* * * * * /bin/echo $(date +\%F)

си работи.


Титла: Crontab
Публикувано от: Hapkoc в Apr 19, 2007, 20:29
Ето и отговора:

http://webmaster.iu.edu/tool_guide_info/crontab.shtml

Цитат

The cron program runs the command named in the sixth field at the specified date and time. If you include a percent sign (%) in the sixth field, cron treats everything that precedes it (in that field) as the command invocation, and makes all that follows it available to standard input, unless you escape the percent sign (\%) or double quote it ("%"). An exclamation point (!) in the sixth field is translated as a newline char acter.

Note that the shell runs only the first line of the command field (up to a percent sign or End-of-Line). All other lines are made available to the command as standard input.


Титла: Crontab
Публикувано от: anakinn в Apr 20, 2007, 11:47
Hapkoc - Благодарности !

Много Голямо Благодаря на всички, които се включиха в темата. Радвам се че проблема е разрешен, надявам се пък да е било полезно и за другите.

Още веднъж ... Благодаря !