如果您擁有服務器或永遠不會關閉計算機,使用Cron是不錯的,但是如果您的筆記本電腦在確切的一分鐘內您設置為運行腳本的時間就睡著了,該怎麼辦?如果您必須重新啟動怎麼辦?如果您的計算機實際運行,但是您寧願等到它在運行備份過程或其他密集腳本之前關閉蓋子的閒置怎麼辦?
借助Lazycron,“您的計算機最終將遍及它。” Lazycron採取了更加缺乏的生活方法。當然,這將完成工作,但是沒有急事。您沒有設置時間運行,而是設置範圍。更好的是,每當腳本運行並遇到錯誤時,LC都會彈出一條消息,讓您知道某些問題出了問題,而不僅僅是默默失敗。
您可以使用要運行的程序編輯Schedule.txt文件:
“時間”是窗口允許腳本運行的時候。您可以將多個時間窗口與逗號分開。例如: 1-3am, 2pm-4pm, 11:30-11:34玩這些數字;該系統非常靈活。運行我的腳本時,它將向您顯示每個程序可用的下一個時間窗口,因此您可以確認它正在執行您的期望。
例如,假設您有一個備份腳本,僅在計算機在線時才想運行,但不在使用中。在下面的schedule.txt中,我將時間範圍設置為晚上8:30至凌晨3點之間。頻率設置為* ,這意味著在此期間只能運行一次。日期設置為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 | 最大電流CPU用法啟動過程,表示為CPU組合功率的百分比。 |
network | 最大當前網絡用法啟動過程,表示為kb/s |
ssid | 檢查在運行前查看WiFi網絡名稱是否匹配。 |
| 何時何地多久 | |
start | 在啟動時只運行很多次。 0 =無限 |
skip | 跳過在啟動時運行此過程X時間。 |
max | 運行腳本的最多次數。 |
reps | 每天或每個時間窗口僅運行很多次。 |
delay | 啟動腳本之前延遲 |
suspend | 在暫停上運行腳本(如果用腳本觸發 - iDle選項) |
wake | 暫停後醒來運行腳本 |
random | 腳本將隨機運行 示例:隨機8H(平均)每8小時運行一次。 有時候它可能會運行5次以上,而其他日子一點也不是。 這就是隨機性的工作方式。 |
| 循環 | |
loop | 在腳本結束時多次運行腳本。循環0 =永遠循環。不計入代表。 |
retry | 在失敗時重試了這麼多次。不計入代表。 |
loopdelay | 延遲循環或重試後很長時間。默認值= 60秒(如果未設置)。 |
delaymult | 每個循環後乘以延遲。默認為2(重試模式下每個環的雙重延遲) |
| 環境 | |
nice | 以Unix良好價值啟動腳本。更高的值對其他過程更好 |
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無法開放外交官
crontab或其他非GUI終端啟動Lazycron,則必須先導出顯示。例如,運行export DISPLAY=:0ssh上運行,請確保使用-X標誌附加到會話: ssh -X還設置X11轉發, X11Forwarding yes /etc/ssh/sshd_config和RESTART SSH。如果程序失敗,我如何在桌面上獲取消息?
從PIP安裝PYQT6 PYTHON模塊(首選): sudo pip install PyQt6
或安裝第三方應用程序: zenity sudo apt install zenity
數字列表是什麼意思是每次以--verbose = 2 mode?
這是跑步的歷史。我發現沒有記錄UNIX時間戳,而是發現自日誌啟動以來的數字秒數更緊湊。
在日誌開始時,將這些數字添加到時間戳中,以獲取每個程序啟動時的確切unix時間戳。
將來可以實施的想法。如果您或其他想法對您感興趣,則提交錯誤報告:
布爾邏輯要求: idle 2m OR today 3h
AND 。MAC / Windows支持
新需求字段,讓我知道您想看什麼!