Я чув, що crontab - це хороший вибір, але як написати рядок і куди його поставити на сервер?
Я чув, що crontab - це хороший вибір, але як написати рядок і куди його поставити на сервер?
Відповіді:
Ось хороший підручник щодо того, що таке crontab і як ним користуватися на Ubuntu. Ваша лінія crontab буде виглядати приблизно так:
00 00 * * * ruby path/to/your/script.rb
( 00 00
вказує опівночі - 0 хвилин і 0 годин - і *
середнє значення кожного дня кожного місяця.)
Синтаксис: мм hh dd mt wd команда мм хв 0-59 год год 0-23 день день 1-31 місяця mt місяць 1-12 wd день тижня 0-7 (неділя = 0 або 7) команда: те, що ти хочеш запустити всі числові значення можуть бути замінені на *, що означає все
/etc/crontab
(на Ubuntu), але при запуску crontab -e
редагування конкретного користувача кронтаб, який не дозволяє цей стовпець. IIRC Ubuntu перешкоджає виходу /etc/crontab
вручну, тому що він може бути перезаписаний. Дивіться тут: stackoverflow.com/questions/8475694/…
sudo crotab -u root -e
зі сторінки man
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
...
Добре відзначити спеціальні "псевдоніми", які можна використовувати (задокументовані на сторінці "man"), зокрема "@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 користувача, як показано вище (і з crontab, розділ 5, man man).
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
каталогів анакронів системи
chmod 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
як оболонки вимушене. 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
Іноді вам потрібно буде вказати PATH та 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 або написавши скрипт оболонки
Давайте припустимо, що назва вашого сценарію - "yourscript.sh"
Спочатку перевірте дозвіл користувача на сценарій. Використовуйте команду нижче, щоб перевірити дозвіл користувача на сценарій
Lll script.sh
Якщо скрипт знаходиться в корені, то використовуйте команду нижче
sudo crontab -e
По-друге, якщо скрипт містить у користувача "ubuntu", тоді використовуйте команду нижче
кронтаб -е
Додайте наступний рядок у свій crontab: -
55 23 * * * /path/to/yourscript.sh
Інший спосіб зробити це - написати скрипт і запустити його в backgroud
Ось сценарій, де потрібно ввести ім'я свого сценарію (наприклад: - youscript.sh), який буде працювати щовечора о 23:55
#!/bin/bash
while true
do
/home/modassir/yourscript.sh
sleep 1d
done
збережіть його у файлі (дозволяє назвати його "Every-day.sh")
сон 1д - означає, що він чекає один день, а потім знову запускається.
тепер дайте дозвіл на ваш script.use нижче команди: -
chmod + x Every-day.sh
тепер виконайте цей скрипт оболонки у фоновому режимі, використовуючи "nohup". Це дозволить виконувати сценарій навіть після виходу з сеансу.
використовувати команду нижче для виконання сценарію.
nohup ./every-day.sh &
Примітка. - Щоб запускати "sopcript.sh" о 23:55 щодня, вам потрібно виконати сценарій "Every-day.sh" рівно о 23:55.