

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
<a name="workingcookbook-extend-cron"></a>

**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 Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) 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](http://en.wikipedia.org/wiki/Cron) Wikipedia. Untuk informasi lebih lanjut tentang cara menjalankan cron job langsung di komputer atau instance berbasis Linux, lihat [Apa itu cron dan crontab, dan](https://kb.iu.edu/d/afiz) 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 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 nama`cronjob.rb`; rincian implementasi dijelaskan nanti. Untuk informasi lebih lanjut tentang buku masak dan resep, lihat[Buku Masak dan Resep](workingcookbook.md).

1. Instal buku masak di tumpukan Anda. Untuk informasi selengkapnya, lihat [Memasang Buku Masak Kustom](workingcookbook-installingcustom-enable.md).

1. Minta OpsWorks Stacks menjalankan resep secara otomatis pada instance layer dengan menetapkannya ke peristiwa siklus hidup berikut. Untuk informasi selengkapnya, lihat [Resep Menjalankan Secara Otomatis](workingcookbook-assigningcustom.md).
   + **Pengaturan** - Menetapkan `cronjob.rb` ke acara ini mengarahkan OpsWorks Stacks untuk menjalankan resep pada semua instance baru.
   + **Deploy** — Menetapkan `cronjob.rb` ke acara ini mengarahkan 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](workingstacks-commands.md).

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](https://docs.chef.io/chef/resources.html#cron). 

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

`cron`adalah sumber daya Chef yang mewakili `cron` pekerjaan. Saat OpsWorks Stacks menjalankan resep pada sebuah instance, penyedia terkait menangani detail pengaturan pekerjaan.
+ `job_name`adalah nama yang ditentukan pengguna untuk `cron` pekerjaan itu, seperti. `weekly report`
+ `hour`/`minute`/`weekday`tentukan kapan perintah harus dijalankan. Contoh ini menjalankan perintah setiap hari Sabtu pukul 1:10 pagi.
+ `command`menentukan 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**  
`bundle`Perintah tidak bekerja dengan `cron` pekerjaan secara default. Alasannya adalah bahwa 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 \$1PATH mungkin tidak berkembang dalam `cron` pekerjaan, praktik terbaik adalah secara eksplisit menambahkan informasi jalur yang diperlukan ke pekerjaan tanpa bergantung pada perluasan variabel \$1PATH. 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 khusus yang disebut, misalnya, PHPAdmin dan tetapkan `cronjob.rb` ke acara Setup dan Deploy. Lapisan khusus tidak harus melakukan banyak hal. Dalam hal ini, jalankan PHPAdmin saja satu resep khusus pada instance-nya.

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

Karena hanya satu instance milik PHP App Server dan PHPAdmin layer, `cronjob.rb` berjalan hanya pada instance itu dan Anda hanya menerima satu laporan.