Страница 1 из 1

Проблемы с crontab

Добавлено: 2010-06-27 12:38:18
Anti[B]iotik
Здравствуйте. Возникла проблема, я хочу, чтобы сервер FreeBSD после перезагрузки выдавал звуковой сигнал. Для этого создал файл /usr/local/etc/rc.d/starts:

Код: Выделить всё

#!/usr/bin/perl
open(SPEAKER, ">/dev/speaker") or die $!;
   for ($n=0; $n<=$count; $n++) {
       print SPEAKER "P 1 F P 1 F P 1 F ";
   }
close SPEAKER;
Если файлик запустить - звуковой сигнал есть, то есть ошибки нету.
Теперь задача запустить этот файл при загрузке. Юзаю кронтаб /etc/crontab:

Код: Выделить всё

# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD: src/etc/crontab,v 1.32.34.1 2009/04/15 03:14:26 kensmith Exp $
#
SHELL=/bin/bash
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
MAILTO=""
HOME=/
#
#minute hour    mday    month   wday    who     command
#
*/5     *       *       *       *       root    /usr/libexec/atrun
#
# Save some entropy so that /dev/random can re-seed on boot.
*/11    *       *       *       *       operator /usr/libexec/save-entropy
#
# Rotate log files every hour, if necessary.

0       *       *       *       *       root    newsyslog
#
# Perform daily/weekly/monthly maintenance.
1       3       *       *       *       root    periodic daily
15      4       *       *       6       root    periodic weekly
30      5       1       *       *       root    periodic monthly
#
# Adjust the time zone if the CMOS clock keeps local time, as opposed to
# UTC time.  See adjkerntz(8) for details.
1,31    0-5     *       *       *       root    adjkerntz -a
@daily  1       *       *       *       root    /usr/sbin/ntpdate ntp.xc
@reboot 0       *       *       *       root    /usr/local/etc/rc.d/starts
 
Но ничего не срабатывает. Решил проверить корректно ли вообще работает cron и добавил в конце строку:

Код: Выделить всё

*/10    *       *       *       *       root    echo 'ya tut' >> /var/log/ping.log
То есть жду, что каждые 10 минут будет добавляться строка в файл ping.log, но он по-прежнему пустой
Службу перезапускал:

Код: Выделить всё

#sudo /etc/rc.d/cron restart
Stopping cron.
Starting cron.

Код: Выделить всё

sudo /etc/rc.d/cron status
cron is running as pid 21444.
Последнюю пустую строку в конце добавляю.
Подскажите, пжл, что может быть не так.
Заранее спасибо.

Re: Проблемы с crontab

Добавлено: 2010-06-27 19:15:49
Raven2000
Зачем вам пипканье при рестарте?
Чисто практически зачем? =)

Re: Проблемы с crontab

Добавлено: 2010-06-27 19:39:06
terminus

Код: Выделить всё

    Instead of the first five fields, one of eight special strings may
     appear:

           string          meaning
           ------          -------
           @reboot         Run once, at startup.
           @yearly         Run once a year, "0 0 1 1 *".
           @annually       (same as @yearly)
           @monthly        Run once a month, "0 0 1 * *".
           @weekly         Run once a week, "0 0 * * 0".
           @daily          Run once a day, "0 0 * * *".
           @midnight       (same as @daily)
           @hourly         Run once an hour, "0 * * * *".

Код: Выделить всё

@reboot   root    /usr/local/etc/rc.d/starts

Re: Проблемы с crontab

Добавлено: 2010-06-27 22:50:32
Alex Keda
и никто так и не сказал человеку что похабить системный крон под свои нужды - это плохо...

Re: Проблемы с crontab

Добавлено: 2010-06-27 23:44:35
Anti[B]iotik
Alex Keda писал(а):и никто так и не сказал человеку что похабить системный крон под свои нужды - это плохо...
добавив одну строку я не испохаблю системное предназначение крона. Мне подсказали, что лучше цель достичь именно с его помощью. При чем "свои нужды" в данном случае - это не в туалет сходить, а обеспечить стабильную работу сервера. Если я его перезагружаю - то звуковой сигнал - признак удачной загрузки, не стоит меня спрашивать, т.к. иначе бы не писал. Как вариант когда-то добавлял строку в /etc/rc.conf, но звук воспроизводился при подключении каждой служби, то есть во время загрузки раз 10 + каждый раз при подключении VPN и тд. Нужно только 1 раз после загрузки. Пока подправил, как подсказал terminus. Но что-то подозреваю, что что-то не так... пока спс

