Я обнаружил интересную вещь при создании своей настройки crontab.

Я использовал эту команду:

crontab -e

И заполните эту строку:

*/55 * * * * export DISPLAY=:0 && /home/user/Documents/script.sh $2>/dev/null

Моя идея заключалась в создании планировщика, который запускался бы script.sh каждые 55 минут.

Но этот скрипт выполняется в это время (например):

08:55, 09:00, 09:05, 09:55, 10:00, 10:05, ...

И я не знаю почему.

Кто-нибудь может мне это объяснить?

2
Jan Bílek 11 Окт 2016 в 18:19

3 ответа

Лучший ответ

Замените скрипт вот так, и он должен работать.

 */5 * * * * [ $(( $(date +%s) / 60 % 55 )) -eq 0 ] && export DISPLAY=:0 && /home/user/Documents/script.sh $2>/dev/null

Минута-час-день-месяц-год

*   any value
,   value list separator
-   range of values
/   step values
3
SaiKiran 11 Окт 2016 в 15:29

Поэтому каждые 5 минут он будет делать это:

Количество секунд, прошедших с 1. 1. 1970 делится на 60 = сколько минут

Echo $ (дата +% s) 1476201056 ... второй

Эхо $ (($ (дата +% s) / 60)) 24603351 ... минут

После этого он будет использовать по модулю счетчик минут

Если результат по модулю равен 0, будет отправлено значение ИСТИНА.

И это типичное логическое И

[$ ((......)) -eq 0] && экспорт ДИСПЛЕЙ .. && ... / script.sh

Спасибо.

Это действительно полезно :)

0
Jan Bílek 11 Окт 2016 в 16:26

Другой вариант - самовоспроизводящаяся работа «на месте». Единственное преимущество перед cron в том, что он менее очевиден, а также если вам нужно, чтобы он запускался не каждые X минут, а через X минут после завершения последнего задания. Таким образом, ваш скрипт будет просто содержать строку для создания нового задания «в» перед его завершением. Что-то типа:

echo "/full/path/to/my/script > /root/myScript.at.log" | at now + X minutes
1
caleb harfoot 11 Окт 2016 в 16:31