Запускайте сценарій кожні 30 секунд на Mac


2

Я створив cronjob, який працює кожні 60 секунд, що для мене недостатньо часто. Це проста команда: wget localhostЯк я можу запускати цю комендатуру кожні 30, 16 секунд на своєму mac?

Відповіді:


6

Запустіть свою команду, використовуючи запускаючи замість цього. Використовуйте файли списку властивостей як ~/Library/LaunchAgents/і /System/Library/LaunchAgents/як натхнення. Документація на developer.apple.com .

Для визначення інтервалу запуску, наприклад, 30 секунд, використовуйте наступне:

<key>StartInterval</key>
<integer>30</integer>

Хорошим інструментом для генерації файлів startd.plist є Lingon .
NReilingh

5
Ця відповідь мене зацікавила, як впливає час виконання програми під час її запуску, тому я зробив кілька тестів: якщо програма запускає менше 30 секунд, вона запускатиметься кожні 30 секунд (наприклад, якщо вона запускається в 1: 00:00 та триває до 1:00:17, наступний пробіг розпочнеться о 1:00:30 не 1:00:47). OTOH, якщо це займе більше 30 секунд, наступний запуск буде чекати, поки цей запуск закінчиться (наприклад, якщо він триватиме до 1:00:34, наступний запуск розпочнеться о 1:00:34).
Гордон Девіссон

4

Ви можете спробувати наступне:

while true
do
<program>
sleep <time>
done

Замініть і відповідно.

Редагувати: Коли вам доведеться запускати будь-які секунди, Control+ cце вб'є.


Якщо припустити, що це <program>займе більше 0 секунд, це спочатку буде відключатися, накопичуючи час зміщення, чим довше він працює.
Даніель Бек

Правда. Це прямо протилежна поведінка запуску, яка пропустить запуск, якщо програма працює довше, ніж проміжок часу.
alesplin

Ваша програма також пропускає ці запуски, оскільки програма все ще працює. Тільки рішення Дуга може отримати їх, я не знаю достатньо, cronщоб бути впевненим.
Даніель Бек

Це я кажу. Моя буде працювати, спати <time> і запускатись знову, незалежно від того, скільки часу потрібно запустити, за винятком випадків, коли програма сама по собі. rund запустить програму, і якщо вона працює довше <time>, вона буде чекати, поки вона закінчиться. Cron (наскільки я розумію) запускатиме програму щоразу <time> (якщо <time> відповідає гранулярності крона), і це може призвести до запуску декількох екземплярів одразу, якщо вона працює довше <time>. Тож у нього є 3 варіанти його бажаної поведінки. Не знаючи, чого хоче ОП, я подумав розмістити альтернативу, яка може бути простішою, ніж cron або startd.
alesplin

0

Напишіть сценарій bash, який працює щохвилини. Помістіть wget у цикл, або просто послідовні дзвінки, sleep 30між ними.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.