membuat perintah dijalankan sekali setiap jam


12

Saya memiliki pengindeks untuk sphinx, dan saya ingin menjalankannya setiap jam di linux. Bagaimana saya melakukan ini?

linux 

Jawaban:


14

Karena semua orang memposting jawaban pendek, saya pikir saya akan menjadi sedikit lebih deskriptif ...

cron adalah daemon yang ditemukan pada kebanyakan sistem * nix yang menjalankan perintah terjadwal pada interval yang ditentukan.

Anda menambahkan skrip ke daftar dengan menyalinnya ke folder pilihan Anda:

  • cron. setiap hari
  • cron
  • cron. setiap bulan
  • cron.weekly

Folder-folder ini biasanya ditemukan di bawah /etcfolder.


2
folder cron. * sangat spesifik untuk distro. crontab adalah cara universal agar item dijalankan oleh cron pada interval yang ditentukan.
MDMarra

Benar. Saya hanya memberi contoh. crontab memberi Anda lebih banyak kontrol.
Nathan Osman


7

Hanya untuk menjadi berbeda -

tergantung pada kebutuhan Anda, Anda dapat menggunakan perintah arloji.

  watch --interval=3600 command

1
Apakah ini menjalankan perintah setiap 1 jam; atau apakah itu menjalankan perintah, tunggu 1 jam, lalu jalankan lagi? Perhatikan itu membuat perbedaan yang baik jika perintahnya sangat lama. (Saya bertanya karena tidak jelas dari halaman manual.)
Malabarba

Benar-benar tidak sulit untuk mencobanya sendiri.
mimoralea


2

Anda akan mengedit file cron dengan memasukkan perintah crontab -e

yang membuat Anda menjadi editor 'vi' (untuk Linux dan FreeBSD saat ini).

lalu masukkan yang berikut ini: (ketik 'i' untuk dimasukkan)

00 * * * * /path/to/sphinx_indexer.exe

lalu simpan dan keluar (tekan 'esc' lalu ketik berikut ini)

:wq



1

Jika Anda hanya membutuhkannya sesekali, tidak secara permanen seperti yang Anda dapatkan cron, dan watchsolusinya tidak cukup fleksibel, Anda juga dapat menggunakan skrip bash lama yang bagus:

while true; do
   # do stuff
   sleep $[60 * 60]
done

Ini tidak akan berfungsi sebagai Stuff #do jika diperlukan 3599 detik untuk mengeksekusi dan kemudian sesuai dengan persyaratan, skrip harus memicu detik berikutnya di bangsal dan mengatur ulang jam ke 0 tetapi dalam kasus ini akan berhenti pada 3599 detik dan kemudian lanjutkan tidur selama 3600 detik berikutnya. Tidak akan ada tumpang tindih tetapi ada celah tak terduga antara iterasi. Di sini saya kira pengguna mencoba untuk melakukan pekerjaan setiap jam tanpa cron.
mannoj

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.