Các vấn đề với tập lệnh cron và định nghĩa TERM khi sử dụng lệnh trên cùng


11

Tôi gặp sự cố khi thực hiện quy trình cron để kiểm tra việc sử dụng CPU hiện tại trong máy chủ của mình.

Kịch bản của tôi bắt đầu bằng:

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

Tôi có thể thực thi mà không gặp vấn đề gì trong giao diện điều khiển, nhưng trong cron tôi nhận được

đầu trang: thất bại

Nếu tôi sử dụng tùy chọn -b để đầu

top -b -n 1

tôi có

'câm': loại thiết bị đầu cuối không xác định.

Tôi đang sử dụng xterm là HẠN

Cảm ơn sự giúp đỡ của bạn :)
Lito.

GIẢI PHÁP: Tôi đã có thể giải quyết vấn đề với:

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

Câu trả lời:


8

Bạn có thể thử một cái gì đó như:

TERM=vt100 top -b -n 1

Điều này sẽ đặt biến TERM để thực thi bằng lệnh "top".

Nhưng vấn đề tiềm ẩn của bạn là cơ sở dữ liệu termcap của bạn không đầy đủ hoặc bị hỏng. Tôi không có máy Debian để xem, nhưng trên hộp Ubuntu, thông tin thuật ngữ "ngu ngốc" có trong tệp / usr / share / terminfo / d / dumb. Tệp này là một phần của gói cơ sở ncurses trên Ubuntu 8.04 và 10.04. Trên RHEL, đây là một phần của gói ncurses. Có lẽ cài đặt của bạn chỉ đơn giản là thiếu tập tin này?


Đúng, tôi chỉ đào xung quanh trong nguồn hàng đầu và nếu bạn chọn chế độ hàng loạt, nó sẽ đặt TATE thành câm.
dùng9517

Không, vấn đề không được giải quyết bằng lệnh này: root @ server: ~ # TERM = vt100 top -b -n 1 'dumb': loại thiết bị đầu cuối không xác định. root @ server: ~ # ls / usr / share / terminfo / d / dumb ls: / usr / share / terminfo / d / dumb: Không có tệp hoặc thư mục nào tôi có 286 tệp trong thư mục / usr / share / terminfo / d /
Lito

OK, bạn sẽ phải tìm ra lý do tại sao tệp / usr / share / terminfo / d / dumb bị thiếu trong hệ thống đó. Như đã lưu ý, tôi không có hộp Debian để chơi. Trên Ubuntu, gói cung cấp tệp đó là "ncurses-base". Có lẽ bạn có thể thực hiện "apt-cache search cumb" để tìm ra gói nào bạn cần trên Debian. Tôi cho rằng bạn cũng có thể sao chép tệp từ hộp Debian đang hoạt động của mình, nhưng sẽ tốt hơn nếu tìm ra nếu một gói bị thiếu hoặc bị hỏng.
cjc

Có, tìm kiếm apt-cache câm | grep term = ncurses-base nhưng cài đặt / cài đặt lại gói không giải quyết được vấn đề của tôi. Trong máy chủ Debian 6 (phát triển) khác của tôi (cùng phiên bản với sản xuất) Tôi có thể thực thi "top -b" mà không gặp vấn đề gì và tôi không có tệp hạn sử dụng này ...
Lito

Chạy một cái gì đó như "strace top -b -n 1 2> & 1 | grep term". Điều này sẽ cho bạn thấy các tập tin terminfo mà lệnh "top" đang truy cập. Làm điều này trên hộp mọi thứ đang hoạt động và hộp không hoạt động. Tôi chỉ chạy nó trên một hộp RHEL và nó sẽ tìm terminfo trước trong ~ / .terminfo / d / dumb. Có thể, người dùng thực thi cron trên hộp khác có tệp đó. Nếu không, "strace" sẽ hiển thị lệnh "top" thực sự đang làm gì.
cjc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.