Saya memasukkan skrip yang dapat dieksekusi /etc/cron.hourly
, tetapi skrip itu tidak berjalan setiap jam sebenarnya itu tidak pernah berjalan sama sekali.
Berikut ini skrip (Suara jam) yang saya buat:
#! / bin / bash mplayer ~ / Music / sfx_msg-highlight.wv &> / dev / null & spd-say -r -50 -p 50 -t male3 "Waktu sekarang adalah $ (tanggal +"% l% p ")" beri tahu-kirim "Ini:" "$ (tanggal +"% l% p ") sekarang." -i ~ / Pictures / "first tee.png" -t 5000
Crontab saya adalah:
DISPLAY=":0.0"
XAUTHORITY="/home/naruto/.Xauthority"
XDG_RUNTIME_DIR="/run/user/1000"
0 * * * * /home/naruto/Hour-sound.sh
Sementara perintah mplayer
dan spd-say
dijalankan dengan benar, notify-send
itu tidak. Saya juga mencoba mengarahkan kesalahan ke file:
0 * * * * /home/naruto/Hour-sound.sh 2>/tmp/error
Tapi itu tidak menunjukkan hasil. Apa yang saya lakukan salah?
/etc/crontab
memilikirun-parts
garis untuk menjalankancron
pekerjaan per jam dari direktori?/etc/crontab
file memiliki garis17 * * * * root cd / && run-parts --report /etc/cron.hourly
?Jawaban:
Seperti yang mungkin Anda lihat di komentar untuk pertanyaan Anda, cronjobs di
/etc/cron.hourly
(dan yang lainnya, direktori serupa) dijalankan olehrun-parts
.run-parts
sedikit pilih-pilih tentang nama file. Secara default ia tidak menjalankan file yang nama filenya mengandung apa pun selain (semua dari ASCII)Jadi jika skrip Anda memiliki nama file misalnya "myscript.sh", itu hanya diabaikan, karena
run-parts
tidak suka titik.sumber
/etc/cron.hourly
belum tentu dieksekusi "pada jam"? Jika cronjob in Anda/etc/crontab
memiliki 17 pada posisi menit, skrip dieksekusi pada 00:17, 01:17 dan sebagainya. Dan lagi untuk berjaga-jaga, izin skrip memungkinkan root pengguna untuk menjalankannya?/etc/cron.d/
tidak boleh menulis atau menjalankan izin untuk "grup" atau "orang lain". "pemilik" perlu mengeksekusi izin, "grup" dan "yang lain" harus hanya memiliki izin baca. Mungkin itu berlaku/etc/cron.hourly
juga, meskipun saya tidak mengujinya.Satu masalah adalah Anda mencoba menjalankan aplikasi grafis (
notify-send
) dari cron. Butuh sedikit penyesuaian. Anda perlu mengaturXAUTHORITY
danDISPLAY
variabel dalam crontab sehingga dapat terhubung ke sesi X Anda yang sedang berjalan dan Anda perlu mengaturXDG_RUNTIME_DIR
agar dapat terhubung ke sesi pulseaudio Anda. Sayangnya, ini perlu diatur di crontab itu sendiri, jadi Anda tidak bisa menggunakannya/etc/cron.hourly
. Alih-alih, jalankancrontab -e
dan tambahkan baris ini:Ubah nilai
XDG_RUNTIME_DIR
menjadi apa pun yang dikembalikan saat Andaecho
dari terminal. Di sistem saya, ini adalah:Mungkin akan sama pada Anda, tetapi periksa dulu. Sekarang, skrip Anda akan berjalan setiap jam dan akan berfungsi seperti yang diharapkan.
sumber
notify-send
membutuhkanXAUTHORITY
danDISPLAY
variabel yang akan ditetapkan dan ii)mplayer
perlu yangXDG_RUNTIME_DIR
ditetapkan. Apakah Anda mencoba saran saya? Itu harus memperbaiki kedua masalah. Anda mungkin juga memiliki masalah penamaan karenarun-parts
seperti yang dijelaskan dalam jawaban lainnya./etc/crontab
, jangan lakukan itu. Anda ingin ini dijalankan sebagai pengguna Anda, bukan sebagai root dan file itu memiliki format yang berbeda pula. Lakukan saja apa yang saya katakan dalam jawaban saya, jalankancrontab -e
dan tambahkan baris di sana.Script yang diakhiri dengan
.sh
tidak dieksekusi di/etc/cron.hourly
folder:ganti nama skrip
atau masukkan skrip-panggilan ke
yang memungkinkan
.sh
akhirnyasumber
Jangan gunakan skrip dengan ekstensi (abc.sh) dan tambahkan tempat kebutuhan Anda. (cron.hours).
tambahkan barang kode Anda ke file abc dan simpan. (untuk kebutuhan Anda) (ini harus perintah bash)
menggunakan
perintah untuk membuat file yang dapat dieksekusi.
ada beberapa baris yang sudah ditentukan sebelumnya. Edit dari baris menit ke jam Anda dan simpan.
maka itu akan berjalan dengan baik.
sumber