Menggunakan cron bagus jika Anda memiliki server atau tidak pernah mematikan komputer Anda, tetapi bagaimana jika laptop Anda tertidur selama menit yang tepat Anda telah mengatur untuk menjalankan skrip Anda? Bagaimana jika Anda harus reboot? Bagaimana jika komputer Anda benar -benar berjalan, tetapi Anda lebih suka menunggu sampai menganggur dengan tutupnya ditutup sebelum menjalankan proses cadangan atau skrip intensif lainnya?
Dengan Lazycron, "Komputer Anda pada akhirnya akan berhasil." Lazycron mengambil pendekatan yang lebih lesu untuk hidup. Tentu, itu akan menyelesaikan pekerjaan, tetapi tidak ada terburu -buru. Anda tidak mengatur waktu untuk dijalankan, Anda mengatur rentang. Lebih baik lagi, setiap kali skrip menjalankan dan menghadapi kesalahan, LC akan memunculkan pesan untuk memberi tahu Anda bahwa ada yang salah daripada hanya gagal diam -diam.
Anda mengedit file jadwal.txt Anda dengan program untuk dijalankan:
"Waktu" adalah jendela saat skrip diizinkan untuk dijalankan. Anda dapat memiliki beberapa waktu jendela yang dipisahkan dengan koma. Sebagai contoh: 1-3am, 2pm-4pm, 11:30-11:34 -Bermain-main dengan angka-angka ini; Sistemnya sangat fleksibel. Saat Anda menjalankan skrip saya, itu akan menunjukkan kepada Anda jendela lain waktu yang tersedia untuk setiap program sehingga Anda dapat mengonfirmasi melakukan apa yang Anda harapkan.
Misalnya, katakanlah Anda memiliki skrip cadangan yang hanya ingin Anda jalankan saat komputer online, tetapi tidak digunakan. Dalam schedule.txt di bawah ini saya mengatur rentang waktu hingga antara 8:30 malam dan 3 pagi. Frekuensi diatur ke * yang berarti hanya akan berjalan sekali selama periode waktu itu. Tanggal diatur ke sat-sun yang berarti hanya akan berjalan pada hari Sabtu dan Minggu. Bidang persyaratan mengatakan bahwa komputer harus menganggur setidaknya selama 5 menit, dicolokkan dan online. Kalau tidak, skrip akan menunggu sampai kondisinya terpenuhi.
Anda juga dapat menetapkan berbagai persyaratan, seperti: komputer harus menganggur untuk waktu tertentu, sibuk, terhubung, online, tutupnya harus ditutup dan lebih banyak lagi. Lihat opsi lengkap di bawah ini di bagian [Persyaratan] (# Persyaratan).
#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
Jendela saat skrip diizinkan untuk dijalankan.
- `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.
Seberapa sering program berjalan. M = menit, h = jam dan seterusnya. Script saya harus memungkinkan sebagian besar input bahasa alami di sini.
- 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.
Biasanya ditetapkan sebagai rentang untuk membatasi untuk berjalan pada hari -hari tertentu dalam seminggu: Contoh: MF, setiap Kamis ke -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.
Daftar persyaratan tambahan yang dipisahkan koma yang diperlukan untuk dijalankan skrip. Seperti halnya waktu, frekuensi, dan tanggal, sebagian besar input bahasa alami diizinkan. Yang tersedia adalah sebagai berikut:
| Persyaratan waktu | |
idle | Waktu komputer telah menganggur. |
busy | Waktu komputer terus -menerus sibuk |
elapsed | Total waktu komputer harus digunakan. |
today | Total waktu hari ini komputer harus digunakan. |
| Persyaratan keadaan komputer | |
online | Apakah kami memiliki akses internet? |
closed/open | Tutup harus ditutup. |
(un)plugged | Kabel listrik harus dipasang. |
lowbatt | Jalankan jika persentase baterai turun di bawah persentase tertentu. |
minbatt | Jalankan jika persentase baterai di atas persentase tertentu. |
disk | Penggunaan disk arus maksimum untuk memulai proses, dinyatakan dalam kb/s |
cpu | Penggunaan CPU maksimum CPU untuk memulai proses, dinyatakan sebagai persentase daya CPU gabungan. |
network | Penggunaan jaringan maksimum saat ini untuk memulai proses, dinyatakan sebagai KB/S |
ssid | Periksa untuk melihat apakah nama jaringan WiFi cocok sebelum berjalan. |
| Kapan dan seberapa sering | |
start | Hanya jalankan ini berkali -kali saat startup. 0 = tak terbatas |
skip | Lewati menjalankan proses ini x kali saat startup. |
max | Jumlah maksimum kali untuk menjalankan skrip. |
reps | Jalankan hanya berkali -kali per hari atau per jendela waktu. |
delay | Tunda sebelum memulai skrip |
suspend | Jalankan skrip pada Suspend (jika dicoba dengan skrip dengan opsi --idle) |
wake | Jalankan skrip saat bangun setelah menangguhkan |
random | Skrip akan berjalan secara acak Contoh: Random 8h akan (rata -rata) berjalan setiap 8 jam. Beberapa hari mungkin berjalan 5+ kali, hari -hari lain tidak sama sekali. Begitulah cara kerja keacakan. |
| Loop | |
loop | Jalankan skrip ini berkali -kali ketika skrip berakhir. loop 0 = loop selamanya. Tidak dihitung terhadap repetisi. |
retry | Coba lagi ini berkali -kali karena kegagalan. Tidak dihitung terhadap repetisi. |
loopdelay | Tunda selama ini setelah loop atau coba lagi. Default = 60 detik jika tidak diatur. |
delaymult | Lipat gandakan penundaan setelah setiap loop. Default ke 2 (Double Delay setiap loop dalam mode RETRY) |
| Lingkungan | |
nice | Mulai skrip dengan nilai unix yang bagus. Nilai yang lebih tinggi lebih baik untuk proses lain |
nologs | Hapus log jika skrip mengembalikan kode 0 (semuanya oke) |
noerrs | Jangan mengingatkan kesalahan skrip apa pun |
localdir | Jalankan skrip dari direktori yang sama dengan yang ada di dalamnya. |
timeout | Waktu untuk membiarkan skrip berjalan sebelum membunuhnya. |
environs | Atur variabel lingkungan sebelum memulai. Format: environs VAL1=TEXT $ VAL2=TEXT (Variabel terpisah dengan $) |
shell | Sets subprocess.run(shell=True)Memungkinkan akses ke fitur shell canggih dalam perintah, tetapi dianggap sebagai risiko keamanan. |
Pengingat : Gunakan * untuk bidang yang tidak perlu Anda isi. Semua 5 bidang harus berisi setidaknya 1 karakter.
xprintidle diperlukan untuk mendapatkan jumlah detik komputer telah menganggur.
Untuk menggunakan utilitas pemantauan sistem untuk bendera cpu , network atau disk ; Harap instal psutil dengan: python3 -m pip install psutil
Tidak yakin apakah jadwal Anda akan bekerja dengan benar? Jalankan program dengan opsi -tes atau cukup letakkan ## sebelum setiap jalur skrip untuk menunjukkan apa yang akan dilakukannya. Log disimpan di /tmp /lazycron_logs
--idle (minutes) -Pergi tidur setelah beberapa menit saat terhubung. --idlebatt (minutes) -Pergi tidur setelah beberapa menit dengan daya baterai.
suspend ke daftar Requirements untuk menjalankannya sebelum ditangguhkan. - LC akan menunggu 1 siklus setelah menjalankan program penangguhan sebelum menempatkan komputer untuk tidur. Jika komputer menunjukkan aktivitas dalam periode ini, tidur akan dibatalkan. Skrip saya hanya berjalan sekali sehari!
0 di dalamnya bukan *xprintidle tidak bisa membuka diplay
crontab atau terminal non GUI lainnya, Anda harus mengekspor tampilan terlebih dahulu. Misalnya, jalankan export DISPLAY=:0ssh pastikan untuk melampirkan sesi dengan bendera -x: ssh -X juga mengatur penerusan X11 dengan X11Forwarding yes di /etc/ssh/sshd_config dan restart ssh.Bagaimana cara mendapatkan pesan di desktop jika suatu program gagal?
Instal Modul Pyqt6 Python dari PIP (lebih disukai): sudo pip install PyQt6
Atau instal aplikasi pihak ketiga: zenity sudo apt install zenity
Apa arti daftar angka setiap kali program dimulai dalam --verbose = 2 mode?
Ini adalah sejarah runtimes. Alih -alih merekam timestamp UNIX, saya merasa lebih kompak untuk merekam angka detik sejak log dimulai.
Tambahkan angka -angka ini ke cap waktu di awal log untuk mendapatkan stempel waktu UNIX yang tepat saat setiap program dimulai.
Gagasan yang dapat diimplementasikan di masa depan. Ajukan laporan bug jika dengan tag "proposal" jika ini atau ide lain menarik minat Anda:
Logika Boolean untuk Persyaratan: idle 2m OR today 3h
AND .Dukungan Mac / Windows
Bidang persyaratan baru, beri tahu saya apa yang ingin Anda lihat!