Re: Проблемы с crontab

Добавлено: 2010-06-28 6:20:08
Alex Keda

Код: Выделить всё

man 5 crontab
вам неправильно подсказали

Re: Проблемы с crontab

Добавлено: 2010-06-30 7:06:13
PSdok

Re: Проблемы с crontab

Добавлено: 2010-07-04 14:22:10
maza
у меня похожая проблема была.
хотел поставить запуск скрипта каждые 5 минут, но он ни в какую не хотел запускаться.
проблему решил следующим образом:
1)

Код: Выделить всё

cp /etc/crontab /var/cron/tabs/"тут пишем желаемое название"
2) правим файл /var/cron/tabs/"тут пишем желаемое название". удаляем все значения кроме:

Код: Выделить всё

SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin

#minute     hour    mday    month    wday    who    command
#
*/5           *        *          *          *                   здесь пишем месторасположение того, что вы хотите запустить
причем место под who оставляем пустым!!!
3)запускаем crontab:

Код: Выделить всё

crontab /var/cron/tabs/"тут пишем желаемое название"
crontab -l
причем это обязательный формат запуска
4)для остановки:

Код: Выделить всё

crontab -r
5)осталось только доделать автозапуск при старте/перезагрузке системы

Re: Проблемы с crontab

Добавлено: 2010-07-04 15:08:21
Alex Keda
изврат...

Re: Проблемы с crontab

Добавлено: 2010-07-04 15:19:11
maza
зато работает

Re: Проблемы с crontab

Добавлено: 2010-07-04 16:14:36
zg
Anti[b]iotik писал(а):Если файлик запустить - звуковой сигнал есть, то есть ошибки нету.
с учётом того, что в скрипте $count не задан, то пикает, видимо, только один раз. Этого же результата при загрузке можно добиться, если поместить в /etc/rc.local

Код: Выделить всё

echo -n "P 1 F P 1 F P 1 F ">/dev/speaker
попробуй выполнить и перегрузиться

Код: Выделить всё

echo 'echo -n "P 1 F P 1 F P 1 F ">/dev/speaker' >> /etc/rc.local

Re: Проблемы с crontab

Добавлено: 2010-07-10 0:23:25
Anti[B]iotik
tormozok писал(а):может это поможет
http://forum.lissyara.su/viewtopic.php?f=14&t=15960
maza писал(а):у меня похожая проблема была.
хотел поставить запуск скрипта каждые 5 минут, но он ни в какую не хотел запускаться.
проблему решил следующим образом:
1)

Код: Выделить всё

cp /etc/crontab /var/cron/tabs/"тут пишем желаемое название"
2) правим файл /var/cron/tabs/"тут пишем желаемое название". удаляем все значения кроме:

Код: Выделить всё

SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin

#minute     hour    mday    month    wday    who    command
#
*/5           *        *          *          *                   здесь пишем месторасположение того, что вы хотите запустить
причем место под who оставляем пустым!!!
3)запускаем crontab:

Код: Выделить всё

crontab /var/cron/tabs/"тут пишем желаемое название"
crontab -l
причем это обязательный формат запуска
4)для остановки:

Код: Выделить всё

crontab -r
5)осталось только доделать автозапуск при старте/перезагрузке системы
Ребята, спасибо огромное, оба ваших поста оооочень сильно помогли. Респект!
Единственно проблема с запуском команд, которые идут только через sudo, то есть нужны права root, вот разбираюсь, а так цель основная достигнута, благодарю !

Re: Проблемы с crontab

Добавлено: 2010-12-19 19:48:05
Anti[B]iotik
Проблема оказалась в том, что система была prerelease. Потом пересобрал в: FreeBSD 7.3-STABLE - все отлично работает

Re: Проблемы с crontab

Добавлено: 2010-12-20 2:28:39
maza
однако долго ты долбался :)

Re: Проблемы с crontab

