5 ответов:
вот хороший учебник о том, что такое crontab и как его использовать на Ubuntu. Ваша строка crontab будет выглядеть примерно так:
00 00 * * * ruby path/to/your/script.rb(
00 00обозначает полночь--0 минут и 0 часов--и*S означает каждый день каждого месяца.)Syntax: mm hh dd mt wd command mm minute 0-59 hh hour 0-23 dd day of month 1-31 mt month 1-12 wd day of week 0-7 (Sunday = 0 or 7) command: what you want to run all numeric values can be replaced by * which means all
С главной страницы
linux$ man -S 5 crontab cron(8) examines cron entries once every minute. The time and date fields are: field allowed values ----- -------------- minute 0-59 hour 0-23 day of month 1-31 month 1-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names) ... # run five minutes after midnight, every day 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 ...хорошо отметить специальные "ники", которые могут быть использованы (задокументированы на странице руководства), в частности" @reboot", который не имеет альтернативы времени и даты.
# Run once after reboot. @reboot /usr/local/sbin/run_only_once_after_reboot.shвы также можете использовать этот трюк, чтобы выполнить ваше задание несколько раз в минуту.
# Run every minute at 0, 20, and 40 second intervals * * * * * sleep 00; /usr/local/sbin/run_3times_per_minute.sh * * * * * sleep 20; /usr/local/sbin/run_3times_per_minute.sh * * * * * sleep 40; /usr/local/sbin/run_3times_per_minute.shдобавить задание cron, вы можете сделать одну из трех вещей:
добавьте команду на кронтаб пользователя, как показано выше (и из crontab, раздел 5, man-страница).
- редактировать crontab пользователя как корень с
crontab -e -u <username>- или редактировать crontab текущего пользователя с помощью только
crontab -e- вы можете установить редактор с
EDITORпеременные среды
env EDITOR=nano crontab -e -u <username>- или установите значение редактора для всего сеанса оболочки
export EDITOR=vimcrontab -e- сделать скрипты исполняемые с помощью
chmod a+x <file>
создайте скрипт / программу в качестве задания cron и добавьте его в anacron системы
/etc/cron.*lyкаталоги
- anacron / etc / cron.*каталоги лы :
- / etc / cron.ежедневно
- / etc / cron.ежечасно
- / etc / cron.ежемесячно
- / etc / cron.еженедельно
- как в:
- /etc/cron.daily/script_runs_daily.sh
chmod a+x /etc/cron.daily/script_runs_daily.sh-- сделайте его исполняемым- Смотрите также в разделе запускаемые программы Человек:
man anacron- сделать скрипты исполняемыми с
chmod a+x <file>- когда делают эти cron.*лы запустить скрипт?
- для RHEL / CentOS 5.x, они настроены в
/etc/crontabили/etc/anacrontabдля запуска в установленное время- RHEL / CentOS 6.системы x+ и Fedora 17 + Linux определяют это только в
/etc/anacrontab, и определить cron.ежечасно в/etc/cron.d/0hourly
или можно создать системные crontables в
/etc/cron.d.
- ранее описанный синтаксис crontab (с дополнительным предоставлением пользователю для выполнения каждого задания as) помещается в файл, а файл удаляется в /etc/cron.каталог д'.
- ими легко управлять в системе упаковывать (например пакеты RPM), поэтому может Обычно быть специфическим применением.
- разница в синтаксисе заключается в том, что пользователь должен быть указан для задания cron после полей времени/даты и перед выполнением команды.
- файлы, добавленные в
/etc/cron.dне нужно быть исполняемый.- вот пример задания, которое выполняется от имени пользователя
someuser, использование/bin/bashкак оболочка принудительный.
File: /etc/cron.d/myapp-cron # use /bin/bash to run commands, no matter what /etc/passwd says SHELL=/bin/bash # Execute a nightly (11:00pm) cron job to scrub application records 00 23 * * * someuser /opt/myapp/bin/scrubrecords.php
иногда вам нужно будет указать путь и GEM_PATH с помощью crontab с rvm.
такой:
# top of crontab file PATH=/home/user_name/.rvm/gems/ruby-2.2.0/bin:/home/user_name/.rvm/gems/ruby-2.2.0@global/bin:/home/user_name/.rvm/rubies/ruby-2.2.$ GEM_PATH=/home/user_name/.rvm/gems/ruby-2.2.0:/home/user_name/.rvm/gems/ruby-2.2.0@global # jobs 00 00 * * * ruby path/to/your/script.rb 00 */4 * * * ruby path/to/your/script2.rb 00 8,12,22 * * * ruby path/to/your/script3.rb
краткое руководство по настройке cron-задание
создать новый текстовый файл, например: mycronjobs.txt
для каждого ежедневного задания (00:00, 03:45), сохранить строки расписания в mycronjobs.txt
00 00 * * * ruby path/to/your/script.rb 45 03 * * * path/to/your/script2.shотправить задания в cron (каждый раз, когда вы запускаете это, cron удаляет то, что было сохранено и обновляется с новой информацией в mycronjobs.txt)
crontab mycronjobs.txtДополнительные Полезные Информация
смотрите текущие задания cron
crontab -lудалить все задания cron
crontab -r
вы можете выполнить сценарий оболочки двумя способами,либо с помощью задания cron или написав shell-скрипт
предположим, что имя вашего скрипта "yourscript.sh"
сначала проверьте разрешение пользователя скрипта. используйте команду ниже, чтобы проверить разрешение пользователя скрипта
ll script.sh
если скрипт находится в корне,то используйте следующую команду
sudo crontab-e
во-вторых, если скрипт содержит пользователь "ubuntu", затем используйте команду ниже
crontab-e
добавьте в кронтаб следующую строку: -
55 23 * * * /path/to/yourscript.sh
другой способ сделать это-написать скрипт и запустить его в справочный
вот сценарий, где вы должны поместить свое имя сценария(например:- youscript.sh) который будет работать в 23:55 вечера каждый день
#!/bin/bash while true do /home/modassir/yourscript.sh sleep 1d doneсохранить его в файл (давайте назовем его "every-day.sh")
sleep 1d-означает, что он ждет один день, а затем снова запускается.
теперь дайте разрешение на ваш скрипт.используйте команду ниже: -
chmod +x every-day.sh
теперь выполните этот сценарий оболочки в фоновом режиме с помощью "nohup". Это будет продолжать выполнять сценарий даже после выхода из сеанса.
используйте команду ниже для выполнения сценария.
nohup ./every-day.sh &
Примечание: - Для запуска "yourscript.sh" в 23:55 вечера каждый день, Вы должны выполнить "every-day.sh" сценарий ровно в 23: 55 вечера.
Comments