Я слышал, что crontab - хороший выбор, но как мне написать строку и где разместить ее на сервере?
146
Вот хороший учебник о том, что такое crontab и как его использовать в Ubuntu. Ваша строка crontab будет выглядеть примерно так:
00 00 * * * ruby path/to/your/script.rb
( 00 00
указывает на полночь - 0 минут и 0 часов - и *
s означает каждый день каждого месяца.)
Синтаксис: mm hh dd mt wd команда мм минут 0-59 чч час 0-23 дд день месяца 1-31 mt месяц 1-12 ср день недели 0-7 (воскресенье = 0 или 7) команда: что вы хотите запустить все числовые значения можно заменить на *, что означает все
/etc/crontab
(в Ubuntu), но при запускеcrontab -e
вы редактируете специфичный для пользователя crontab, который не позволяет использовать этот столбец. IIRC Ubuntu не рекомендует выходить/etc/crontab
вручную, потому что он может быть перезаписан. См. Здесь: stackoverflow.com/questions/8475694/…sudo crotab -u root -e
со страницы руководства
Следует отметить специальные «псевдонимы», которые можно использовать (задокументированные на странице руководства), в частности, «@reboot», для которого нет альтернативы времени и даты.
Вы также можете использовать этот трюк, чтобы запускать задание cron несколько раз в минуту.
Чтобы добавить задание cron, вы можете сделать одно из трех:
добавьте команду в crontab пользователя, как показано выше (и из crontab, раздел 5, страница руководства).
crontab -e -u <username>
crontab -e
EDITOR
переменной окруженияenv EDITOR=nano crontab -e -u <username>
export EDITOR=vim
crontab -e
chmod a+x <file>
создать сценарий / программу как задание cron и добавить его в системные
/etc/cron.*ly
каталоги anacronchmod a+x /etc/cron.daily/script_runs_daily.sh
- сделать его исполняемымman anacron
chmod a+x <file>
/etc/crontab
или/etc/anacrontab
работают в заданное время./etc/anacrontab
, а cron.hourly - в/etc/cron.d/0hourly
Или, можно создать системные crontables в
/etc/cron.d
./etc/cron.d
не обязательно должны быть исполняемыми.someuser
и/bin/bash
принудительно используется в качестве оболочки.источник
Краткое руководство по настройке задания cron
Создайте новый текстовый файл, например: mycronjobs.txt
Для каждого ежедневного задания (00:00, 03:45) сохраните строки графика в mycronjobs.txt.
Отправьте задания в cron (каждый раз, когда вы запускаете это, cron удаляет то, что было сохранено, и обновляет новую информацию в mycronjobs.txt )
Дополнительная полезная информация
Посмотреть текущие задания cron
Удалить все задания cron
источник
Иногда вам нужно указать PATH и GEM_PATH, используя crontab с rvm.
Как это:
источник
Вы можете выполнить сценарий оболочки двумя способами: либо с помощью задания cron, либо путем написания сценария оболочки.
Предположим, имя вашего скрипта - yourscript.sh.
Сначала проверьте права пользователя скрипта. используйте команду ниже, чтобы проверить разрешение пользователя на скрипт
ll script.sh
Если сценарий находится в корневом каталоге, используйте команду ниже
sudo crontab -e
Во-вторых, если сценарий содержит пользователя «ubuntu», используйте команду ниже
crontab -e
Добавьте в свой crontab следующую строку: -
55 23 * * * /path/to/yourscript.sh
Другой способ сделать это - написать сценарий и запустить его в фоновом режиме.
Вот сценарий, в котором вы должны указать имя сценария (например: - youscript.sh), который будет запускаться каждый день в 23:55.
#!/bin/bash while true do /home/modassir/yourscript.sh sleep 1d done
сохраните его в файл (назовем его "каждый день.sh")
sleep 1d - означает, что он ждет один день, а затем снова запускается.
теперь дайте разрешение вашему скрипту. используйте команду ниже: -
chmod + x every-day.sh
Теперь выполните этот сценарий оболочки в фоновом режиме с помощью «nohup». Это продолжит выполнение сценария даже после выхода из сеанса.
используйте команду ниже для выполнения скрипта.
nohup ./every-day.sh &
Примечание: - чтобы запускать "yourscript.sh" каждый день в 23:55, вы должны выполнять сценарий "every-day.sh" ровно в 23:55.
источник
Поместите это предложение в файл crontab: 0 0 * * * / usr / local / bin / python /opt/ByAccount.py> /var/log/cron.log 2> & 1
источник