Bagaimana cara mengatur pekerjaan cron untuk menjalankan eksekusi setiap jam?

95

Saya perlu menyiapkan tugas cron yang menjalankan file executable yang dikompilasi menggunakan gcc sekali setiap jam.

Saya masuk sebagai root dan mengetik crontab -e

Kemudian saya memasukkan yang berikut ini dan menyimpan file.

0 * * * *  /path_to_executable

Namun, tugas cron tidak berfungsi.

Saya melihat bahwa ketika saya mengetik /...path_to_executablesaya mendapatkan kesalahan segmentasi. Saya hanya dapat mengeksekusi file yang dapat dieksekusi dari folder tempatnya berada. Adakah cara untuk mengatasi masalah ini?

Anonim
sumber
8
Itu judul yang buruk. Anda tahu cara menyiapkan tugas cron; apa yang ingin Anda ketahui adalah bagaimana membuat perintah itu bekerja.
David Thornley
5
milik superuser.com (tidak terkait langsung dengan pemrograman)
Philipp
3
Judul salah, tapi beginilah cara saya menemukan solusinya.
Roman Holzner
Eksekusi Anda mungkin sudah dimulai. Saya merekomendasikan menggunakan syslog (3) di dalamnya (dan setidaknya membuat pesan log di awal, untuk memastikan itu dimulai).
Basile Starynkevitch

Jawaban:

162
0 * * * * cd folder_containing_exe && ./exe_name

harus berfungsi kecuali ada hal lain yang perlu diatur agar program dapat dijalankan.

joast
sumber
11
gunakan && alih-alih;, jika tidak, hal-hal yang
mengganggu
4
Kamu benar. && jauh lebih baik jika ada kemungkinan cd target tidak ada (misalnya jika direktori ada di server NFS yang sedang down).
joast
Selamatkan hariku! Terima kasih!
Chiakie
Perhatikan bahwa Anda juga memerlukan jalur absolut (yaitu dari direktori root) afaik
drevicko
8

Solusi untuk menyelesaikannya adalah dengan mencari tahu mengapa Anda mendapatkan kesalahan segmentasi, dan memperbaikinya.

David Thornley
sumber
5

Anda juga dapat menggunakan @hourlyinstan0 * * * *

Marek Skiba
sumber
penasaran dengan solusi ini pada menit berapa berjalan, apakah @jam menyiratkan pada 0?
ojblass
1
@ojblass @hourlyadalah sinonim yang tepat dari 0 * * * *, tidak ada perbedaan.
Marek Skiba
2

Apakah maksud Anda eksekusi gagal dijalankan, jika dipanggil dari direktori lain? Ini lebih merupakan bug pada file yang dapat dieksekusi. Salah satu alasan potensial bisa jadi eksekusi membutuhkan beberapa libraires bersama dari folder yang diinstal. Anda dapat memeriksa variabel lingkunganLD_LIBRARY_PATH

Jayan
sumber
2

Jika Anda menggunakan Ubuntu, Anda dapat menempatkan sebuah shell script di salah satu folder tersebut: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthlyatau /etc/cron.weekly.

Untuk detail lebih lanjut, lihat posting ini: /ubuntu/2368/how-do-i-set-up-a-cron-job

James Gentes
sumber
0

Karena saya tidak dapat menjalankan Cexecutable seperti itu, saya menulis yang sederhana shell scriptyang melakukan hal berikut

cd /..path_to_shell_script
./c_executable_name

Dalam daftar cron jobs, saya memanggil skrip shell.

Anonim
sumber
0

menggunakan

path_to_exe >> log_file

untuk melihat keluaran dari perintah Anda juga kesalahan dapat diarahkan

path_to_exe &> log_file

juga bisa Anda gunakan

crontab -l

untuk memeriksa apakah hasil edit Anda telah disimpan.

jartieda
sumber
crontab -l menampilkan tugas cron saat saya login sebagai root. Saya mencoba log_file tetapi kosong.
Anonim