Saya mendapat tugas crontab harian:
50 1 * * * sh /my_path/daily_task.sh > /tmp/zen_log 2>&1
Skrip shell daily_task ini akan menjalankan beberapa skrip python dan menghasilkan file data.
Dan itu gagal selama dua malam. Tetapi ketika saya datang di pagi hari, menjalankan skrip python secara manual, saya mendapatkan file data. Atau saya atur crontab baru yang hanya mengatur tanggal 0 10 * * *
, dan crontab ini juga berhasil.
Jadi kemarin, saya memasukkan > /tmp/zen_log 2>&1
tugas cron untuk mendapatkan beberapa pesan kesalahan.
Dan pagi ini, saya mendapat pesan kesalahan ini di zen_log:
/my_path/daily_task.sh: line 19: 12364 Killed /usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1
Sepertinya beberapa proses telah terbunuh? Tapi apa sebenarnya artinya ini line 19: 12364 Killed
?
PS:
Hari ini, satu menit yang lalu, ketika saya menjalankan skrip python secara manual, saya dapat:
/usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1
Killed
line 19
dalam naskah? Mungkin memposting skrip Anda akan membantu kami memberi Anda jawaban.line 19
adalah/usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1
daily_task.sh
? Sulit untuk memahami mengapa gagal1:50 am
tetapi berhasil10 am
dengan informasi sejauh ini./var/log/messages
saya ingin tahu apakah skrip Anda membuat kesalahan Out-of-Memory (OOM) dan terbunuh. Apakah sistem Anda cenderung menjalankan skrip / aplikasi / pekerjaan lapar sumber daya sistem lainnya selama jam malam dibandingkan dengan jam pagi?Jawaban:
Sering kali ketika aplikasi sedang
killed
, itu selalu ide yang baik untuk melihat/var/log/messages
file Anda untuk melihat apakah kernel membunuh proses. Pemicu paling umum (dalam pengalaman saya) selalu karena kesalahan kehabisan memori (OOM), karena perusahaan saya terutama menggunakan aplikasi java, sangat umum bagi para pengembang untuk menerbitkan pembaruan kode buruk yang memicu peristiwa OOM .Menjadwalkan tugas ketika OS Anda memiliki sumber daya yang paling tersedia mungkin adalah mengapa itu berhasil dalam slot waktu AM dan bukan di PM ketika kebanyakan orang suka menjadwalkan pekerjaan sistem perpajakan. Solusi sederhana untuk ini adalah dengan meningkatkan sumber daya sistem Anda, membatasi sumber daya yang dialokasikan untuk kode Anda atau bergerak ketika pekerjaan Anda dijadwalkan sehingga mereka tidak konflik.
sumber
messages
ke syslog bukannya/var/log/messages