Bisakah Anda memberi tahu saya apa yang harus ditulis crontabsehingga menjalankan beberapa pekerjaan (untuk pengujian saya akan menggunakan /usr/bin/chromium-browser) setiap 15 detik?
Anda tidak dapat pergi di bawah satu menit perincian dengan cron. Yang bisa Anda lakukan adalah, setiap menit, jalankan skrip yang menjalankan pekerjaan Anda, tunggu 15 detik dan ulangi. Baris crontab berikut akan dimulai some_jobsetiap 15 detik.
* * * * * for i in 0 1 2; do some_job & sleep 15; done; some_job
Script ini mengasumsikan bahwa pekerjaan tidak akan pernah lebih dari 15 detik. Skrip yang sedikit lebih rumit berikut tidak akan menjalankan instance berikutnya jika diperlukan waktu terlalu lama. Itu bergantung pada datemendukung %sformat (misalnya GNU atau Busybox, jadi Anda akan baik-baik saja di Linux). Jika Anda meletakkannya langsung di crontab, perhatikan bahwa %karakter harus ditulis seperti \%pada baris crontab.
Namun saya akan mencatat bahwa jika Anda perlu menjalankan pekerjaan sesering setiap 15 detik, cron mungkin merupakan pendekatan yang salah. Meskipun unices baik dengan proses yang berumur pendek, overhead peluncuran program setiap 15 detik mungkin tidak dapat diabaikan (tergantung pada seberapa menuntut program tersebut). Tidak bisakah Anda menjalankan aplikasi Anda sepanjang waktu dan menjalankannya setiap 15 detik?
bisa juga: untuk saya masuk 1 2 3 4 ; do some_job & sleep 15; done(tidur terakhir tidak akan mempengaruhi menjalankan berikutnya), tetapi cara Anda melakukannya mungkin lebih baik untuk waktu surat cronjob keluar (dikirim tepat setelah some_job terakhir, sebelum 15-an kemudian dalam varian saya)
Untuk mencegah pekerjaan mengganggu dirinya sendiri, kami membatasi waktu berjalan hingga 15 detik melalui GNU coreutils ' timeoutuntuk setiap pekerjaan. Namun, perlu diketahui bahwa jika pekerjaan gagal keluar dengan benar segera di akhir tahun 15-an, Anda mungkin masih berakhir dengan masalah. Lihat manual perintah untuk perincian tentang bagaimana menyelesaikannya jika itu menjadi masalah. Perhatikan juga, jika perintah tersebut membutuhkan waktu lebih dari 15an, dan batas waktu akan membunuhnya, Anda akan mendapatkan status keluar yang tidak nol yang akan memicu email-cronjob.
Bagus. Jika suatu proses berjalan lama maka proses selanjutnya mungkin akan berakhir pada inti yang berbeda juga. Tidak yakin apakah Anda dapat dengan sengaja menetapkan afinitas inti untuk pekerjaan Cron, tetapi itu mungkin membuat pendekatan ini lebih baik.
Tim
@Tim bagus. Saya berbicara sedikit tentang itu dalam sebuah pengeditan.
Otheus
2
Singkatnya, cron tidak granular dengan waktu. Periode terpendek yang akan Anda dapatkan adalah 1 menit.
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .----- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
* * * * /usr/bin/chromium-browser
Namun Anda dapat menulis skrip yang akan berjalan setiap 15 detik ...
Saya punya garis * * * * * /usr/bin/chromium-browserdi crontab. Menurut manual itu harus dijalankan setiap menit tetapi tidak ada yang berjalan.
xralf
Apakah sulit untuk menulis naskah seperti itu? Haruskah saya mengajukan pertanyaan lain atau bisakah itu ditulis di sini?
xralf
Pekerjaan Cron tidak memiliki terminal jadi saya berharap browser gagal. Mungkin melakukannya diam-diam.
BillThor
Log cron saya terletak di / var / log / cron untuk turunan dari redhat, yaitu. fedora, centos dll. Ini juga dapat membantu Anda untuk menggambarkan dengan tepat apa yang Anda coba lakukan sehingga orang memiliki gambaran lengkap tentang apa yang sedang terjadi.
rfelsburg
1
Di crontab Anda:
* * * * /usr/bin/chromium-browser_starter
Kemudian di /usr/bin/chromium-browser_starter:
#!/bin/sh
# chromium-browser_starter
#
# Schedules /usr/bin/chromium-browser to run every 15 seconds for a minute.
# Intended to be called every minute through crond(8).
for ((secs=0; secs<46; secs+=15)); do
(sleep $secs; /usr/bin/chromium-browser "$@") &
done
wait
Jawaban:
Anda tidak dapat pergi di bawah satu menit perincian dengan cron. Yang bisa Anda lakukan adalah, setiap menit, jalankan skrip yang menjalankan pekerjaan Anda, tunggu 15 detik dan ulangi. Baris crontab berikut akan dimulai
some_job
setiap 15 detik.Script ini mengasumsikan bahwa pekerjaan tidak akan pernah lebih dari 15 detik. Skrip yang sedikit lebih rumit berikut tidak akan menjalankan instance berikutnya jika diperlukan waktu terlalu lama. Itu bergantung pada
date
mendukung%s
format (misalnya GNU atau Busybox, jadi Anda akan baik-baik saja di Linux). Jika Anda meletakkannya langsung di crontab, perhatikan bahwa%
karakter harus ditulis seperti\%
pada baris crontab.Namun saya akan mencatat bahwa jika Anda perlu menjalankan pekerjaan sesering setiap 15 detik, cron mungkin merupakan pendekatan yang salah. Meskipun unices baik dengan proses yang berumur pendek, overhead peluncuran program setiap 15 detik mungkin tidak dapat diabaikan (tergantung pada seberapa menuntut program tersebut). Tidak bisakah Anda menjalankan aplikasi Anda sepanjang waktu dan menjalankannya setiap 15 detik?
sumber
1 2 3 4 ; do some_job & sleep 15; done
(tidur terakhir tidak akan mempengaruhi menjalankan berikutnya), tetapi cara Anda melakukannya mungkin lebih baik untuk waktu surat cronjob keluar (dikirim tepat setelah some_job terakhir, sebelum 15-an kemudian dalam varian saya)Pendekatan yang berbeda dari yang lain: Jalankan 4 cronjobs, masing-masing terhuyung oleh 15 detik:
Untuk mencegah pekerjaan mengganggu dirinya sendiri, kami membatasi waktu berjalan hingga 15 detik melalui GNU coreutils '
timeout
untuk setiap pekerjaan. Namun, perlu diketahui bahwa jika pekerjaan gagal keluar dengan benar segera di akhir tahun 15-an, Anda mungkin masih berakhir dengan masalah. Lihat manual perintah untuk perincian tentang bagaimana menyelesaikannya jika itu menjadi masalah. Perhatikan juga, jika perintah tersebut membutuhkan waktu lebih dari 15an, dan batas waktu akan membunuhnya, Anda akan mendapatkan status keluar yang tidak nol yang akan memicu email-cronjob.sumber
Singkatnya, cron tidak granular dengan waktu. Periode terpendek yang akan Anda dapatkan adalah 1 menit.
Namun Anda dapat menulis skrip yang akan berjalan setiap 15 detik ...
sumber
* * * * * /usr/bin/chromium-browser
di crontab. Menurut manual itu harus dijalankan setiap menit tetapi tidak ada yang berjalan.Di crontab Anda:
Kemudian di
/usr/bin/chromium-browser_starter
:sumber
ps aux | grep chrom
setelah satu menit saya tidak dapat melihat browser chromium berjalan.sleep
.