Saya memiliki instalasi baru Ubuntu 12.04.1 LTS dan sejumlah server.
Saya belum menambahkan pekerjaan cron atau mengedit crontab saya di server tersebut, namun, pada waktu yang bersamaan untuk setiap mesin, saya mendapatkan lonjakan CPU 75% dan info berikut di syslog saya pada saat lonjakan:
CRON[8380]: (CRON) info (No MTA installed, discarding output)
Saya telah menginstal mono-lengkap dan menjalankan server layanan stack.
Apa cara terbaik bagi saya untuk menghentikan hal ini terjadi? Saya ingin dapat menghapus lonjakan CPU.
Jawaban:
Linux menggunakan email untuk mengirim pemberitahuan kepada pengguna. Sebagian besar distribusi Linux memiliki layanan surat (termasuk MTA) yang diinstal. Ubuntu tidak.
Anda dapat menginstal layanan email, misalnya postfix, untuk menyelesaikan masalah ini.
Atau Anda bisa mengabaikannya. Saya tidak berpikir ketidakmampuan cron untuk mengirim pesan ada hubungannya dengan lonjakan CPU (yang terkait dengan pekerjaan mendasar yang sedang dijalankan cron). Mungkin paling aman untuk menginstal MTA dan kemudian membaca pesan-pesannya (
mutt
adalah pembaca surat sistem yang baik).sumber
mail
disediakan olehmailutils
(debian), jika ada cara yang lebih baik untuk postfix?Ini terjadi karena pekerjaan cron Anda menghasilkan output dan kemudian daemon cron mencoba untuk mengirim email output itu kepada Anda (yaitu root). Jika Anda tidak membutuhkan output itu, cara termudah untuk menyelesaikannya adalah membuangnya di crontab:
dan tambahkan
>/dev/null 2>&1
ke setiap pekerjaan:sumber
No MTA installed, discarding output
pesan di log dan program saya akhirnya berhenti berjalan sendiri. Saya percaya itu karena lonjakan CPU. Sepertinya semua jawaban yang diposting untuk pertanyaan ini tampaknya mengabaikannya.logger
. Sebagai contohyourCommand >/dev/null 2>&1 | logger -t mycmd
,. Ini akan menempatkan output di syslog untuk menjaga keamanan, dan menghentikan keluhan MTA.Dalam kasus saya, pesan itu mengisyaratkan masalah izin dengan skrip bash, tapi saya tidak bisa melihatnya sampai saya menginstal MTA.
Seperti yang disarankan, saya berlari:
Saya memilih "Lokal" selama pengaturan dan setelah menjalankan pekerjaan cron lagi:
Dalam kasus saya, saya diganti
dengan "root".
Saya kemudian dapat melihat output kesalahan yang terkait dengan izin.
sumber
Seperti yang dinyatakan dalam jawaban sebelumnya, ini terjadi karena pekerjaan cron Anda menghasilkan output, dan kemudian daemon cron mencoba untuk mengirim email output itu kepada Anda. Jika Anda tidak ingin (atau tidak bisa) menginstal MTA, tetapi Anda ingin melihat hasilnya, Anda bisa mengarahkan output pekerjaan cron ke file log. Edit file crontab Anda dengan
(gunakan
sudo
jika masalahnya ada pada root crontab) dan tambahkan setelah setiap perintah, seperti ini:>> /some/log/file 2>&1
Jika ada beberapa perintah pada satu baris, dipisahkan oleh
;
,&&
atau||
, Anda harus melakukan di atas untuk setiap perintah, seperti ini:atau kelompokkan mereka, seperti ini:
Jika Anda ingin mengabaikan stdout dan hanya menangkap stderr, gunakan saja. Letakkan file log di mana pun Anda inginkan - direktori home Anda ,, atau bahkan jika Anda yakin tidak perlu menyimpannya.
> /dev/null 2>> /some/log/file
/var/log
/tmp
Kemudian lihat file log setelah pekerjaan berjalan.
sumber
Di crontab tambahkan ini sebagai baris pertama:
Ini akan mencegah cron dari mencoba mengirim email.
sumber
#
) setelahMAILTO=""
atau tidak akan berhasilJika Anda tidak ingin menginstal MTA (yang saat ini tidak saya perlukan), Anda dapat menyalurkan hasil pekerjaan cron ke file log.
maka dengan pekerjaan cron Anda akan terlihat seperti ini.
maka Anda bisa mengekor log dan melihat apa yang terjadi
Ini adalah apa yang saya lakukan di server mana pun yang saya lihat pesan itu di syslog
sumber
Ini adalah pertanyaan lama tetapi ada jawaban tambahan yang berguna dalam beberapa keadaan.
Pipa output dari perintah cron Anda melalui
logger
sehingga mereka berakhir di syslog.Ini sedikit lebih mudah daripada menginstal postfix, dan menempatkan output ini ke syslog bersama log Anda yang lain. Perintah ini akan menangkap stdout DAN stderr sehingga Anda tidak akan melihat
No MTA installed
pesan dan Anda akan melihat semua output Anda di syslog.Entri contoh cron:
Anda dapat melihat log dengan tag Anda
mycmd
menggunakan:sumber
Salah satu efek samping dari menambahkan
/dev/null 2>&1
perintah tugas cron, adalah bahwa ia akan membuang keduanyaSTDERR
danSTDOUT
(Kesalahan Standar serta Output). Ini berfungsi dengan baik jika Anda tidak ingin ada email dari cron. Tetapi jika Anda ingin kesalahan Anda diemailkan kepada Anda, gunakan>/dev/null
saja. Baca posting blog ini untuk penjelasan lebih lanjut .Anda masih harus menginstal MTA (agen transfer surat) untuk mengirim email kesalahan. Postfix cukup sederhana untuk diinstal dengan:
sudo apt-get install postfix
sumber
Pada awalnya, instal
postfix
, yang dapat menyelesaikan masalahJika Ubuntu, Anda dapat mengedit
crontab
filePerhatian, edit file teratas, bukan kode apa pun di baris pertama, dan masukkan
Saat
cron
menjalankan tugas apa pun, Anda akan mendapatkan emailsumber
Anda dapat mengatur
MAILTO=””
variabel di awalcrontab
file Anda . Ini juga akan menonaktifkan peringatan email. Edit / Buka pekerjaan cron Anda:Di bagian atas file, masukkan:
https://www.cyberciti.biz/faq/disable-the-mail-alert-by-crontab-command/
sumber
Saya punya masalah ini menggunakan alat Docker Kitematic .
Pergi ke wadah magento dan klik
exe
.Lalu lari
Ini jika Anda mencoba menjalankan magento di kitematic. Log akan menampilkan kesalahan ini di mesin virtual:
Maaf jika ini membuat Anda tersesat, tapi itulah cara kerjanya. Anda terus tersesat, tetapi bacalah tentang hal itu dan potongan-potongan itu akan datang bersama suatu hari. Sabar.
sumber