Проблем с Cron
17 отговора
548 прегледа
Проблем с Cron
Здравейте,
имам един скрипт #!/bin/sh който като си го пусна като root си върви без проблеми. Добавям го с KCron (графичното tool-че) да се изпълнява в определено време всеки ден за юзър root. Ако ръчно му дам run now от KCron върви, обаче не ще да върви в определеното време.
Рестартирал съм cron-a след добавянето.
ето какво имам в /var/spool/cron:
0 0 * * * /user/backup/backupcpd
имам един скрипт #!/bin/sh който като си го пусна като root си върви без проблеми. Добавям го с KCron (графичното tool-че) да се изпълнява в определено време всеки ден за юзър root. Ако ръчно му дам run now от KCron върви, обаче не ще да върви в определеното време.
Рестартирал съм cron-a след добавянето.
ето какво имам в /var/spool/cron:
0 0 * * * /user/backup/backupcpd
Re: Проблем с Cron
Sloji go vyv /var/spool/cron/root
_ _ _
Time is like a drug. Too much of it kills you.
_ _ _
Time is like a drug. Too much of it kills you.
Re: Проблем с Cron
Naj-veroqtno crond ne ti e pusnat ili e umrel poradi nqkakva prichina. Mozhesh da pitash za status
/etc/rc.d/init.d/crond status
... ili da pravish start|stop|restart
/etc/rc.d/init.d/crond status
... ili da pravish start|stop|restart
Re: Проблем с Cron
няма проблеми с cron-a.
върви си. и тва дето е в cron.daily и cron.hourly си върви. ама тоя скрипт неще.
върви си. и тва дето е в cron.daily и cron.hourly си върви. ама тоя скрипт неще.
Редактирано от muffty на
Re: Проблем с Cron
A toya file /var/spool/cron/root kak go syzdade? Sam si go napisa i go save-na tam, ili izpolzwa crontab -e za celta?
_ _ _
Time is like a drug. Too much of it kills you.
_ _ _
Time is like a drug. Too much of it kills you.
Re: Проблем с Cron
Mi moje neshto da se e omazalo tam, probwaj w consola da napishesh
crontab -e
Naj weroyatno shte ti otwori edno vi w koeto shte e sydyrjanieto na toya file, prosto go save-ni ( ako ne znaesh kak stawa towa na vi - komandata za save i exit e :wq ). Taka tryabwa da stane 100%
_ _ _
Time is like a drug. Too much of it kills you.
crontab -e
Naj weroyatno shte ti otwori edno vi w koeto shte e sydyrjanieto na toya file, prosto go save-ni ( ako ne znaesh kak stawa towa na vi - komandata za save i exit e :wq ). Taka tryabwa da stane 100%
_ _ _
Time is like a drug. Too much of it kills you.
Re: Проблем с Cron
Разбрах къде е проблема.
Скрипта за който говоря извиква рар, а рара нещо не ще да върви в крона. Така си го обяснявам, защото в същия скрипт ако напиша нещо друго за тест нямам проблеми, обаче когато сложа rar mf ...... не става.
По принцип ми трябва нещо което да ми архивира един и същ файл всеки ден, но архива да е с име съдържащо датата и часът на създаване, а такова нещо не можах да намеря в tar и gunzip, датова си свалих rar за линукс.
Ако знаете как да стане с tar или как да подкарам rar в cron-a кажете.
Скрипта за който говоря извиква рар, а рара нещо не ще да върви в крона. Така си го обяснявам, защото в същия скрипт ако напиша нещо друго за тест нямам проблеми, обаче когато сложа rar mf ...... не става.
По принцип ми трябва нещо което да ми архивира един и същ файл всеки ден, но архива да е с име съдържащо датата и часът на създаване, а такова нещо не можах да намеря в tar и gunzip, датова си свалих rar за линукс.
Ако знаете как да стане с tar или как да подкарам rar в cron-a кажете.
Лесно е
cd /родителска-дир
tar cjf /backup-място/archive-`date +%F`.tar.bz2 списък-от-неща-за-архивиране
man date ще ти даде най-различни формати, в които можеш да получиш датата.
tar cjf /backup-място/archive-`date +%F`.tar.bz2 списък-от-неща-за-архивиране
man date ще ти даде най-различни формати, в които можеш да получиш датата.
Редактирано от Masklin на
Re: Лесно е
tar cjf /backup-място/archive-`date +%F`.tar.bz2 ми създава архив "archive-date%F.tar.bz2", а не ми слага дата.
Аз преди да пиша тук гледах и man tar и tar --help, но пак не разбрах как точно да задам командата, въобще и не видях да има такава.
Аз преди да пиша тук гледах и man tar и tar --help, но пак не разбрах как точно да задам командата, въобще и не видях да има такава.
Странно
Преди да ти го напиша го тествах, след отговора ти направих copy'n'paste от твоя постинг и също работи:
Използваш ли обратен апостроф? Забележи разликата, това: ` е обратен, а това: ' е нормален. Не се сещам за друг причина да се получава ефекта, за който споменаваш.
masklin@host:~> tar cjf archive-`date +%F`.tar.bz2 file.sql
masklin@host:~> ls -l *.bz2
-rw-r--r-- 1 masklin users 7844 2004-03-25 11:09 archive-2004-03-25.tar.bz2
Използваш ли обратен апостроф? Забележи разликата, това: ` е обратен, а това: ' е нормален. Не се сещам за друг причина да се получава ефекта, за който споменаваш.
Re: Проблем с Cron
rar не ти върви, защото директорията в която е, не е добавена в PATH. Скриптовете, които се изпълняват от cron получават много ограничен PATH. Оправи си пътя в скрипта, или използвай пълни имена.
Re: Пак не става
Ръчно стартиран скрипта няма проблеми. (така е и с rar)
Когато набутах всичко в cron-a пак не върви.
прави архив 1 kb и спира (файла е около 300 mb).
и което е странно във crontab въобще не тръгва, а това когато тръгва но прави само 1 kb е когато го сложа във cron.daily или cron.hourly.
Опитвам се да направя експорт на оракълска база, който да шедулна. Ето целия скрипт в момента:
-----------------------------------------------------------------------
#!/bin/sh
su - oracle -c "exp database/database@oraserver file=/user/backup/database.dmp owner=database grants=N rows=Y compress=Y"
#/usr/local/rar/rar mf -agDDMMMYYYY_HHMM database /user/backup/database.dmp -w/user/backup
tar cjf /user/backup/database`date +%F`_`date +%H``date +%M`.tar.bz2 /user/backup/database.dmp --remove-files
-----------------------------------------------------------------------
Първия момент, в който експортва базата си върви (поради някаква причина и той само в cron.daily, но не и в crontab, но това засега ме устройва), дъни се архивирането.
Когато набутах всичко в cron-a пак не върви.
прави архив 1 kb и спира (файла е около 300 mb).
и което е странно във crontab въобще не тръгва, а това когато тръгва но прави само 1 kb е когато го сложа във cron.daily или cron.hourly.
Опитвам се да направя експорт на оракълска база, който да шедулна. Ето целия скрипт в момента:
-----------------------------------------------------------------------
#!/bin/sh
su - oracle -c "exp database/database@oraserver file=/user/backup/database.dmp owner=database grants=N rows=Y compress=Y"
#/usr/local/rar/rar mf -agDDMMMYYYY_HHMM database /user/backup/database.dmp -w/user/backup
tar cjf /user/backup/database`date +%F`_`date +%H``date +%M`.tar.bz2 /user/backup/database.dmp --remove-files
-----------------------------------------------------------------------
Първия момент, в който експортва базата си върви (поради някаква причина и той само в cron.daily, но не и в crontab, но това засега ме устройва), дъни се архивирането.
Редактирано от muffty на
Да
Разбирам.
Забележи, че в примера ми съм направил cd /директорията от която ще архивираш и в нея tar. Причината tar да не иска да архивира директория с абсолютен път е много проста - при разархивирането ще омажеш оригиналните файлове. Така че те съветвам да махнеш -P и да направиш както съм ти посочил. За да можеш да разархивираш няколко копия и да ги разглеждаш без да си пречат едно на друго. И, за да можеш да ги разархивираш на друга машина.
Не знам дали знаеш, но изхода в stdout и stderr на програмите, пускани от cron, се праща като email на собственика на crontab-а. Провери си пощата на root и вероятно ще видиш купища писма, които те чакат
Забележи, че в примера ми съм направил cd /директорията от която ще архивираш и в нея tar. Причината tar да не иска да архивира директория с абсолютен път е много проста - при разархивирането ще омажеш оригиналните файлове. Така че те съветвам да махнеш -P и да направиш както съм ти посочил. За да можеш да разархивираш няколко копия и да ги разглеждаш без да си пречат едно на друго. И, за да можеш да ги разархивираш на друга машина.
Не знам дали знаеш, но изхода в stdout и stderr на програмите, пускани от cron, се праща като email на собственика на crontab-а. Провери си пощата на root и вероятно ще видиш купища писма, които те чакат
Re: Вече става
1. tova ne e zle da go pravish kato user a ne kato root
2. kogato startirash neshto s cron e hubavo da se pishe pulniqt put do failovete
3. i poneje kaza che polzvash KCron (grafiche interfeis)
otmetkata na Silent q mahni !!! A poneje ako e mahnata i scripta se startira shte pochnesh da p[oluchavash adski mnogo pismo :)) na usera s koito startirash scripta
ne e zle gore v poleto Program: da napishesh slednoto
primerno --> /home/user/programs/start.sh >/dev/null 1>&2 ... tova shte spre pismata
a ako iskash da imash LOG ot sabitiqta :) napishi :
/home/user/programs/start.sh >> /home/user/programs/start.log
4. A kolkoto do datata sloji si
#! /bin/bash
#
file_name="users.sql" #tuk napishi imeto na faila koito shte arhivirash naprimer users.sql
#ako shte arhivirash ne 1 fail a cqla direktoriq go ostavi prazno file_name=""
#file_name=""
from_dir="/home/user/data_base" #tuk pishes dir v koiato da prai arhiva
to_dir="/home/user" #tuk pishesh dir ot koiato shte chete faila
file_name=${file_name:="backup"}
TIME=`date +%H:%M:%S`
DATE=`date +%d.%m.%Y`
if [ $file_name = "backup"); then
tar cjfP $to_dir/$file_name.$DATE-$TIME.tar $from_dir/
else
tar cjfP $to_dir/$file_name.$DATE-$TIME.tar $from_dir/$file_name
fi
exit 0
2. kogato startirash neshto s cron e hubavo da se pishe pulniqt put do failovete
3. i poneje kaza che polzvash KCron (grafiche interfeis)
otmetkata na Silent q mahni !!! A poneje ako e mahnata i scripta se startira shte pochnesh da p[oluchavash adski mnogo pismo :)) na usera s koito startirash scripta
ne e zle gore v poleto Program: da napishesh slednoto
primerno --> /home/user/programs/start.sh >/dev/null 1>&2 ... tova shte spre pismata
a ako iskash da imash LOG ot sabitiqta :) napishi :
/home/user/programs/start.sh >> /home/user/programs/start.log
4. A kolkoto do datata sloji si
#! /bin/bash
#
file_name="users.sql" #tuk napishi imeto na faila koito shte arhivirash naprimer users.sql
#ako shte arhivirash ne 1 fail a cqla direktoriq go ostavi prazno file_name=""
#file_name=""
from_dir="/home/user/data_base" #tuk pishes dir v koiato da prai arhiva
to_dir="/home/user" #tuk pishesh dir ot koiato shte chete faila
file_name=${file_name:="backup"}
TIME=`date +%H:%M:%S`
DATE=`date +%d.%m.%Y`
if [ $file_name = "backup"); then
tar cjfP $to_dir/$file_name.$DATE-$TIME.tar $from_dir/
else
tar cjfP $to_dir/$file_name.$DATE-$TIME.tar $from_dir/$file_name
fi
exit 0