Перейти к содержимому
Калькуляторы

Странности с планировщиком (Debian Linux, cron)

10 minutes ago, Andrei said:

чё, реально?! или это шутка юмора такая?

 

Все же в сырцы заглядывать никто не мешает. 5 секунд дела:

 

> apt-get source cron

 

	(void) gethostname(hostname, MAXHOSTNAMELEN);
	(void) snprintf(mailcmd, sizeof(mailcmd),
			MAILARGS, MAILCMD, mailto);
	if (!(mail = cron_popen(mailcmd, "w", e))) {
		perror(MAILCMD);
		(void) _exit(ERROR_EXIT);
	}
	fprintf(mail, "From: root (Cron Daemon)\n");
	fprintf(mail, "To: %s\n", mailto);
	fprintf(mail, "Subject: Cron <%s@%s> %s%s\n",
			usernm,
			fqdn_in_subject ? hostname : first_word(hostname, "."),
			e->cmd, status?" (failed)":"");
# if defined(MAIL_DATE)
	fprintf(mail, "Date: %s\n",
			arpadate(&StartTime));
# endif /* MAIL_DATE */
	fprintf(mail, "MIME-Version: 1.0\n");

 ... и так далее ...

MAILCMD Определяется так:

 

#if !defined(_PATH_SENDMAIL)
# define _PATH_SENDMAIL "/usr/lib/sendmail"
#endif /*SENDMAIL*/

....

#define MAILCMD _PATH_SENDMAIL					/*-*/

... и неколько вариантов ...

/* #define MAILCMD "/bin/mail"			-*/
...
/* #define MAILCMD "/usr/mmdf/bin/submit"	-*/
...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

5 минут назад, jffulcrum сказал:

Отключить только перенаправлением stdout в /dev/null

Ну так в конце у меня и указано " >/dev/null 2>&1 "

Но не срабатывает.

 

2 минуты назад, vop сказал:

Все же в сырцы заглядывать никто не мешает.

Да я понимаю. Но в прошлых версиях это делалось на раз-два, а теперь обязательно в сырцы лазить, чтобы такое элементарное сделать? Не верится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

8 minutes ago, Andrei said:

Да я понимаю. Но в прошлых версиях это делалось на раз-два, а теперь обязательно в сырцы лазить, чтобы такое элементарное сделать? Не верится.

 

Ээээ... Ну можно не лазить. Можно, например, на форуме спросить.

 

:) :) :) :) :)

 

Ну не знаю, кроны они разные бывают. Поэтому проще заглянуть. Я так подозреваю, что меня поэтому лет 20 и втянули буржуи в хостинговый бизнес, что у меня "на столе" всегда сырцы апачи и другого софта открыты были. Откуда и черпались точные знания о том, что и как работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

5 минут назад, vop сказал:

Откуда и черпались точные знания о том, что и как работает.

ОК, ты молодец, ты умный. :) А решение-то поставленного вопроса где?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

6 minutes ago, Andrei said:

ОК, ты молодец, ты умный. :) А решение-то поставленного вопроса где?

А что там решать то? Если нельзя почту отключить, надо послать ее в /dev/null.  Добавьте аккаунт в системе и отправьте его в/dev/null через алиасы.   Типа Vasiunchik DevNull (devnul) aliases:

 

devnul: /dev/null

 

Ну и определить MAILTO="devnul"

 

Как-то так. Решению отправлять почту в нул лет 30-40 как уже.:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

26 минут назад, Andrei сказал:

в конце у меня и указано " >/dev/null 2>&1 "

Это не тоже самое (отправка в /dev/null)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 minute ago, Andrei said:

Это не тоже самое?

Нет. Крон в STDOUT не  пишет. Я же там привел код, который должен, как бы сказать, что крон запускает sendmail и прямиком херачит туда вывод.

 

PS Есть еще вариант - похачить слегка и пересобрать crond. Но это диструктивный вариант :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Провел небольшой эксперимент - ничего не меняя в настройках системы и крона добавил в тот же крон еще задачу:

32 22 * * *     root cd /home/andrey; cat .screenrc   | gzip > "sc.`date +\%F`.gz" ; wput "sc.`date +\%F`.gz" ftp://............  >/dev/null 2>&1

скрипт отработал и... ничего на почту не пришло. Любопытно, да? :)

