サーバーを持っている場合、またはコンピューターをオフにしない場合は、Cronを使用するのはいいことですが、スクリプトを実行するために設定した正確な瞬間にラップトップが眠っている場合はどうなりますか?再起動する必要がある場合はどうなりますか?コンピューターが実際に実行されている場合はどうなりますか?
Lazycronでは、「あなたのコンピューターは最終的にそれに到達します。」 Lazycronは、より不足している人生に対してより不足しているアプローチを取ります。確かに、それは仕事を終わらせるでしょうが、急いでいません。実行する時間を設定しないで、範囲を設定します。さらに良いことに、スクリプトが実行されてエラーが発生したときはいつでも、LCはメッセージをポップアップして、静かに失敗するのではなく、何かがうまくいかなかったことを知らせます。
実行するプログラムを使用して、schedule.txtファイルを編集します。
「時間」とは、スクリプトの実行が許可されている場合です。複数の時間窓をコンマで分離できます。たとえば、 1-3am, 2pm-4pm, 11:30-11:34 - これらの数字で遊んでください。システムは非常に柔軟です。スクリプトを実行すると、各プログラムで利用可能な次回のウィンドウが表示されるので、期待したことを確認できます。
たとえば、コンピューターがオンラインであるが使用されていないときにのみ実行したいバックアップスクリプトがあるとしましょう。以下のschedule.txtでは、時間範囲を午後8時30分から午前3時までに設定します。周波数は*に設定されています。つまり、その期間中に1回しか実行されません。日付は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 | 1日または時間の時間ごとに何度も走ってください。 |
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 ($ with $ with seperate変数) |
shell | subprocess.run(shell=True)をセットコマンド内の高度なシェル機能へのアクセスを許可しますが、セキュリティリスクと見なされます。 |
リマインダー:記入する必要がないフィールドに*使用します。5つのフィールドすべてには、少なくとも1つの文字を含める必要があります。
xprintidle 、コンピューターがアイドル状態になっている秒数を取得するために必要です。
cpu 、 network 、またはdiskフラグのシステム監視ユーティリティを使用します。 psutilをインストールしてください: python3 -m pip install psutil
スケジュールが正しく機能するかどうかはわかりませんか? - テストオプションでプログラムを実行するか、各スクリプトパスの前に##を配置して、それが何をするかを示します。ログは /tmp /lazycron_logsに保持されます
--idle (minutes) - プラグイン中に数分後に眠りにつく。 --idlebatt (minutes) - バッテリーの電源で何分も後に眠りにつく。
Requirementsリストにsuspendオプションを備えたプログラムを追加します。 -LCは、コンピューターをスリープ状態にする前に、一時停止プログラムを実行した後、1サイクルを待ちます。この期間にコンピューターがアクティビティを示した場合、睡眠はキャンセルされます。 私のスクリプトは1日に1回しか実行されません!
0にあることを確認してください *ではなく*XprintidleはDiplayを開くことができませんでした
crontabまたはその他の非GUI端末からLazycronを開始する場合は、最初にディスプレイをエクスポートする必要があります。たとえば、 export DISPLAY=:0を実行しますsshを介して実行する場合は、-Xフラグ: ssh -Xを使用してセッションに接続してくださいX11Forwarding yes /etc/ssh/sshd_configでx11forwardingを設定し、SSHを再起動します。プログラムが失敗した場合、デスクトップでメッセージを取得するにはどうすればよいですか?
PYQT6 PythonモジュールをPIPからインストール(優先): sudo pip install PyQt6
またはサードパーティのアプリをインストールする: zenity sudo apt install zenity
プログラムが開始されるたびに--verbose = 2 mode?
それはrantimesの歴史です。 Unixタイムスタンプを記録する代わりに、ログが開始されてから数秒を記録するのがよりコンパクトであることがわかりました。
これらの番号をログの開始時にタイムスタンプに追加して、各プログラムがいつ開始されたかの正確なUNIXタイムスタンプを取得します。
将来実装できるアイデア。これまたは別のアイデアがあなたに興味を持っている場合、タグ「提案」を使用してバグレポートを提出してください。
要件のブールロジック: idle 2m OR today 3h
ANDとして実行されます。Mac / Windowsサポート
新しい要件フィールド、あなたが見たいものを教えてください!