warum ist top nicht in einem cronjob verwendbar?
Hallo, warum bricht bei der Verwendung von /usr/bin/top in einem Skript dieses mit dem Fehler top: tcgetattr() failed: Invalid argument (Meldung unter suse 8.0, Kernel 2.4.18) top: tcgetattr() failed: Inappropriate ioctl for device (Meldung unter Suse 7.2, Kernel 2.4.19) ab, wenn es als cronjob gestartet wurde? z.B.: /etc/crontab: * * * * * root /usr/bin/top -n 1 >> /var/log/test 2>&1 Ich kann /usr/bin/top -n 1 >> /var/log/test 2>&1 von einem xterm starten, ob direkt am Prompt oder in einem Skript und es funktioniert, warum nicht als cronjob? thx Ekkard
On Fre, 04 Apr 2003 at 00:31 (+0200), Ekkard Gerlach wrote:
warum bricht bei der Verwendung von /usr/bin/top in einem Skript dieses mit dem Fehler
top: tcgetattr() failed: Invalid argument (Meldung unter suse 8.0, Kernel 2.4.18) top: tcgetattr() failed: Inappropriate ioctl for device (Meldung unter Suse 7.2, Kernel 2.4.19)
ab, wenn es als cronjob gestartet wurde? z.B.:
/etc/crontab: * * * * * root /usr/bin/top -n 1 >> /var/log/test 2>&1
Ich kann /usr/bin/top -n 1 >> /var/log/test 2>&1 von einem xterm starten, ob direkt am Prompt oder in einem Skript und es funktioniert, warum nicht als cronjob?
top erwartet ein Terminal, an das es seine Ausgaben schicken kann. Wenn Du top in einem xterm oder sonstigem Terminal-Programm startest, kann top die Einstellungen des TTY auslesen, das die Darstellung Deines xterm übernommen hat (also Dein Bildschirm) - auch wenn Du die Ausgaben umleitest. cron besitzt sowas nicht - logo, was soll da auch das Terminal sein? siehe auch: man tcgetattr Wenn Du, wie ich vermute, eine Überwachung des Systems vornehmen willst, dann solltest Du Kommandozeilenprogramme nutzen. top steuert das Terminal über Steuersequenzen (z. B. um ein Scrollen beim Neumalen des Bildschirminhalts zu verhindern), ist also für sowas nicht so richtig geeignet. Als Anregung: ps pstree swapon ipcs /proc ... Man muss natürlich noch per sort, sed, grep, awk ... ein wenig Hand anlegen. Jan
On Fri, Apr 04, 2003 at 01:22:49AM +0200, Jan Trippler wrote:
Wenn Du, wie ich vermute, eine Überwachung des Systems vornehmen willst, dann solltest Du Kommandozeilenprogramme nutzen. top steuert das Terminal über Steuersequenzen (z. B. um ein Scrollen beim Neumalen des Bildschirminhalts zu verhindern), ist also für sowas nicht so richtig geeignet.
Man kann natürlich, wenn man partout auf top besteht, auch top -bn 0 nehmen, dann lässt sich die Ausgabe auch in eine Datei umleiten. Hannes -- Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt. (Albert Einstein)
* Jan Trippler schrieb:
On Fre, 04 Apr 2003 at 00:31 (+0200), Ekkard Gerlach wrote:
warum bricht bei der Verwendung von /usr/bin/top in einem Skript dieses mit dem Fehler
top: tcgetattr() failed: Invalid argument (Meldung unter suse 8.0, Kernel 2.4.18) top: tcgetattr() failed: Inappropriate ioctl for device (Meldung unter Suse 7.2, Kernel 2.4.19)
ab, wenn es als cronjob gestartet wurde? z.B.:
/etc/crontab: * * * * * root /usr/bin/top -n 1 >> /var/log/test 2>&1
Ich kann /usr/bin/top -n 1 >> /var/log/test 2>&1 von einem xterm starten, ob direkt am Prompt oder in einem Skript und es funktioniert, warum nicht als cronjob?
top erwartet ein Terminal, an das es seine Ausgaben schicken kann. Wenn Du top in einem xterm oder sonstigem Terminal-Programm startest, kann top die Einstellungen des TTY auslesen, das die Darstellung Deines xterm übernommen hat (also Dein Bildschirm) - auch wenn Du die Ausgaben umleitest. cron besitzt sowas nicht - logo, was soll da auch das Terminal sein?
ps pstree swapon ipcs /proc Ich brauche dringend die ersten 3 Prozesse, die derzeit
kann ich das Terminal nicht irgendwie vorgaukeln? Wenn ich /usr/bin/top -n 1 >> /var/log/test 2>&1 aufrufe, dann wird ja schließlich *NICHTS* mehr auf dem Terminal ausgegeben! Also wird das Terminal ja gar nicht gebraucht. linux belasten. Bestimmte müssen eben abgeschossen werden. Wie könnte ich ohne top und ohne viele Klimmzüge zu den Prozess-ID's kommen? Als Würgaround kann ich mein Skript über die inittab auf z.B. Konsole 5 automatisch starten. Dann hat top sein Terminal. Aber das will ich eigentlich nicht. thx Ekkard
Hi Am Freitag, 4. April 2003 12:27 schrieb Ekkard Gerlach:
Ich brauche dringend die ersten 3 Prozesse, die derzeit linux belasten. Bestimmte müssen eben abgeschossen werden.
Wie könnte ich ohne top und ohne viele Klimmzüge zu den Prozess-ID's kommen? Mit ps. Ehrlich gesagt halte ich top für den Klimmzug und ps für die normale Methode. Top ist eher fürs interaktive Arbeiten gedacht. "ps u" (gibt sicher auch passendere Optionen) gibt die Prozessdaten user-oriented aus. In der dritten Spalte steht dann %CPU. Die %CPU vom Task "evil" bekommst du z.B. mit.
Ist in den meisten Fällen keine gute Idee. Besser ist es bei der Ursache für das entstehen dieser Prozesse anzusetzen. ps u |grep evil |grep -v grep |awk '{ print $3 }' Hier muss man noch aufpassen ob der Suchstring evil auch wirklich eindeutig die richtige Zeile rauspickt. Das grep -v grep filtert alle Zeilen mit "grep" aus der ps-Ausgabe raus.
Als Würgaround kann ich mein Skript über die inittab auf z.B. Konsole 5 automatisch starten. Das wäre nun wirklich ein Würgaround.
mfg Axel
Hallo, On Fri, 04 Apr 2003, Axel Heinrici wrote:
Am Freitag, 4. April 2003 12:27 schrieb Ekkard Gerlach: Die %CPU vom Task "evil" bekommst du z.B. mit. ps u |grep evil |grep -v grep |awk '{ print $3 }'
*oerks* Auch awk kann 'greppen': ps u | awk '/evil/{print $3;}' Da wir aber die Namen der Prozesse nicht kennen und obendrein die 3 "CPU-intensivsten" Prozesse wollen: ps au | sort -rn +2 | head -3 | awk '{print $2;}' liefert die PIDs der 3 Prozesse, die grad am meistene CPU brauchen. Das ganze kann man dann via '| xargs kill' weiterverfuettern... Aber das ganze ist "schlecht", wie nebenan gesagt, man sollte nicht die Symptome unterdruecken, sondern die Ursache "behandeln"... -dnh -- Wußten Sie schon, daß eine Holzhammernarkose total ueberfluessig ist, weil ein Holzhammer gar nichts spuert, wenn man mit ihm zuschlaegt...?
On Fri, Apr 04, 2003 at 05:01:21PM +0200, David Haller wrote:
Da wir aber die Namen der Prozesse nicht kennen und obendrein die 3 "CPU-intensivsten" Prozesse wollen:
ps au | sort -rn +2 | head -3 | awk '{print $2;}'
awk kann natürlich auch head'en :-) ps au | sort -rn +2 | awk 'NR < 4 { print $2 }' Kristian
Hallo, On Sat, 05 Apr 2003, Kristian Koehntopp wrote:
On Fri, Apr 04, 2003 at 05:01:21PM +0200, David Haller wrote:
Da wir aber die Namen der Prozesse nicht kennen und obendrein die 3 "CPU-intensivsten" Prozesse wollen:
ps au | sort -rn +2 | head -3 | awk '{print $2;}'
awk kann natürlich auch head'en :-)
Stimmt. *schaem*
ps au | sort -rn +2 | awk 'NR < 4 { print $2 }'
ps au | sort -rn +2 | awk 'NR <= 3 { print $2; }' *g* -dnh -- Und wer wird sich schon freiwillig der gefaehrlichen Strahlung einer offen brennenden Kernfusion aussetzen wollen. Da wartet man lieber, bis man durch ein paar Tausend Kilometer solide Abschirmung zumindest vor dem Schlimmsten geschuetzt ist. -- Alexander Schreiber
* On Sat, 05 Apr 2003 at 13:50 +0200, David Haller wrote:
On Fri, Apr 04, 2003 at 05:01:21PM +0200, David Haller wrote: [...] awk kann natürlich auch head'en :-) [...]
On Sat, 05 Apr 2003, Kristian Koehntopp wrote: ps au | sort -rn +2 | awk 'NR <= 3 { print $2; }'
Und das sort kriegst Du nicht mehr weiter? Ich bin enttäuscht *eg* -- Adalbert GPG welcome, request public key: mailto:adalbert+key@lopez.at
Hallo, On Sat, 05 Apr 2003, Adalbert Michelic wrote:
* On Sat, 05 Apr 2003 at 13:50 +0200, David Haller wrote:
On Fri, Apr 04, 2003 at 05:01:21PM +0200, David Haller wrote: [...] awk kann natürlich auch head'en :-) [...]
On Sat, 05 Apr 2003, Kristian Koehntopp wrote: ps au | sort -rn +2 | awk 'NR <= 3 { print $2; }'
Und das sort kriegst Du nicht mehr weiter? Ich bin enttäuscht *eg*
Oehm, noe. -dnh --
Trolle sind die Ratten des Usernetzes. Weil sie alles fressen und die Krankheit der Dummheit verbreiten. Dich siggt hier keiner mehr. [Hilko Bengen zu Woko° in dag°]
Danke Hannes, so geht's :
top -bn 0
* Axel Heinrici schrieb:
Am Freitag, 4. April 2003 12:27 schrieb Ekkard Gerlach:
Ich brauche dringend die ersten 3 Prozesse, die derzeit linux belasten. Bestimmte müssen eben abgeschossen werden.
Ist in den meisten Fällen keine gute Idee. Besser ist es bei der Ursache für das entstehen dieser Prozesse anzusetzen.
Die Vorsätze habe ich manchmal auch. Aber Suse 8.0 (auf die ich leider angewiesen bin) hat die Eigenschaft, daß bei abgerissenen telnet- Verbindungen (telnet muß leider auch sein, Altgeräte!) sich wartende Skripten zu Prozessorfressern verwandeln und den Prozessor zu 99% auslasten (s.u.). Das load average steigt auf fast 2,0. LÖsung? In dieser Liste habe ich schon nachgefragt, aber wer weiß schon noch was zu telnet. Ein Suse-Mitarbeiter hat sich erbarmt und gemeint es sein irgendetwas mit dem login verbessert worden , ich solle mal YOU laufen lassen. Auf meine Nachfrage wußte der Herr auch nicht welches Päckchen denn nu das entscheidende Update-Päckchen sei und schon gar nichts Näheres zu dem Problem selber. M$-Manier: installiern Sie neu, Installieren Sie die Patches, keine Angabe zum Problem selber. YOU ist bei Suse die größte Katastrophe überhaupt, 2 Tage hat sie mich gekostet, Fehler über Fehler. Hätte ich bloß die Päckchen gleich per rsync heruntergeladen und dann per Hand/ Skript eingespielt! Geändert hat sich nach YOU natürlich nichts. Leichen sehe ich nur unter top und schieße und ihre 2 Vorgänger bis vor Prozess 1 (init) ab, wenn das load average über 0,60 ist. Das hat sich bewährt. Aber vielleicht weiß jemand von Euch, warum sich zumindest unter 8.0 nicht Ordnungsgemäß beendete telnet-Verb. zu Rhinozerossen verwandeln und den PC lahmlegen.
Wie könnte ich ohne top und ohne viele Klimmzüge zu den Prozess-ID's kommen? Mit ps. Ehrlich gesagt halte ich top für den Klimmzug und ps für die normale Methode. Top ist eher fürs interaktive Arbeiten gedacht. "ps u" (gibt sicher auch passendere Optionen) gibt die Prozessdaten user-oriented aus. In der dritten Spalte steht dann %CPU.
Danke. Nutzt aber nichts. Habe das da z.B: habe ich laufen: top: PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 1049 sprz2 0 0 1964 1964 992 R 49.1 2.0 4:23 doc 1913 david 0 0 788 788 556 R 49.1 0.8 118:09 doctext User sprz2 und david gibt es. Nur wenn ich nach User sprz2/david wechsele, wird mit ps u dieser Prozess *NICHT* angezeigt. Habe bislang mit ps keine Anzeige aller Prozesse gefunden, die auch diesen versteckten Prozess findet. Nur top kann es! Weiß jemand wie ich mit ps *ALL* prozesse anzeigen lassen kann, aber mit durchschnittlicher CDU-Auslstung? man ps habe ich durchgesehen, vergebens. thx Ekkard
* Ekkard Gerlach schrieb am 04.Apr.2003:
Danke. Nutzt aber nichts. Habe das da z.B: habe ich laufen:
top: PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 1049 sprz2 0 0 1964 1964 992 R 49.1 2.0 4:23 doc 1913 david 0 0 788 788 556 R 49.1 0.8 118:09 doctext
User sprz2 und david gibt es. Nur wenn ich nach User sprz2/david wechsele, wird mit ps u dieser Prozess *NICHT* angezeigt. Habe bislang mit ps keine Anzeige aller Prozesse gefunden, die auch diesen versteckten Prozess findet. Nur top kann es! Weiß jemand wie ich mit ps *ALL* prozesse anzeigen lassen kann,
ps -e
aber mit durchschnittlicher CDU-Auslstung? man ps habe ich durchgesehen, vergebens.
Welche Prozesse angezeigt werden ist unabhängig von dem was von einem Prozess gezeigt werden. Probier mal ps -efl Bernd -- ROTFL = Rolling On The Floor, Laughing = Auf dem Boden wälzen, lachend. SCNR = Sorry, Could Not Resist = Sorry, Ich konte nicht widerstehen. AFAIK = As Far As I Know = So weit ich weis|BTW = By The Way = Nebenbei bemerkt IMHO = In My Humble Opinion = meiner bescheidenen Meinung nach |Zufallssig. 9
* Axel Heinrici schrieb am 04.Apr.2003:
ps u |grep evil |grep -v grep |awk '{ print $3 }'
mit ps u | grep [e]vil | awk '{ print $3 }' spart man sich ein grep und hat den gleichen Effekt. Bernd -- Was ist quoten? Quoten ist das Zitieren aus einer mail, der man antwortet. Und wie macht man es richtig? Zitate werden mit "> " gekennzeichnet. Nicht mehr als nötig zitieren. Vor den Abschnitten das Zitat, auf das man sich bezieht, mit einer Zeile Abstand oben und unten. |Zufallssignatur 12
Hallo, On Fri, 04 Apr 2003, Bernd Brodesser wrote:
* Axel Heinrici schrieb am 04.Apr.2003:
ps u |grep evil |grep -v grep |awk '{ print $3 }'
mit ps u | grep [e]vil | awk '{ print $3 }'
spart man sich ein grep und hat den gleichen Effekt.
Auch das verbleibende grep ist ueberfluessig. man awk. -dn'*scnr*'h -- No lusers were harmed in the creation of this usenet article. AND I WANT TO KNOW WHY NOT! -- glmar04 at twirl.mcc.ac.uk in asr
Zitat von Ekkard Gerlach
Ich brauche dringend die ersten 3 Prozesse, die derzeit linux belasten. Bestimmte müssen eben abgeschossen werden. Wie könnte ich ohne top und ohne viele Klimmzüge zu den Prozess-ID's kommen?
mit etwas RTFM: man bash man awk man ps man grep man sort man head Irgendwas in Richtung ps awux|sort -n|head -3|awk '{print $2;}' müßte da zu machen sein. -- Erhard Schwenk Kulturskandal: Stuttgart will einziges deutsches Pantomimetheater schließen. Makal-City-Theater vor dem Aus: http://mct.k-itx.net/ ------------------------------------------------- This mail sent through FTO WebMail
participants (9)
-
Adalbert Michelic
-
Axel Heinrici
-
B.Brodesser@t-online.de
-
David Haller
-
Ekkard Gerlach
-
Erhard Schwenk
-
Jan.Trippler@t-online.de
-
Johannes Studt
-
Kristian Koehntopp