Cron.hourly tidak akan berjalan

55

Ok, Jadi saya sudah membuat skrip saya, saya menjatuhkannya /etc/cron.hourlylalu saya chmod 777file tetapi tidak akan berjalan (secara otomatis). Jika saya menjalankannya secara manual, itu berfungsi dengan baik. Apakah saya perlu melakukan hal lain?

Switchkick
sumber
Jawaban ini seharusnya tidak menerima banyak upvotes tanpa nama file dan konten.
pengguna tidak diketahui

Jawaban:

13

Mengapa tidak menggunakan crontab (/ etc / crontab) dan gunakan * / 1 di bidang jam. Saya telah menggunakan ini untuk menjalankan skrip setiap 5 menit dan berfungsi dengan baik:

# m h dom mon dow user  command
* */1  * * *   user    command
oli206
sumber
6
Penggunaan cron.dailydan teman berfungsi sedikit lebih baik jika mesin tidak berjalan sepanjang waktu, karena anacron mencoba memperkirakan jadwal yang tepat sedangkan plain cron tidak akan menjalankannya jika mesin tidak menyala sepanjang malam. Untuk pekerjaan per jam, ini mungkin tidak terlalu penting.
poolie
9
Saya sangat menghargai jawaban berikutnya, karena ini mengatasi masalah dengan cron. Jujur, daripada mencari solusi.
tishma
4
Ini bukan jawaban untuk pertanyaan
josh123a123
@poolie Seperti dapat dilihat pada/etc/crontab : cron.daily, cron.weeklydan cron.monthly dijalankan dengan anacron (jika tersedia) tapi per jam run-parts --report /etc/cron.hourly.
Pablo A
144

Entri masuk cron.hourlydijalankan oleh mekanisme run-parts ( man run-partsuntuk info lebih lanjut). Dan run-partspemilih tentang nama file yang dianggap valid.

Misalnya, memberikan skrip Anda ekstensi akan membuatnya tidak valid dan mengakibatkan pekerjaan tidak berjalan. [a-zA-Z0-9_-]adalah karakter yang valid, jadi '.' membuatnya tidak valid.

Saat menambahkan pekerjaan ke /etc/cron.hourly(atau .daily,, .weeklydll), selalu uji setelah itu yang run-partsbenar-benar akan menjalankannya dengan mengeluarkan perintah:

run-parts --test /etc/cron.hourly

Jika dengan menjalankan perintah ini ia menunjukkan file Anda itu berarti berhasil. Kalau tidak, jika tidak menunjukkan apa-apa nama file Anda tidak valid.

Apa nama naskahmu?

DaithiF
sumber
Ada dua: cerebro_random_response.sh dan Cerebro Temperature.sh tidak bagus?
Switchkick
21
benar, tidak bagus :) [a-zA-Z0-9_-] adalah karakter yang valid, jadi '.' membuatnya tidak valid. Inilah yang saya maksud di atas dengan 'memberikan skrip Anda ekstensi akan membuatnya tidak valid'
DaithiF
11
Omg, Ini baru saja menyelamatkan sakit kepala yang sangat besar. TERIMA KASIH! giving your script an extension will make it invalid and result in the job not being run
Jonathan S. Fisher
Anda juga dapat menggunakan --reportuntuk benar-benar menjalankan skrip.
Pablo A
5

Masalah Anda mungkin karena izin yang terlalu terbuka, yang memungkinkan siapa saja untuk mengedit file Anda. Coba 755saja.

Melihat entri cron dalam output syslog Anda harus mengonfirmasi hal ini.

Cry Havok
sumber
4

Jawaban DaithiF harus menjadi jawaban yang tepat.

Juga, skrip saya tidak ada #!/bin/bashdi baris pertama. Meskipun skrip dapat dieksekusi dengan baris perintah, run-partsmenolaknya dengan mengatakan "Exec format error".

Mengubah nama file dari scriptname.shmenjadi scriptnamedan menambahkan #!/bin/bashke baris pertama memungkinkan skrip saya berjalan setiap jam.

Ben Lin
sumber
-1

Ketika Anda berlari

crontab -l

Apakah tugas ini ada dalam daftar?

jika tidak, tambahkan

crontab -e

tambahkan baris ini

0 * * * * yourScript

jika ada di daftar ini, cobalah untuk menambahkan jalur bahasa pemrograman ke bagian atas skrip Anda

Contoh:

bash: #!/bin/bash

2 hal ini selalu menyelesaikan masalah saya :)

Wolfy
sumber
Selesai semuanya dan skripnya bagus, itu berfungsi seperti pesona. Ada dalam daftar crontab juga, tetapi tidak ada tugas setiap jam berjalan. Terima kasih :(
Switchkick