Відповіді:
at
має більш простий інтерфейс для цього типу призначення, якщо at
він встановлений, машина працює atd
і користувачеві дозволяється використовувати команду.
Наприклад (перевірити точний синтаксис за допомогою man at
або info at
),
at -f
файл now + 53 minutes
або
at -f
файл now + 2 hours
запустить команди у вказаному файлі через 53 хвилини або 2 години відповідно.
at
потім можна повторно виконати на початку запланованого завдання з відповідними (випадковими або іншими) одиницями початку, підрахунку та часу.
Редагувати
Як Арджан наголошує нижче, якщо ви використовуєте це для інших програм, ніж для іграшок, вам потрібно подумати над такими питаннями, як, наприклад, що відбувається
якщо наступний запуск починається до того, як завершиться попередній (наприклад, повторний вступ сценарію?) або
якщо виконання не вдалося виконати правильно або
якщо наступний запуск не запускається взагалі або вчасно (наприклад, що відбувається, якщо машина вимкнена, коли наступний запуск належить до запуску) і
про реєстрацію та звітування про невдалі або успішні запуски.
at
-command є першим рядком, і якщо сценарій працює тривалий час (або якщо інтервали короткі), остерігайтеся запускати кілька екземплярів одночасно. Але коли at
знаходиться в останньому рядку сценарію, очевидно, перепланування не буде зроблено, якщо сценарій не працює. Крім того, запуск сценарію з командного рядка також зробить його (повторним) розкладом (і: тоді можуть існувати кілька графіків одночасно). І cron
підтримує надсилання будь-яких помилок (або: взагалі виводу) через електронну пошту; Я не знаю, чи at
є щось подібне?
У мене є багато команд в / etc / crontab, які роблять всілякі речі, а деякі потребують точності за лічені секунди. Тепер cron може мати більш точну роздільну здатність, зберігаючи при цьому весь час видимий і централізований.
Цей приклад отримує та аналізує веб-сторінку між 10 та 50 секундами перед кожні 5 хвилин:
4-59/5 * * * * root (sleep $(($RANDOM\%40+10))) && /etc/munin/plugins/someplugin prefetch
Він не повинен мати точний час, оскільки дані повільно рухаються, але це допомагає максимально скоротити час виконання вузла munin-вузла, не потрібно чекати веб-сторінок. (Плагін додатково кешує сторінку на 30 хвилин, щоб зменшити непотрібні звернення, але потрібно оновлювати базу даних кожні 5 хвилин).
Зверніть увагу на \% - cron замінює% на "\ n" - корисно для зберігання тексту пошти в одному рядку.
Внутрішньо cron
, я не думаю, що така функція існує. Я думаю, що найкращим рішенням було б розмістити свою команду в скрипті оболонки, а sleep
вгорі сценарію розмістити випадковий інтервал і використовувати $RANDOM
змінну. Потім запускайте сценарій один раз на день у звичайній роботі cron.
#!/bin/bash
sleep $(($RANDOM%5))
/path/to/command -param1 -param2
Це буде залежати від типу інтервалу, який ви після. але припустимо, що ви хочете, щоб сценарій запускався випадковим чином з ймовірністю 1:30 (раз на кожні 30 хвилин)
Створіть свій cron-скрипт для перидіозності, скажімо, 10 хвилин. Він буде стріляти 3 рази кожні 30 хвилин.
Всередині сценарію використовуйте rand як умову для заяви if . Ви хочете, щоб rand повернув число від 0 до 2. Якщо це 0, виконайте вміст оператора if.
По суті, ваш сценарій завжди спрацьовує через встановлений інтервал. Але буде виконувати лише команду, яка вас зацікавила, випадковим чином. Ваш постачальник послуг буде вам вдячний.
file
містить наступнийat
запуск, правильно?