А если задачу закончить вот так


... ; rm *.gz >/dev/null 2>&1

то сообщение на почту приходит.

 

И финалочка - делим задачу на две:

32 22 * * *     root cd /home/andrey; cat .screenrc   | gzip > "sc.`date +\%F`.gz" ; wput "sc.`date +\%F`.gz" ftp://............  >/dev/null 2>&1
33 22 * * *    root cd /home/andrey ; rm *.gz >/dev/null 2>&1

Обе задачи отработали и ничего на почту не пришло.

Как это объяснить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я сильно извиняться, но в дев нул вы завернули вывод команды rm *.gz

Все что до неё это отдельные команды и они в девнул не перенаправляются... то что Вам надо делается обрамлением всго от начала первой команды до перенаправления в круглые скобки. Кролн тут вообще не при делах. впросто наппишите 

echo a; echo b > /dev/null 

и возхадуйтесь вываоду буквы а

 

1 час назад, Andrei сказал:

Провел небольшой эксперимент - ничего не меняя в настройках системы и крона добавил в тот же крон еще задачу:


32 22 * * *     root cd /home/andrey; cat .screenrc   | gzip > "sc.`date +\%F`.gz" ; wput "sc.`date +\%F`.gz" ftp://............  >/dev/null 2>&1

скрипт отработал и... ничего на почту не пришло. Любопытно, да? :)

А если задачу закончить вот так


... ; rm *.gz >/dev/null 2>&1

то сообщение на почту приходит.

 

И финалочка - делим задачу на две:


32 22 * * *     root cd /home/andrey; cat .screenrc   | gzip > "sc.`date +\%F`.gz" ; wput "sc.`date +\%F`.gz" ftp://............  >/dev/null 2>&1
33 22 * * *    root cd /home/andrey ; rm *.gz >/dev/null 2>&1

Обе задачи отработали и ничего на почту не пришло.

Как это объяснить?

 чтением мана не sh ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

4 минуты назад, st_re сказал:

то что Вам надо делается обрамлением всго от начала первой команды до перенаправления в круглые скобки.

Вот спасибо - то, что надо! :) Чувствовал, что что-то подобное должно быть, но гугл не подсказал.

И никаких разглядываний сырцов, новых юзеров и т.п. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вообще крон тащит не из /etc/crontab переменную MAILTO а для каждого файла свой лукап.

Так что надо положить MAILTO="" /cron.d/backup где ему и место в рамках обсуждаемого.

 

 

Ну и я уже молчу почему это не оформить скриптом человеческим а не использовать множественный вывод с повторяющимся перенаправлением  "> "

 

2 часа назад, vop сказал:

Нет. Крон в STDOUT не  пишет.

его стдаут в почту направляется 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

5 hours ago, GrandPr1de said:

его стдаут в почту направляется 

 

Если быть точнее, то stdout запускаемых задач.

 

Хотя, это уже не имеет значения. Я отвечал, как оказалось, не на тот вопрос.:)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

8 часов назад, GrandPr1de сказал:

Вообще крон тащит не из /etc/crontab переменную MAILTO а для каждого файла свой лукап.

Так что надо положить MAILTO="" /cron.d/backup где ему и место в рамках обсуждаемого.

Гугл говорит, что не так, ну да ладно.

 

8 часов назад, GrandPr1de сказал:

Ну и я уже молчу почему это не оформить скриптом человеческим а не использовать множественный вывод с повторяющимся перенаправлением  "> "

Так компактней, и при переезде на другой сервер забирать всего 1 файл из /etc/cron.d, а не собирать кучу скриптов отдельными файлами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 09.11.2019 в 00:51, Andrei сказал:

Ну так в конце у меня и указано " >/dev/null 2>&1 "

Так-то указанное в конце перенаправление работает только для последней команды, а именно только для "rm *.gz". Добавьте ">/dev/null 2>&1 "  перед каждой точкой с запятой в строке, и порадуйтесь результату.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 минуту назад, taf_321 сказал:

Добавьте ">/dev/null 2>&1 "  перед каждой точкой с запятой в строке, и порадуйтесь результату.

Немного проще - https://forum.nag.ru/index.php?/topic/103520-strannosti-s-planirovschikom-debian-linux-cron/&amp;do=findComment&amp;comment=1573697

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.