Saya memiliki skrip yang mengingatkan saya untuk me-restart komputer saya jika uptime
lebih dari, katakanlah 3 hari (walaupun diatur ke 0 hari sekarang hanya untuk memeriksa apakah skrip berjalan karena komputer saya telah menyala hanya lebih dari satu hari ..).
Saya menyadari itu bukan skrip paling elegan tapi saya mencoba! :)
#!/bin/bash
up=$(uptime | grep "day" > /home/username/uptime.foo && awk < /home/username/uptime.foo '{ print $3 }')
[[ $up -gt 0 ]] && xmessage -center "Restart!"
Saya telah membuatnya dapat dieksekusi oleh chmod + x checkup.sh
dan berfungsi dengan baik ketika saya menjalankannya dari terminal via./checkup.sh
Entri crontab saya untuk skrip ini adalah:
46 14 * * * /home/username/Desktop/./checkup.sh
Jadi itu berjalan pada 14: 46 jam setiap hari ...
Jadi ... saya pikir itu harus berjalan, kecuali saya tidak melakukan sesuatu yang sangat konyol. Juga, apakah menurut Anda tidak masalah untuk memindahkan skrip bash ini /bin
?
/home/dnaneet/Desktop/./checkup.sh
berfungsi dengan baik. Tapi/home/dnaneet/Desktop/checkup.sh
mungkin tidak berhasil kan? Karena itu perlu./
?Jawaban:
Satu hal dalam satu waktu:
Pertama mari kita beri Anda folder bin berbasis pengguna:
Anda ingin menggunakan crontab. Mari kita mulai dengan sesuatu yang sangat sederhana:
Oke, jadi itu berhasil
Sekarang mari kita coba menjalankan skrip yang melakukan hal yang sama
untuk menjalankan satu menit sekali sampai Anda berhasil
Tidak, Anda tidak perlu ./ di tengah-tengah garis. ./ adalah untuk saat Anda memberikan url relatif.
Oke, jadi itu berhasil
Sekarang mari kita coba menjalankan skrip yang memanggil xmessage
tidak bekerja
Pertama, kita tidak perlu bergantung pada variabel lingkungan. Ini termasuk pengaturan path, pengaturan x11, atau yang lainnya (variabel lingkungan python dan ruby muncul di benak ...)
Mari kita buat kita terlihat sedikit seperti file cron yang tepat anacron .. Aku menyimpan ini sebagai tes
Setel untuk berlari satu menit sekali
crontab test
untuk mengimpornyaAktif ke skrip
Oke, jadi itu berhasil ... apa yang kita lakukan?
Kami mengubah semua perintah untuk tidak bergantung pada jalur yang tidak kami atur secara eksplisit.
Kami menjalankan skrip kami secara eksplisit dengan bash.
Kami memberi tahu skrip yang kami harapkan ada di DISPLAY: 0.0
sumber
:-/
=
untuk menentukan barisDISPLAY
. Kedua, ketika saya mengedit file crontab saya dan menambahkanPATH
seperti yang disarankan dan mengatur waktu untuk menjalankan di lain waktu, jendela pop up tidak muncul. Namun, jendela sembulan menunjukkan baik-baik saja ketika menjalankan skrip menggunakan/bin/bash
... apa yang terjadi?export DISPLAY=:0.0
, itu berfungsi dengan baik. Meskipun ada lang signifikan sekitar 5 detik setelah jam berdentang jam ketika jendela pop up saya seharusnya menunjukkan ... Ada saran? Tapi ya, perbaikan naskahmu sudah berhasil!Masalahnya terpecahkan, baca manual di Google:
deskripsi:
#!/bin/bash
sebagai header/home/wc3/palert/
analisis:
menjawab:
letakkan lingkungan Anda menggunakan baris ini di bawah pada skrip Anda dengan:
ubah ini:
/home/wc3/palert
dengan: tempat Anda meletakkan skrip Anda misalnya
/home/budi/script.sh
Sampel:
Coba letakkan skrip Anda di crontab.
sumber