Apa arti `line 19: 12364 Killed` dalam pesan kesalahan crontab?

10

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>&1tugas 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

Zen
sumber
Apa yang ada line 19dalam naskah? Mungkin memposting skrip Anda akan membantu kami memberi Anda jawaban.
devnull
line 19adalah/usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1
Zen
Bisakah Anda memperbarui pertanyaan Anda dengan konten daily_task.sh? Sulit untuk memahami mengapa gagal 1:50 amtetapi berhasil 10 amdengan informasi sejauh ini.
devnull
3
Periksa juga konten /var/log/messagessaya 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?
devnull
@ DevNull, saya memeriksa log kernel, sekarang saya yakin skrip ini telah menghabiskan terlalu banyak memori dan kernel membunuhnya.
Zen

Jawaban:

17

Sering kali ketika aplikasi sedang killed, itu selalu ide yang baik untuk melihat /var/log/messagesfile 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.

devnull
sumber
1
Hanya catatan tambahan bahwa secara default ubuntu menampilkan messageske syslog bukannya/var/log/messages
oak