Запускайте сценарій кожні 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.