Menjalankan Cron Jobs di Instans Linux - AWS OpsWorks

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menjalankan Cron Jobs di Instans Linux

penting

AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Support Tim di AWS re:Post atau melalui AWS Dukungan Premium.

Pekerjaan cron Linux mengarahkan daemon cron untuk menjalankan satu atau lebih perintah pada jadwal yang ditentukan. Misalnya, tumpukan Anda mendukung aplikasi e-commerce PHP. Anda dapat mengatur pekerjaan cron agar server mengirimi Anda laporan penjualan pada waktu yang ditentukan setiap minggu. Untuk informasi lebih lanjut tentang cron, lihat cron di Wikipedia. Untuk informasi lebih lanjut tentang cara menjalankan cron job langsung di komputer atau instance berbasis Linux, lihat Apa itu cron dan crontab, dan bagaimana cara menggunakannya? di situs web basis pengetahuan Universitas Indiana.

Meskipun Anda dapat secara manual mengatur cron pekerjaan pada instance berbasis Linux individu dengan menghubungkannya dengan SSH, dan mengedit crontab entri mereka, keuntungan utama dari AWS OpsWorks Stacks adalah Anda dapat mengarahkannya untuk menjalankan tugas di seluruh lapisan instance. Prosedur berikut menjelaskan cara mengatur cron pekerjaan pada instance lapisan PHP App Server, tetapi Anda dapat menggunakan pendekatan yang sama dengan lapisan apa pun.

Untuk menyiapkan cron pekerjaan pada instance layer
  1. Terapkan buku masak dengan resep dengan cron sumber daya yang mengatur pekerjaan. Contoh mengasumsikan bahwa resep diberi namacronjob.rb; rincian implementasi dijelaskan nanti. Untuk informasi lebih lanjut tentang buku masak dan resep, lihatBuku Masak dan Resep.

  2. Instal buku masak di tumpukan Anda. Untuk informasi selengkapnya, lihat Memasang Buku Masak Kustom.

  3. Minta AWS OpsWorks Stacks menjalankan resep secara otomatis pada instance layer dengan menetapkannya ke peristiwa siklus hidup berikut. Untuk informasi selengkapnya, lihat Resep Menjalankan Secara Otomatis.

    • Pengaturan - Menetapkan cronjob.rb ke acara ini mengarahkan AWS OpsWorks Stacks untuk menjalankan resep pada semua instance baru.

    • Deploy — Menetapkan cronjob.rb ke acara ini mengarahkan AWS OpsWorks Stacks untuk menjalankan resep di semua instance online saat Anda menerapkan atau menerapkan ulang aplikasi ke layer.

    Anda juga dapat menjalankan resep secara manual pada instance online dengan menggunakan perintah Execute Recipes stack. Untuk informasi selengkapnya, lihat Jalankan Perintah Stack.

Berikut ini adalah cronjob.rb contoh, yang menyiapkan pekerjaan cron untuk menjalankan aplikasi PHP yang diimplementasikan pengguna seminggu sekali yang mengumpulkan data penjualan dari server dan mengirimkan laporan. Untuk contoh lebih lanjut tentang cara menggunakan sumber daya cron, lihat cron.

cron "job_name" do hour "1" minute "10" weekday "6" command "cd /srv/www/myapp/current && php .lib/mailing.php" end

cronadalah sumber daya Chef yang mewakili cron pekerjaan. Saat AWS OpsWorks Stacks menjalankan resep pada sebuah instance, penyedia terkait menangani detail pengaturan pekerjaan.

  • job_nameadalah nama yang ditentukan pengguna untuk cron pekerjaan itu, seperti. weekly report

  • hour/minute/weekdaytentukan kapan perintah harus dijalankan. Contoh ini menjalankan perintah setiap hari Sabtu pukul 1:10 pagi.

  • commandmenentukan perintah yang akan dijalankan.

    Contoh ini menjalankan dua perintah. Yang pertama menavigasi ke /srv/www/myapp/current direktori. Yang kedua menjalankan mailing.php aplikasi yang diterapkan pengguna, yang mengumpulkan data penjualan dan mengirimkan laporan.

catatan

bundlePerintah tidak bekerja dengan cron pekerjaan secara default. Alasannya adalah bahwa AWS OpsWorks Stacks menginstal bundler di direktori. /usr/local/bin Untuk digunakan bundle dengan cron pekerjaan, Anda harus secara eksplisit menambahkan jalur /usr/local/bin ke pekerjaan cron. Juga, karena variabel lingkungan $PATH mungkin tidak berkembang dalam cron pekerjaan, praktik terbaik adalah secara eksplisit menambahkan informasi jalur yang diperlukan ke pekerjaan tanpa bergantung pada perluasan variabel $PATH. Contoh berikut menunjukkan dua cara untuk digunakan bundle dalam suatu cron pekerjaan.

cron "my first task" do path "/usr/local/bin" minute "*/10" command "cd /srv/www/myapp/current && bundle exec my_command" end
cron_env = {"PATH" => "/usr/local/bin"} cron "my second task" do environment cron_env minute "*/10" command "cd /srv/www/myapp/current && /usr/local/bin/bundle exec my_command" end

Jika tumpukan Anda memiliki beberapa server aplikasi, menetapkan cronjob.rb ke peristiwa siklus hidup lapisan PHP App Server mungkin bukan pendekatan yang ideal. Misalnya, resep berjalan pada semua instance layer, sehingga Anda akan menerima beberapa laporan. Pendekatan yang lebih baik adalah menggunakan lapisan khusus untuk memastikan bahwa hanya satu server yang mengirim laporan.

Untuk menjalankan resep hanya pada salah satu instance layer
  1. Buat layer kustom yang disebut, misalnya, phpAdmin dan tetapkan cronjob.rb ke acara Setup dan Deploy. Lapisan khusus tidak harus melakukan banyak hal. Dalam hal ini, phpAdmin hanya menjalankan satu resep khusus pada instance-nya.

  2. Tetapkan salah satu instance PHP App Server ke. AdminLayer Jika sebuah instance milik lebih dari satu lapisan, AWS OpsWorks Stacks menjalankan resep bawaan dan kustom setiap lapisan.

Karena hanya satu instance milik PHP App Server dan lapisan phpAdmin, hanya cronjob.rb berjalan pada instance itu dan Anda hanya menerima satu laporan.