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?


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.


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.


5

Anda juga dapat menggunakan @hourlyinstan0 * * * *


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



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.


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.


crontab -l menampilkan tugas cron saat saya login sebagai root. Saya mencoba log_file tetapi kosong.
Anonim
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.