Top komutunu kullanarak cron betiği ve TERM tanımıyla ilgili sorunlar


11

Sunucumda mevcut CPU kullanımını kontrol etmek için bir cron işlemi yürütürken bir sorunum var.

Betiğim şununla başlar:

top -c -n 1 -u www-data > /tmp/kill-cpu

Konsolda sorunsuz çalışabiliyorum ama cron'da

üst: başarısız tty get

Eğer üstteki -b seçeneğini kullanırsam

top -b -n 1

alırım

'aptal': bilinmeyen terminal tipi.

TERM olarak xterm kullanıyorum

Yardımın için teşekkürler :)
Lito.

ÇÖZÜM: Sorunu şu şekilde çözebildim:

ln -s /lib/terminfo/d/dumb /usr/share/terminfo/d/dumb

Yanıtlar:


8

Şöyle bir şey deneyebilirsiniz:

TERM=vt100 top -b -n 1

Bu, TERM değişkenini "top" komutuyla yürütülecek şekilde ayarlar.

Ancak temel sorun, termcap veritabanınızın eksik veya bozuk olmasıdır. Bakmak için bir Debian makinem yok, ama bir Ubuntu kutusunda "aptal" termcap bilgisi / usr / share / terminfo / d / dumb dosyasında. Bu dosya Ubuntu 8.04 ve 10.04'teki ncurses-base paketinin bir parçasıdır. RHEL'de ncurses paketinin bir parçası. Belki de kurulumunuzda bu dosya eksik?


Evet, sadece üst kaynakta kazıyordum ve toplu modu seçerseniz TERM'i aptal olarak ayarlar.
user9517

Hayır, bu komutla sorun çözülmedi: root @ server: ~ # TERM = vt100 top -b -n 1 'dilsiz': bilinmeyen terminal tipi. root @ server: ~ # ls / usr / share / terminfo / d / aptal ls: / usr / share / terminfo / d / dumb: Böyle bir dosya veya dizin yok / usr / share / terminfo / d / klasöründe 286 dosyam var
Lito

Tamam, / usr / share / terminfo / d / dumb dosyasının neden bu sistemde eksik olduğunu anlamanız gerekir. Belirtildiği gibi, oynamak için bir Debian kutum yok. Ubuntu'da bu dosyayı sağlayan paket "ncurses-base" dir. Belki de Debian'da hangi pakete ihtiyacınız olduğunu bulmak için "apt-cache search aptal" yapabilirsiniz. Dosyayı çalışan Debian kutunuzdan da kopyalayabilirsiniz, ancak bir paketin eksik veya bozuk olup olmadığını anlamak daha iyi olacaktır.
cjc

Evet, apt-cache search aptal | grep term = ncurses-base ancak paketi kurmak / yeniden yüklemek sorunumu çözmüyor. Diğer (geliştirme) Debian 6 sunucumda (üretim ile aynı versiyonda) "top -b" yi problemsiz çalıştırabilirim ve bu aptal terim dosyasına sahip değilim ...
Lito

"Strace top -b -n 1 2> & 1 | grep terimi" gibi bir şey çalıştırın. Bu size "top" komutunun eriştiği terminfo dosyalarını gösterecektir. Bunu her şeyin üzerinde çalıştığı kutuda ve üzerinde çalışmadığı kutuda yapın. Sadece bir RHEL kutusu üzerinde koştum ve önce ~ / .terminfo / d / dumb içinde terminfo arar. Muhtemelen, diğer kutuda cron yürüten kullanıcı bu dosyaya sahiptir. Değilse, "strace" "top" komutunun gerçekte ne yaptığını gösterecektir.
cjc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.