more macht komische Sachen bei Aufruf per cron
Hallo Liste,
um per Cron eine Datei um die ersten beiden Zeilen zu kürzen, verwende ich
more +3 datei > datei2 && mv datei2 datei
Wenn ich das per Hand tue, geht das auch wie erwartet. Wenn cron das
ausführt, steht in "datei" nach dem Befehl:
<snip>
;;;;;;;;;;;;;;;
datei2
;;;;;;;;;;;;;;;
Dominik Klein wrote:
Hallo Liste,
um per Cron eine Datei um die ersten beiden Zeilen zu kürzen, verwende ich more +3 datei > datei2 && mv datei2 datei
Wenn ich das per Hand tue, geht das auch wie erwartet. Wenn cron das ausführt, steht in "datei" nach dem Befehl:
<snip> ;;;;;;;;;;;;;;; datei2 ;;;;;;;;;;;;;;;
<snip> Wie kriege ich more im Cronaufruf dazu, so zu arbeiten, wie ich es auf der Shell vorher ausprobiere?
Überhaupt nicht. Immerhin ist more ein interaktives Teil, aber ...
Falls das nicht geht (was ich mir nicht vorstellen kann) : wie kann man sonst die ersten beiden Zeilen einer Datei entfernen?
... versuchs doch mit "tail" anstatt mit "more" (gleiche Syntax). :-) Martin
Hallo Martin, Martin Deppe schrieb:
Dominik Klein wrote:
Überhaupt nicht. Immerhin ist more ein interaktives Teil, aber ...
... versuchs doch mit "tail" anstatt mit "more" (gleiche Syntax). Nimm lieber "head". Er wollte ja auch die ersten zwei Zeilen kürzen.
Viele Grüße Michael -- Mit freundlichen Grüßen Michael Post ************************************************************** - Software | Internet | Hosting - PureMatic, Gotenstraße 160, 53175 Bonn http://www.purematic.de | Tel: +49 (0)228-4295904
Hallo, dickes Sorry. Sollte den Inhalt auch korrekt verstehen ;-) Michael Post schrieb:
Hallo Martin,
Martin Deppe schrieb:
Nimm lieber "head". Er wollte ja auch die ersten zwei Zeilen kürzen.
Nimm doch "tail". Martin hatte recht. Bei "head" erhälst Du alle Zeilen ab dem Anfang.
Viele Grüße
Michael
Ich würde mit Hilfe von 'wc -l' mir die Anzahl Zeilen ausgeben lassen und dann per grep die Zahl herausfiltern. Diese kannst Du dann "tail -n" übergeben. -- Mit freundlichen Grüßen Michael Post ************************************************************** - Software | Internet | Hosting - PureMatic, Gotenstraße 160, 53175 Bonn http://www.purematic.de | Tel: +49 (0)228-4295904
Ich würde mit Hilfe von 'wc -l' mir die Anzahl Zeilen ausgeben lassen und dann per grep die Zahl herausfiltern. Diese kannst Du dann "tail -n" übergeben.
Danke. So geht's jetzt: ZEILEN=`wc -l tempfile2| sed "s/^ *//g" |cut -d\ -f1` ZEILEN=$(($ZEILEN-2)) tail -n $ZEILEN datei > datei2 && mv datei2 datei Das sed-Kommando habe ich mitgenommen, weil ältere Versionen von wc scheinbar Leerzeichen an den Anfang des Outputs packen und cut somit etwas überfordert war.
Dominik Klein wrote:
Ich würde mit Hilfe von 'wc -l' mir die Anzahl Zeilen ausgeben lassen und dann per grep die Zahl herausfiltern. Diese kannst Du dann "tail -n" übergeben.
Danke. So geht's jetzt:
ZEILEN=`wc -l tempfile2| sed "s/^ *//g" |cut -d\ -f1` ZEILEN=$(($ZEILEN-2)) tail -n $ZEILEN datei > datei2 && mv datei2 datei
Das sed-Kommando habe ich mitgenommen, weil ältere Versionen von wc scheinbar Leerzeichen an den Anfang des Outputs packen und cut somit etwas überfordert war.
Tja, wozu nutzt Du denn "wc" und "sed" überhaupt, wenn Du nur zwei Zeilen am Anfang entfernen willst? Folgendes tut es auch: tail +3 datei Eine andere Alternative wäre auch noch: echo "1G2ddZZ" | vi datei >/dev/null 2>&1 "1G" positioniert (vorsichtshalber) an den Anfang der Datei, "2dd" löscht die ersten beiden Zeilen und "ZZ" speichert das Ergebnis dann in der selben Datei. Aber wahrscheinlich kennst Du das prinzipiell ja schon ;-) Cheers Martin
Tja, wozu nutzt Du denn "wc" und "sed" überhaupt, wenn Du nur zwei Zeilen am Anfang entfernen willst?
Folgendes tut es auch: tail +3 datei
Manchmal sieht man eben den Wald vor lauter Bäumen nicht.
Eine andere Alternative wäre auch noch: echo "1G2ddZZ" | vi datei >/dev/null 2>&1
"1G" positioniert (vorsichtshalber) an den Anfang der Datei, "2dd" löscht die ersten beiden Zeilen und "ZZ" speichert das Ergebnis dann in der selben Datei. Aber wahrscheinlich kennst Du das prinzipiell ja schon ;-)
Die vi Befehle kannte ich natürlich. In der Form benutzt jedoch noch nicht (via Pipe).
Suse 9.3 läuft seit einiger Zeit OK, nun gibt es Probleme beim Anschluß eines USB-Sticks (gleicher Effekt bei mehrere Sticks!): Maus und Tastatur sind tot, es ist nichts zu machen, raus komme ich nur mit Strom abschalten. Im abgesicherten Modus das Gleiche, keine Reaktion auf Tastatur. Im Startproto habe ich nichts verdächtiges gesehen, kann es aber gern herausgeben. Kennt jemand den Effekt und die Lösung dazu oder wie man den Fehler eingrenzen kann?? Danke Helmut --------------------------------- Telefonieren Sie ohne weitere Kosten mit Ihren Freunden von PC zu PC! Jetzt Yahoo! Messenger installieren!
Helmut Weiser wrote:
Suse 9.3 läuft seit einiger Zeit OK, nun gibt es Probleme beim Anschluß eines USB-Sticks (gleicher Effekt bei mehrere Sticks!): Maus und Tastatur sind tot, es ist nichts zu machen, raus komme ich nur mit Strom abschalten. Im abgesicherten Modus das Gleiche, keine Reaktion auf Tastatur.
Du schreibst, dass Dein System seit einiger Zeit ohne Probleme lief. Heisst das, der Fehler mit dem USB-Stick war bisher nicht da und ist quasi von einem Tag auf den anderen auf einmal aufgetaucht (oder probierst Du nun einfach zum ersten mal einen USB-Stick aus)? Falls das Problem von einem Tag auf den anderen auftauchte: was hat sich am System in dieser Zeit (zwischen dem Zustand "funktioniert" und dem Zustand "funktioniert nicht mehr") veraendert? Falls die Antwort "nichts" ist (bitte genau nachdenken, ob "nichts" wirklich nichts ist, oder ob es nicht doch eine vielleicht auch unbedeutend erscheinende Aenderung gab), dann spricht evtl. einiges fuer Hardware/Filesystem-Probleme o.ae. Hast Du auch mal in die SDB geschaut, da gibt es auch einige Artikel zu USB...
Im Startproto habe ich nichts verdächtiges gesehen, kann es aber gern herausgeben.
Das Startprotokoll duerfte evtl. nicht so wichtig sein. Wird denn noch etwas nach /var/log/messages geschrieben, wenn das Problem auftritt? Auf alle Faelle solltest Du mal das Filesystem gruendlich ueberpruefen, da Du ja einen harten Reset machen musstest... Du kannst auch einfach mal ein Knoppix-System von CD/DVD booten und schauen, was dort passiert, wenn Du den USB-Stick einstoepselst. Cheers, Th.
Thomas Hertweck
Suse 9.3 läuft seit einiger Zeit OK, nun gibt es Probleme beim Anschluß eines USB-Sticks (gleicher Effekt bei mehrere Sticks!): Maus und Tastatur sind tot, es ist nichts zu machen, raus komme ich nur mit Strom abschalten. Im abgesicherten Modus das Gleiche, keine Reaktion auf Tastatur.
Du schreibst, dass Dein System seit einiger Zeit ohne Probleme lief. Heisst das, der Fehler mit dem USB-Stick war bisher nicht da und ist quasi von einem Tag auf den anderen auf einmal aufgetaucht (oder probierst Du nun einfach zum ersten mal einen USB-Stick aus)? Falls das Problem von einem Tag auf den anderen auftauchte: was hat sich am System in dieser Zeit (zwischen dem Zustand "funktioniert" und dem Zustand "funktioniert nicht mehr") veraendert? Falls die Antwort "nichts" ist (bitte genau nachdenken, ob "nichts" wirklich nichts ist, oder ob es nicht doch eine vielleicht auch unbedeutend erscheinende Aenderung gab), dann spricht evtl. einiges fuer Hardware/Filesystem-Probleme o.ae. Hast
Die USB-Sticks benutze ich schon eine ganze Weile, es ging gut, nur wie gesagt "ploetzlich" nicht mehr. Ich habe wohl mal ein YOU gemacht und die Ethernet-Karte neu konfiguriert (MTU auf 1360 gesetzt da sonst fragmentiert). Werde das Filesystem pruefen, habe gerade gelesen das ginge mit /forcecheck beim reboot. Danke fuer die Hinweise. Helmut
Du auch mal in die SDB geschaut, da gibt es auch einige Artikel zu USB...
Im Startproto habe ich nichts verdächtiges gesehen, kann es aber gern herausgeben.
Das Startprotokoll duerfte evtl. nicht so wichtig sein. Wird denn noch etwas nach /var/log/messages geschrieben, wenn das Problem auftritt? Auf alle Faelle solltest Du mal das Filesystem gruendlich ueberpruefen, da Du ja einen harten Reset machen musstest... Du kannst auch einfach mal ein Knoppix-System von CD/DVD booten und schauen, was dort passiert, wenn Du den USB-Stick einstoepselst. Cheers, Th. -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com --------------------------------- Telefonieren Sie ohne weitere Kosten mit Ihren Freunden von PC zu PC! Jetzt Yahoo! Messenger installieren!
Zu /var/log/messages:
selbst wenn ich im abgesicherten Modus starte (nur Textkonsole) bleibt das system sofort haengen, nichts geht mehr. Natuerlich wird dann beim Neustart ein Filesystemcheck durchgefuehrt da einiges vermurkst ist...Idee mit Knoppix ist gut, aber mit windows gwhts ja ;-).
Helmut
Thomas Hertweck
Suse 9.3 läuft seit einiger Zeit OK, nun gibt es Probleme beim Anschluß eines USB-Sticks (gleicher Effekt bei mehrere Sticks!): Maus und Tastatur sind tot, es ist nichts zu machen, raus komme ich nur mit Strom abschalten. Im abgesicherten Modus das Gleiche, keine Reaktion auf Tastatur.
Du schreibst, dass Dein System seit einiger Zeit ohne Probleme lief. Heisst das, der Fehler mit dem USB-Stick war bisher nicht da und ist quasi von einem Tag auf den anderen auf einmal aufgetaucht (oder probierst Du nun einfach zum ersten mal einen USB-Stick aus)? Falls das Problem von einem Tag auf den anderen auftauchte: was hat sich am System in dieser Zeit (zwischen dem Zustand "funktioniert" und dem Zustand "funktioniert nicht mehr") veraendert? Falls die Antwort "nichts" ist (bitte genau nachdenken, ob "nichts" wirklich nichts ist, oder ob es nicht doch eine vielleicht auch unbedeutend erscheinende Aenderung gab), dann spricht evtl. einiges fuer Hardware/Filesystem-Probleme o.ae. Hast Du auch mal in die SDB geschaut, da gibt es auch einige Artikel zu USB...
Im Startproto habe ich nichts verdächtiges gesehen, kann es aber gern herausgeben.
Das Startprotokoll duerfte evtl. nicht so wichtig sein. Wird denn noch etwas nach /var/log/messages geschrieben, wenn das Problem auftritt? Auf alle Faelle solltest Du mal das Filesystem gruendlich ueberpruefen, da Du ja einen harten Reset machen musstest... Du kannst auch einfach mal ein Knoppix-System von CD/DVD booten und schauen, was dort passiert, wenn Du den USB-Stick einstoepselst. Cheers, Th. -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com --------------------------------- Telefonieren Sie ohne weitere Kosten mit Ihren Freunden von PC zu PC! Jetzt Yahoo! Messenger installieren!
Hallo, Am Dienstag, 7. März 2006 11:33 schrieb Helmut Weiser:
selbst wenn ich im abgesicherten Modus starte (nur Textkonsole) bleibt das system sofort haengen, nichts geht mehr. Natuerlich wird dann beim
ich hatte bis vor kurzem ein ähnliches Problem auf einer 9.2 Kiste mit allen Patches und einem externen CD-Brenner. So dämlich es klingt, aber es hat geholfen, alle USB-Geräte, die dranhängen, an andere Ports zu stecken, also quasi einfach mal komplett durchtauschen. Danach hat es wieder 6 Wochen lang funktioniert, dann blieb er wieder hängen. Seitdem muss ich alle paar Wochen alle Geräte umstecken, dann gehts wieder. Wo da die Logik dahinter ist, ist mir allerdings schleierhaft. Auch /var/log/messages hat mir keine Anhaltspunkte geliefert. Michael -- Michael Herrmann
Dominik Klein wrote:
Tja, wozu nutzt Du denn "wc" und "sed" überhaupt, wenn Du nur zwei Zeilen am Anfang entfernen willst?
Folgendes tut es auch: tail +3 datei
Manchmal sieht man eben den Wald vor lauter Bäumen nicht.
Eine andere Alternative wäre auch noch: echo "1G2ddZZ" | vi datei >/dev/null 2>&1
"1G" positioniert (vorsichtshalber) an den Anfang der Datei, "2dd" löscht die ersten beiden Zeilen und "ZZ" speichert das Ergebnis dann in der selben Datei. Aber wahrscheinlich kennst Du das prinzipiell ja schon ;-)
Die vi Befehle kannte ich natürlich. In der Form benutzt jedoch noch nicht (via Pipe).
Na ja, Du kennst doch sicher den Spruch: "Man wird alt wie eine Kuh ..." ;-) Martin
Hallo, Am Mon, 06 Mar 2006, Martin Deppe schrieb:
Eine andere Alternative wäre auch noch: echo "1G2ddZZ" | vi datei >/dev/null 2>&1
"1G" positioniert (vorsichtshalber) an den Anfang der Datei, "2dd" löscht die ersten beiden Zeilen und "ZZ" speichert das Ergebnis dann in der selben Datei. Aber wahrscheinlich kennst Du das prinzipiell ja schon ;-)
Fuer sowas (nicht-interaktives) Editieren ist auch 'ed', der Urahn von sed, ex, vi u.a.m. sehr gut geeignet. Die Befehle (plus ein wq am Ende?) sollten identisch zu denen mit vim sein. -dnh --
Ach.Frisches Blut ist hier also nicht gern gesehen? Nur, wenn es von meiner Kettensaege tropft. [Erik Meltzer und Dieter Bruegmann in dag°]
David Haller wrote:
Hallo,
Am Mon, 06 Mar 2006, Martin Deppe schrieb:
Eine andere Alternative wäre auch noch: echo "1G2ddZZ" | vi datei >/dev/null 2>&1
"1G" positioniert (vorsichtshalber) an den Anfang der Datei, "2dd" löscht die ersten beiden Zeilen und "ZZ" speichert das Ergebnis dann in der selben Datei. Aber wahrscheinlich kennst Du das prinzipiell ja schon ;-)
Fuer sowas (nicht-interaktives) Editieren ist auch 'ed', der Urahn von sed, ex, vi u.a.m. sehr gut geeignet. Die Befehle (plus ein wq am Ende?) sollten identisch zu denen mit vim sein.
Stimmt, der ist mir nicht so geläufig, aber der ist in der Tat besser. Dann fällt nämlich auch die Geschichte mit dem Umleiten von Standardausgabe und -error weg, sofern einem die Fehlermeldungen von vim nicht sowieso egal sind, die man ansonsten nämlich bekommt ;-) Martin
Hallo, Am Mon, 06 Mar 2006, Dominik Klein schrieb:
Ich würde mit Hilfe von 'wc -l' mir die Anzahl Zeilen ausgeben lassen und dann per grep die Zahl herausfiltern. Diese kannst Du dann "tail -n" übergeben.
Danke. So geht's jetzt:
ZEILEN=`wc -l tempfile2| sed "s/^ *//g" |cut -d\ -f1` ZEILEN=$(($ZEILEN-2)) tail -n $ZEILEN datei > datei2 && mv datei2 datei
Das sed-Kommando habe ich mitgenommen, weil ältere Versionen von wc scheinbar Leerzeichen an den Anfang des Outputs packen und cut somit etwas überfordert war.
Falls man's so machen will geht z.B. auch sowas (besser): tail -n $(( `grep -c '^' datei` - 2 )) datei oder tail -n $(( `wc -l datei` - 2 )) datei Die shell interessieren die zusaetzlichen Leerzeichen nicht, wenn diese nicht gequoted oder (zu '\ ' escaped) sind. Fuer die shell sind $(( `wc -l datei | ...` - 2 )) $(( `wc -l datei` - 2 )) $(( 42 - 2 )) identisch (mal angenommen, dass die datei 42 Zeilen hat). -dnh -- "Tausche schwer verständliches Buch über Empfängnisverhütung gegen gebrauchten Kinderwagen..." [in de.soc.familie.kinder]
Hallo, Am Mon, 06 Mar 2006, Michael Post schrieb:
Michael Post schrieb:
Martin Deppe schrieb: Nimm lieber "head". Er wollte ja auch die ersten zwei Zeilen kürzen.
Nimm doch "tail". Martin hatte recht. Bei "head" erhälst Du alle Zeilen ab dem Anfang.
Ich würde mit Hilfe von 'wc -l' mir die Anzahl Zeilen ausgeben lassen und dann per grep die Zahl herausfiltern. Diese kannst Du dann "tail -n" übergeben.
'tail +n' sollte wie vorgeschlagen funktionieren und ist spezifiziert[1]. Das klappt evtl. nicht ueberall (auf kommerziellen Unices), bei mir mit nem recht aeltlichen $ tail --version tail (GNU textutils) 2.0.10 klappt das: seq 1 4 | tail +3 3 4 [1] http://www.opengroup.org/onlinepubs/007908799/xcu/tail.html -- Tiere sind nicht dumm. Manche stellen sich nur so an, um den dummen Menschen nicht die Schow zu stehlen. [WoKo in dag°]
participants (7)
-
David Haller
-
Dominik Klein
-
Helmut Weiser
-
Martin Deppe
-
Michael Herrmann
-
Michael Post
-
Thomas Hertweck