Saya seorang programmer, dan tidak tahu banyak tentang crons, tapi saya ingin tahu apakah ini mungkin.
Katakanlah saya memiliki array [option1, option2, option3]
dan skrip yang saya jalankan di NodeJS disebut script.js
. Saya ingin menjalankan skrip ini setiap hari jam 1 pagi. The cron
perintah ini akan menjadi:
0 1 * * * node ~/script.js
Nah sekarang bagian yang sulit, saya ingin memutar opsi setiap hari, jadi misalnya Senin saya ingin menjalankan node ~/script.js option1
, hari berikutnya node ~/script.js option2
dan seterusnya. Juga, saya ingin dapat menambah / menghapus opsi saat dibutuhkan, tetapi rotasi harus tetap utuh.
Apakah ini mungkin? Saya tahu saya bisa melakukan ini di dalam simpul juga, tetapi saya lebih suka melakukan ini dari luar skrip, dan biarkan skrip seperti apa adanya.
Jawaban:
Itu rumit. Apa artinya rotasi tetap utuh setelah modifikasi daftar opsi? Lagi pula, Anda bisa membangun kembali daftar, menghancurkan petunjuk apa pun tentang di mana Anda berada.
Apa yang mungkin bisa Anda lakukan adalah mengatur direktori dengan file yang mewakili opsi Anda (baik melalui nama file mereka, atau konten mereka). Lalu kapan pun tugas cron dijalankan, Anda akan mendaftar direktori itu, mengurutkan file berdasarkan waktu modifikasi terakhir. Anda mengambil entri terlama,
touch
file itu untuk mengubah waktu modifikasinya menjadi waktu saat ini, kemudian menggunakannya untuk menjalankan skrip.Jika Anda mau, Anda dapat menulis ini dalam satu baris untuk cron juga, meskipun akan menjadi lebih sulit untuk dibaca.
Menambahkan opsi berarti menambahkan file baru ke direktori opsi. Menghapus opsi berarti menghapus file. Pada titik mana pun, file terlama adalah yang akan dijalankan berikutnya, sehingga opsi baru akan ditambahkan di akhir siklus, seolah-olah baru saja dijalankan. Jika Anda ingin memesan ulang opsi, Anda dapat menyentuhnya dalam urutan apa pun yang Anda inginkan.
sumber
$(ls -rt | head -n1)
tentu saja akan merusak nama file yang menyertakan baris baru, tetapi untuk tujuan ini Anda mungkin bisa lolos hanya dengan "jangan lakukan itu".Katakanlah Anda menginginkan opsi yang berbeda untuk setiap hari dalam seminggu. Kamu bisa:
Punya tugas cron terpisah untuk ini:
dll ...
Berikan
bash
opsi yang diinginkan untuk Anda:(Saya tidak menjalankan yang terakhir, jadi mungkin perlu sedikit penyesuaian - tapi itu ide umum.)
sumber
echo option1
dll, karena opsi saya mungkin bervariasi dari minggu ke minggu. Sakit lakukan saja ini di aplikasi Node saya, dan pantau yang mana saya berlari terakhir di db saya.Tidak, saya tidak bisa memikirkan cara yang bersih untuk melakukan ini. Tulis saja skrip pembungkus shell sederhana yang memeriksa tanggal dan memulai aplikasi simpul Anda dengan opsi yang diperlukan setiap hari.
sumber