Добавлено: 2011-01-10 9:33:09
Anti[B]iotik
я просто не сразу здесь отписал )))

Re: Проблемы с crontab

Добавлено: 2011-01-10 23:41:09
maza
та я ж так ;)

Re: Проблемы с crontab

Добавлено: 2011-10-25 12:05:06
Bayerische
Проблема откуда-то взялась. Всё работало, потом что-то обновилось, много по мелочи, и перестало. Например, вот такое дело вручную отрабатывает идеально, даже следом можно дописать команды архивирования других директорий:

Код: Выделить всё

#!/bin/sh
DATE=`date '+%Y-%m-%d-%H%M'`
cd /usr/home/user1/backup
mkdir $DATE
chmod 777 $DATE
/usr/bin/tar cvfz $DATE/backup_www.tgz /usr/home/user1/www
Из крона некорректно. Если папка маленькая, жмёт, идёт к следующей команде. Если же большая, упирается в размер архива 51.9 Мб, какой бы её исходный размер не был, и последующие команды не исполняет.
В crontab прописаны пути. В самом скрипте полные, как видно. Юзер рут и там, и там. В логах тишина, просто в кроновском пишет, что сработало задание.
Памяти хватает. Убивал процессы, чистил темп. Без разницы, ровно 51.9 Мб архив получается.
Вручную запускал из csh, sh. Работает.
Сравнил конфиги из бэкапа, полностью папки /etc, /usr/local/etc до и после, почти один в один, добавилось кое что, да версии поменялись.

Re: Проблемы с crontab

Добавлено: 2011-10-25 17:40:51
Bayerische
Сейчас попробовал вот такое чудо:

Код: Выделить всё

#!/bin/sh
DATE=`date '+%Y-%m-%d-%H%M'`
cd /usr/home/user1/backup
mkdir "AA".$DATE
chmod 777 "AA".$DATE
tar cvfz "AA".$DATE/backup_ports.tgz /usr/ports
Вручную долго затаривает 4 с лишним гигабайта портов с дистфайлами. По крону же 100M с копейками, и всё типа, хватит. :unknown:

Re: Проблемы с crontab

Добавлено: 2011-10-25 17:47:22
Bayerische
Мой кронтаб.

Код: Выделить всё

SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
#PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/etc/tasks
#
#minute hour    mday    month   wday    who     command
#
*/5     *       *       *       *       root    /usr/libexec/atrun
#
# Save some entropy so that /dev/random can re-seed on boot.
*/11    *       *       *       *       operator /usr/libexec/save-entropy
#
# Rotate log files every hour, if necessary.
0       *       *       *       *       root    newsyslog
#
# Perform daily/weekly/monthly maintenance.
1       3       *       *       *       root    periodic daily
15      4       *       *       6       root    periodic weekly
30      5       1       *       *       root    periodic monthly
#
# Adjust the time zone if the CMOS clock keeps local time, as opposed to
# UTC time.  See adjkerntz(8) for details.
1,31    0-5     *       *       *       root    adjkerntz -a
36      18      *       *       *       root    /etc/tasks/test.sh
Видно, что извращался с путями.
Вообще, оно запарило, честно говоря. Элементарная вещь, а столько гемороя.

Re: Проблемы с crontab

Добавлено: 2011-10-25 21:09:25
Bayerische
Засунул последнее задание в юзерский кронтаб. Такая же беда. Файл архива растёт только до 100,6 Мб.

Re: Проблемы с crontab

Добавлено: 2011-10-27 10:41:49
Bayerische
От безысходности обновил весь софт. Проблема пропала :unknown:
Сутки колупал... Хрень какая-то.

Re: Проблемы с crontab

Добавлено: 2011-10-27 10:57:00
терминус_
что показывает

Код: Выделить всё

ulimit -a

Re: Проблемы с crontab

Добавлено: 2011-10-27 11:00:23
Bayerische

Код: Выделить всё

# ulimit -a
ulimit: Command not found.
# limit
cputime      unlimited
filesize     unlimited
datasize     524288 kbytes
stacksize    65536 kbytes
coredumpsize unlimited
memoryuse    unlimited
vmemoryuse   unlimited
descriptors  11095
memorylocked unlimited
maxproc      5547
sbsize       unlimited
swapsize     unlimited