Problemy ze skryptem cron i definicją TERM przy użyciu polecenia top


11

Mam problem z wykonaniem procesu cron w celu sprawdzenia bieżącego użycia procesora na moim serwerze.

Mój skrypt zaczyna się od:

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

Mogę wykonać bez problemu w konsoli, ale w cron dostaję

góra: nie udało się uzyskać tty

Jeśli użyję opcji -b do góry

top -b -n 1

dostaję

„głupi”: nieznany typ terminala.

Używam xterm jako TERM

Dzięki za pomoc :)
Lito.

ROZWIĄZANIE: Byłem w stanie rozwiązać problem z:

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

Odpowiedzi:


8

Możesz spróbować czegoś takiego:

TERM=vt100 top -b -n 1

Spowoduje to ustawienie zmiennej TERM do wykonania za pomocą polecenia „top”.

Ale podstawowym problemem jest to, że baza danych termcap jest niekompletna lub uszkodzona. Nie mam komputera Debiana, ale na polu Ubuntu informacje o „głupim” termcapie znajdują się w pliku / usr / share / terminfo / d / głupi. Ten plik jest częścią pakietu ncurses-base na Ubuntu 8.04 i 10.04. Na RHEL jest częścią pakietu ncurses. Być może w Twojej instalacji po prostu brakuje tego pliku?


Tak, właśnie kopałem w górnym źródle i jeśli wybierzesz tryb wsadowy, ustawi TERM na głupi.
user9517,

Nie, problem nie został rozwiązany za pomocą tego polecenia: root @ server: ~ # TERM = vt100 top -b -n 1 'głupi': nieznany typ terminala. root @ server: ~ # ls / usr / share / terminfo / d / dumb ls: / usr / share / terminfo / d / dumb: Brak takiego pliku lub katalogu Mam 286 plików w folderze / usr / share / terminfo / d /
Lito

OK, musisz dowiedzieć się, dlaczego w tym systemie brakuje pliku / usr / share / terminfo / d / dumb. Jak wspomniano, nie mam pudełka z Debianem do zabawy. W systemie Ubuntu pakiet zapewniający ten plik to „ncurses-base”. Być może możesz zrobić „głupie wyszukiwanie apt-cache”, aby dowiedzieć się, który pakiet będzie potrzebny na Debianie. Przypuszczam, że możesz również skopiować plik z działającego pudełka Debiana, ale lepiej byłoby dowiedzieć się, czy brakuje pakietu lub jest on uszkodzony.
cjc

Tak, apt-cache search głupi | grep term = ncurses-base, ale instalacja / ponowna instalacja pakietu nie rozwiązuje mojego problemu. W innym moim (rozwój) Debian 6 serwer (tak samo jak wersja produkcji) można wykonać „top -b” bez problemów i nie mam tego pliku głupi termin ...
Lito

Uruchom coś w stylu „strace top -b -n 1 2> & 1 | grep term”. Spowoduje to wyświetlenie plików terminfo, do których dostęp ma polecenie „top”. Zrób to na pudełku, nad którym wszystko działa, i na pudełku, na którym nie działa. Właśnie uruchomiłem go na polu RHEL i najpierw szuka terminfo w ~ / .terminfo / d / dumb. Być może użytkownik wykonujący cron na drugim polu ma ten plik. Jeśli nie, „strace” pokaże, co faktycznie robi polecenie „top”.
cjc
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.