LINUX.ORG.RU

Вопросы по anacron'y

 


0

3

Здравствуйте,

Я пытаюсь понять для себя суть работы anacron'a. У меня Ubuntu 14.04 Собственно, у меня покамест три вопроса:

1.) КОГДА должна (по идее) выполняться команда, что должна быть выполнена anacron'ом. Например, сегодня среда 14:00 и я вот только что сделал новое задание для anacron'a (weekly). И когда же мне ожидать ПЕРВОГО выполнения данного задания? Иными словами, где точка отсчёта? Еженедельно, считая от чего?

2.) А что если у меня 3 команды. Обязательно ли писать скрипт или можно при помощи anacron'a исполнить в одном задании сразу 3 команды? Остановить процесс, стереть содержание файла и запустить тот же процесс (для конкретики).

3.) Куда писать команды для anacron'a? Везде я читаю, что в /etc/anacrontab Но ведь там уже есть 3 команды по умолчанию (я так понимаю, что это при помощи anacron'a запускаются задания cron'a). Ниже под ними что ли писать свои задания для anacron'a?

1. В man'е указано следующее:

       For each job, Anacron checks whether this job has been executed in  the
       last  n  days,  where  n is the period specified for that job.  If not,
       Anacron runs the job’s shell command, after waiting for the  number  of
       minutes specified as the delay parameter.
Насколько аккуратно это реализовано неведомо, но по идее, свежедобавленное задание первый раз выполнится в ближайщий START_HOURS_RANGE.

2. У cron'а комманда передавалась shell'у, поэтому если вы там напишете корректный sh-скрипт, то можно. Но, потом это трудно будет понимать.

3. Хотите пишите ниже, хотите добавляйте скрипты в каталоги /etc/cron.*.

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

Спасибо!

Я сделал bash скрипт как root и он работает, если я захожу в папку, где он находится и делаю sudo ./scriptname.sh Я создал папку bin в /home/myusername и добавил туда мой скрипт. Потом я добавил в PATH /home/myusername/bin так: export PATH=$PATH:/home/myusername/bin И когда я делаю echo $PATH, то вначале я его вижу. Тем не менее, когда я просто пишу где-то sudo scriptname.sh, то везде получаю «command not found» почему то. Собственно, я не знаю важно ли это для anacron'a? Еще такой момент... Когда я открываю /etc/passwd, то там у root'a bin/bash, a в /etc/anacrontab'e SHELL=/bin/sh Так мне надо прописать в команде anacron'a, чтобы он использовал интерпретатор /bin/bash? Что касаемо аттрибутов моего скрипта, то они такие: -rwxr-xr-x Так и должно быть для его использования anacron'ом? Короче говоря, куча вопросов... У меня ноутбук выключен большую часть времени на сегодня, поэтому я не могу использовать cron, как мне многие советуют... Ну хорошо, допустим я в /etc/anacrontab'e хочу прописать команду, чтобы мой скрипт исполнялся каждый день с задержкой в 3 минуты. Мне так там прописать?

1 3 mytestscript /bin/bash /home/myusername/bin/scriptname.sh

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

Если первой строкой скрипта ″#!/bin/bash″, то не важно, что в SHELL.

Потом я добавил в PATH /home/myusername/bin

Если вы сделали это в консоли, то PATH будет только у этого shell'а (и у его потомков). Если вы прописали в файле .bash_profile или .bashrc, то PATH будет у всех ваших shell'ов (запущенных после изменния файла). Но везде PATH задать не получится (допустим в crond или /etc/ppp/ipup).

Если anacron от root'а, то скрипту и ″-rwxr-xr-x″ хватит.

Если скрипт исполняемый, то /bin/bash лишнее, в остальном правильно. Только помните про ″START_HOURS_RANGE=″ и ″RANDOM_DELAY=″.

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

Еще раз спасибо за ответ! Если можно, разъясните поподробней как можно в Ubuntu сделать так, чтобы скрипт исполнялся отовсюду, если он находится в директории /home/myusername/bin. Ну, с командой

export PATH=$PATH:/home/myusername/bin
ясно, а по поводу файлов .bash_profile и .bashrc совсем не ясно. Я читал в Сети при эти файлы в данном контексте, но так и ничего не понял, если честно... Что с ними делать...

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

Если верить том, что пишут в инете, то в Ubuntu строку:

export PATH=$PATH:/home/myusername/bin

нужно писать в /home/myusername/.profile .

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

как можно в Ubuntu сделать так, чтобы скрипт исполнялся отовсюду, если он находится в директории /home/myusername/bin.

Можно положить скрипт в /usr/local/bin или /usr/local/sbin, которые обычно уже присутствуют в PATH по дефолту.

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

Спасибо за ответы!

ArcFi, Но все рекомендуют свои скрипты класть в /home/username/bin

mky, Не совсем понял, но ладно, попробую выяснить этот момент.

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

Но все рекомендуют свои скрипты класть в /home/username/bin

Сами принимайте решение, а не слепо следуйте чужим советам.
Отталкивайтесь от имеющихся задач, оставаясь в рамках FHS.

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

Для того, чтобы я мог сам принимать решения, сначала мне надо иметь определенный уровень экпертизы в Линуксе. Тем паче, всё что я спрашиваю на форумах довольно стандартно и примитивно. Не думаю, что мои вопросы на уровне «высшего пилотажа» для Линукса.

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

Ладно, вроде бы анакрон сработал как надо. Так что будем считать что вопрос в этом топике как бы решен. Всем спасибо!

papakota
() автор топика

Ниже под ними что ли писать свои задания для anacron'a?

Да, но обычно хватает этих трех. Т.е. анахрон запускает всё то, что должен запускать хрон, пока тот отсутствует. Т.о. можно без маяты переключаться с использования одного на другой или использовать одновременно.

Учитывая характер задач навешиваемых на анахрон, crod.daily должно хватать. Если нужно запускать что-то с интервалом 1 час - то лучше использовать хрон.

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