Использование Cron - это хорошо, если у вас есть сервер или никогда не выключите компьютер, но что, если ваш ноутбук спит в ту минуту, когда вы установили для запуска своего скрипта? Что если вам нужно перезагрузиться? Что, если ваш компьютер на самом деле работает, но вы бы предпочли подождать, пока он не будет бездействует с закрытой крышкой, прежде чем запустить процесс резервного копирования или другой интенсивный сценарий?
С Lazycron «ваш компьютер в конце концов доберется до него». Lazycron использует более неадекватный подход к жизни. Конечно, это выполнит работу, но никакого спешки не будет. Вы не устанавливаете время для запуска, вы устанавливаете диапазон. Еще лучше, когда сценарии запускаются и сталкиваются с ошибкой, LC появится сообщение, чтобы сообщить вам, что что -то пошло не так, вместо того, чтобы просто молча не удалось.
Вы редактируете свой файл wared.txt с помощью программ для запуска:
«Время» - это окно, когда сценарий разрешается запускать. Вы можете иметь несколько временных окон, разделенных запятыми. Например: 1-3am, 2pm-4pm, 11:30-11:34 -поиграть с этими числами; Система очень гибкая. Когда вы запустите мой сценарий, он покажет вам в следующее время для каждой программы, чтобы вы могли подтвердить, что он делает то, что вы ожидали.
Например, допустим, у вас есть резервный сценарий, который вы хотите запустить только тогда, когда компьютер находится в Интернете, но не используется иным образом. В schedule.txt ниже я установил диапазон времени между 8:30 до 3:00. Частота установлена на * , что означает, что она будет работать только один раз в течение этого периода времени. Дата установлена на sat-sun что означает, что она будет работать только по субботам и воскресеньям. Поле требований гласит, что компьютер должен быть простаиванием не менее 5 минут, подключенным и онлайн. В противном случае сценарий будет ждать, пока эти условия не будут выполнены.
Вы также можете установить различные требования, такие как: компьютер должен быть простаиванием в течение определенного количества времени, занято, подключено, онлайн, крышка должна быть закрыта и многое другое. См. Полные варианты ниже в разделе [требования] (# требования).
#Time Frequency Date Requirements Script Path
8:30pm-3am * sat-sun idle 5m, plugged, online daily_backup_script_path_goes_here.sh
* 1h * busy 10, idle 5 my_hourly_backup_script.py
2pm-8pm 1h elapsed * online a_daily_script.py
-5pm * m-f random 8h A_surprise_everyday.py
4-6pm * 2nd Thursday busy 5m mpg123 'Libera - Going Home.mp3'
* * March 14 * pi_day.py
* * 1st-2nd * zenity --info --text="Monthly todo"
* * * start 1 run_at_startup.sh
Окно, когда сценарий разрешается запускать.
- `1-3am, 2pm - 4pm` (You can have multiple windows separated with commas.)
- `-5pm` will run until 5pm everyday
- A `*` will run 24 hours a day.
Play around with these numbers, the system is very flexible. When you run my script it will show you the next time window available for each program.
Как часто работает программа. m = минуты, h = часы и так далее. Мой скрипт должен разрешить большинство естественных языков здесь.
- 1h will run every hour
- 1h elapsed will only count time when the computer is actively in use by user.
- A `0` will run as often as possible.
- A `*` will only run once a day.
Обычно устанавливается как диапазон, чтобы ограничить его для работы в определенные дни недели: Примеры: MF, каждый 2 -й четверг
- `m-f` will run monday through friday
- `2nd Thursday` will run every 2nd thursday of the month
- `1-2nd` will run on the first two days of the month
- A `*` will run on any day of the year.
Отдельный список дополнительных требований, необходимых для запуска сценария. Как и со временем, частотой и датой, большинство входов естественного языка разрешены. Доступны следующие:
| Требования к времени | |
idle | Время, когда компьютер был бездействующим. |
busy | Время, когда компьютер был постоянно занят |
elapsed | Для общего времени компьютер должен использоваться. |
today | Общее время сегодня компьютер должен использоваться. |
| Компьютерные требования | |
online | У нас есть доступ в Интернет? |
closed/open | Крышка должна быть закрыта. |
(un)plugged | Шнур питания должен быть прикреплен. |
lowbatt | Запустите, если процент батареи падает ниже определенного процента. |
minbatt | Запустите, если процент аккумулятора превышает определенного процента. |
disk | Максимальное использование диска тока для начала процесса, выраженное в KB/S |
cpu | Максимальное ток использования процессора для начала процесса, выраженное в процентах от комбинированной мощности процессора. |
network | Максимальное текущее использование сети для начала процесса, выраженное как Kb/s |
ssid | Проверьте, соответствует ли имя сети Wi -Fi перед запуском. |
| Когда и как часто | |
start | Запустите только так много раз в стартапе. 0 = бесконечный |
skip | Пропустить, запустив этот процесс x раз при запуске. |
max | Максимальное количество раз для запуска сценария. |
reps | Работайте только так много раз в день или за окно времени. |
delay | Задержка перед началом сценария |
suspend | Запустите скрипт на приостановке (если Trigged с помощью Script с опцией -IDLE) |
wake | Запустите скрипт на Wake после приостановки |
random | Сценарий будет работать случайным образом Пример: случайный 8H будет (в среднем) каждые 8 часов. В некоторые дни он мог бы работать 5+ раз, в другие дни вовсе не. Вот как работает случайность. |
| Петли | |
loop | Запустите скрипт столько раз, когда сценарий заканчивается. Цикл 0 = петля навсегда. Не учитывается в отношении представителей. |
retry | Повторно повторить неудачу. Не учитывается в отношении представителей. |
loopdelay | Задержка так долго после петли или повторения. По умолчанию = 60 секунд, если не установлено. |
delaymult | Умножьте задержку после каждого цикла. По умолчанию до 2 (двойная задержка в каждом цикле в режиме повторной попытки) |
| Среда | |
nice | Начните скрипт с Unix Nice Value. Более высокие значения лучше для других процессов |
nologs | Удалить журналы, если скрипт возвращает код 0 (все в порядке) |
noerrs | Не предупреждайте о любых ошибках сценария |
localdir | Запустите сценарий из того же каталога, в котором он находится. |
timeout | Время позволить сценарию запустить, прежде чем убить его. |
environs | Установите переменные окружающей среды перед началом. Формат: environs VAL1=TEXT $ VAL2=TEXT (отдельные переменные с $) |
shell | Устанавливает subprocess.run(shell=True)Позволяет доступ к расширенным функциям оболочки в команде, но считается риском безопасности. |
Напоминание : используйте * для полей, которые вам не нужно заполнять. Все 5 полей должны содержать как минимум 1 символ.
xprintidle требуется для получения количества секунд, компьютер был простальным.
Использовать утилиты мониторинга системы для cpu , network или disk флагов; Пожалуйста, установите psutil с: python3 -m pip install psutil
Не уверены, что ваше расписание будет работать правильно? Запустите программу с помощью опции -тестирование или просто поместите ## перед каждым пути сценария, чтобы показать, что она будет делать. Журналы хранятся в /tmp /lazycron_logs
--idle (minutes) --idlebatt (minutes) через стольких минут во время подключения.
suspend в список Requirements , чтобы запустить их перед приостановкой. - LC будет ждать 1 цикл после запуска программы приостановки, прежде чем уложить компьютер. Если компьютер показывает деятельность в этот период, сон будет отменен. Мои сценарии бегают только один раз в день!
0 , а не *Xprintidle не мог открыть Diplay
crontab или другой терминал без графического интерфейса, вы должны сначала экспортировать отображение. Например, запустите export DISPLAY=:0ssh , обязательно прикрепите к сеансу с помощью флага -x: ssh -X также настройка x11 с X11Forwarding yes в /etc/ssh/sshd_config и перезапустить SSH.Как получить сообщения на рабочем столе, если программа выходит из строя?
Установите модуль Pyqt6 Python от PIP (предпочтительнее): sudo pip install PyQt6
или установить стороннее приложение: zenity sudo apt install zenity
Что означает список чисел каждый раз, когда программа начинается в --verbose = 2 mode?
Это история пробега. Вместо того, чтобы записывать TimeStamp Unix, я нашел его более компактным для записи количества секунд с момента начала журнала.
Добавьте эти цифры в TimeStamp в начале журнала, чтобы получить точную TimeStamp Unix, когда каждая программа началась.
Идеи, которые могут быть реализованы в будущем. Подать отчет об ошибке, если с тегом «предложение», если эта или другая идея вас интересует:
Логическая логика для требований: idle 2m OR today 3h
AND .Поддержка Mac / Windows
Новые поля требований, дайте мне знать, что вы хотите увидеть!