Problemi con cron script e definizione TERM usando il comando top


11

Ho un problema nell'esecuzione di un processo cron per verificare l'uso corrente della CPU nel mio server.

La mia sceneggiatura inizia con:

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

Posso eseguire senza problemi in console, ma in cron ottengo

top: tty get fallito

Se uso l'opzione -b in alto

top -b -n 1

ottengo

'stupido': tipo di terminale sconosciuto.

Sto usando xterm come TERM

Grazie per l'aiuto :)
Lito.

SOLUZIONE: sono stato in grado di risolvere il problema con:

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

Risposte:


8

Puoi provare qualcosa del tipo:

TERM=vt100 top -b -n 1

Questo imposterà la variabile TERM da eseguire con il comando "top".

Ma il tuo problema di fondo è che il tuo database termcap è incompleto o rotto. Non ho una macchina Debian da guardare, ma su una scatola di Ubuntu, le informazioni "stupide" sul termcap sono nel file / usr / share / terminfo / d / dumb. Questo file fa parte del pacchetto ncurses-base su Ubuntu 8.04 e 10.04. Su RHEL, fa parte del pacchetto ncurses. Forse alla tua installazione manca semplicemente questo file?


Sì, stavo solo scavando nella fonte principale e se scegli la modalità batch imposta TERM su stupido.
user9517

No, il problema non viene risolto con questo comando: root @ server: ~ # TERM = vt100 top -b -n 1 'stupido': tipo di terminale sconosciuto. root @ server: ~ # ls / usr / share / terminfo / d / dumb ls: / usr / share / terminfo / d / dumb: nessun file o directory di questo tipo Ho 286 file in / usr / share / terminfo / d / cartella
Lito,

OK, dovrai capire perché il file / usr / share / terminfo / d / dumb non è presente in quel sistema. Come notato, non ho una scatola Debian con cui giocare. Su Ubuntu, il pacchetto che fornisce quel file è "ncurses-base". Forse puoi fare "apt-cache search dumb" per capire quale pacchetto ti servirà su Debian. Suppongo che tu possa anche copiare il file dalla tua casella Debian funzionante, ma sarebbe meglio capire se un pacchetto è mancante o rotto.
cjc,

Sì, ricerca apt-cache stupida | grep term = ncurses-base ma l'installazione / reinstallazione del pacchetto non risolve il mio problema. Nel mio altro server (sviluppo) Debian 6 (stessa versione della produzione) posso eseguire "top -b" senza problemi e non ho questo file stupido ...
Lito

Esegui qualcosa come "strace top -b -n 1 2> & 1 | grep term". Questo ti mostrerà i file terminfo a cui accede il comando "top". Fallo sulla scatola su cui tutto funziona e sulla scatola su cui non funziona. L'ho appena eseguito su una scatola RHEL e cerca prima il terminfo in ~ / .terminfo / d / dumb. Probabilmente, l'utente che esegue il cron sull'altra casella ha quel file. In caso contrario, "strace" mostrerà cosa sta effettivamente facendo il comando "top".
cjc,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.