LINUX.ORG.RU

Cron и shell скрипт


0

1

crontab -e

40 23 * * * /bin/bash /var/www/cgi-bin/archive.sh

Сам скрипт
nano /var/www/cgi-bin/archive.sh
GNU nano 2.2.4 File: /var/www/cgi-bin/archive.sh

#!/bin/bash
cd /var/www/rec
tar -cvf /var/www/archive/`date +%Y-%m-%d`.tar `ls`
find . -type f -delete;

Если исполнять не из под крона, скрипт работает нормально А из под крона он не исполняется, то есть результата работы его не видно.


А какой результат ты хочешь видеть?

cron посылает сообщение о выполненном задании или об ошибке на локальный адрес root/user.

Файл в заданном каталоге создаётся? Если создаётся, то работа сделана. Для просмотра отчёта от cron запусти mail в консоли.

OldFatMan
()

а если указывать полный путь к файлам? (/bin/tar, /usr/bin/find etc.)

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

Что, сообщений совсем никаких нет? mail говорит, что «No mail for tits»?

Странно.

Ну тогда либо делай так, как написал zolden, либо у каждой команды указывай полный путь к ней, как сказал arsi.

И ещё нюанс: ты cron от себя, как от простого юзера запускаешь? Если да, то может быть тебе запрещено cron'ом пользоваться. Проверь конфигурационные файлы cron.deny и cron.allow.

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

И ещё нюанс: ты cron от себя, как от простого юзера запускаешь? Если да, то может быть тебе запрещено cron'ом пользоваться. Проверь конфигурационные файлы cron.deny и cron.allow.

Если бы ему deny и не allow, у него бы crontab -e не запустился просто.

mail говорит, что «No mail for tits»?

«No tits, no mail!»

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

не есть 3 сообщения но они не от сегодняшней даты, протухшие.

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

Если бы ему deny и не allow, у него бы crontab -e не запустился просто.

А, ну да, верно. Ступил.

«No tits, no mail!»

Бартер? ;)

PS: Да что же из этих ТСов всё клещами-то приходится вытягивать? Как партизаны, чесслово... :)))

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

> PS: Да что же из этих ТСов всё клещами-то приходится вытягивать? Как партизаны, чесслово... :)))

да это агенты пси-корпуса, беглых телепатов отлавливают %)

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

Тогда не знаю. У меня подобные скрипты работают даже из-под юзера. С указанием полных путей пробовал? тоже не работает?

OldFatMan
()

У скриптов под кроном не выставлена переменая PATH. Надо выставлять её вручную и прописывать нужные пути. Либо нужно прописать полные пути к использующимся утилитам.

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

Ты наконец таки в /var/log/cron удосужился заглянуть? В 23:40 есть запись в логе или нет?

Если в логе записи нет, то нажми Энтер после своей записи в кронтаб. Крон не читает последнюю запись в кронтабе, если после нее нет символа «перевод строки».

Если запись в логе есть, то тебе уже сказали: укажи явно все пути в используемых командах или добавь пути в PATH.

ansky ★★★★★
()

tits

proof or gtfo

anonymous
()
Ответ на: комментарий от ansky

/var/log/ нету крона

Если в логе записи нет, то нажми Энтер после своей записи в кронтаб. Крон не читает последнюю запись в кронтабе, если после нее нет символа «перевод строки».

Не помогло

tits
() автор топика
Ответ на: комментарий от tits
root@vps133:/var/log# crontab -e
No modification made
root@vps133:/var/log# crontab -e
  GNU nano 2.2.4        File: /tmp/crontab.hLk8X1/crontab

# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
tits
() автор топика
Ответ на: комментарий от zolden

# m h dom mon dow command - если эту строку разкомментировать то «/tmp/crontab.cn5BGI/crontab»:21: bad minute errors in crontab file, can't install. Do you want to retry the same edit? (y/n) y

tits
() автор топика
Ответ на: комментарий от zolden
root@vps133:/var/log# crontab -e
No modification made
root@vps133:/var/log# crontab -e
  GNU nano 2.2.4        File: /tmp/crontab.hLk8X1/crontab

# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
 13 13 * * * /bin/bash /var/www/cgi-bin/archive.sh
tits
() автор топика
Ответ на: комментарий от ansky

Крон не читает последнюю запись в кронтабе, если после нее нет символа «перевод строки»


Я вот, кстати, не утверждал бы это так категорично.
Не смотря на то, что в мане это прописано явно
(«cron requires that each entry in a crontab end in a newline character.
If the last entry in a crontab is missing the newline, cron will consider the crontab (at least partially) broken and refuse to install it»)
по моему опыту всё работает и без перевода.
Видимо это пояснение относится к прямому ручному редактированию (а не через crontab -e)

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

я достаю свой волшебный плащ и бубен

1. покажи whereis bash;whereis date;whereis tar;ls -l /bin/sh;tar --version;bash --version
2. в скрипт пиши это (если пути отличаются от того что было получено на 1м шаге - поправь)

#!/bin/bash
/bin/tar --remove-files -cvf /var/www/archive/$(/bin/date +%Y-%m-%d).tar /var/www/rec/*
3. проверь, что скрипт исполняемый: ls -l /var/www/cgi-bin/archive.sh
4. В крон
14 14 * * * /var/www/cgi-bin/archive.sh
5. Найди логи крона в конце концов

zolden ★★★★★
()
Ответ на: я достаю свой волшебный плащ и бубен от zolden
root@vps133:~# whereis bash
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
root@vps133:~# whereis date
date: /bin/date /usr/share/man/man1/date.1.gz
root@vps133:~# whereis tar
tar: /bin/tar /usr/share/man/man1/tar.1.gz
root@vps133:~# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Dec 16 08:14 /bin/sh -> bash
root@vps133:~# tar --version
tar (GNU tar) 1.23
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
root@vps133:~# bash --version
GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
root@vps133:~# ls -l /var/www/cgi-bin/archive.sh
-rw-r--r-- 1 root root 194 Dec 25 01:14 /var/www/cgi-bin/archive.sh
root@vps133:~#
tits
() автор топика
Ответ на: комментарий от tits

у тебя шелл и так bash, явно его указывать смысла нету.
сделай скрипт исполняемым (chmod +x /var/www/cgi-bin/archive.sh) и вызывай как я выше написал

zolden ★★★★★
()
Ответ на: не мудри от zolden

этот вариант не будет работать, потому что в кронтабе не происходит раскрытия переменных (substitution)

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

Возможно Вы и правы. Мне никогда не нравилось пользоваться «crontab -e», а взамен я всегда пользуюсь «crontab -l >file», редактирую файл, и «crontab file». Понятно, что оверхед, но такой уж у меня бзик.

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