find, grep problem

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von sniffer, 23.08.2006.

  1. #1 sniffer, 23.08.2006
    sniffer

    sniffer Jungspund

    Dabei seit:
    16.05.2006
    Beiträge:
    17
    Zustimmungen:
    0
    hallo shell guru´s

    ich hab 2 idente server mit der gleichen sles version 9.3.
    find in der version 4.1.7
    grep in der version 2.5.1

    server1:/tmp/test # touch 0
    server1:/tmp/test # touch 1
    server1:/tmp/test # touch 2
    server1:/tmp/test # touch 3
    server1:/tmp/test # touch 4
    server1:/tmp/test # find /tmp/test | grep /[0-9]
    /tmp/test/0
    /tmp/test/1
    /tmp/test/2
    /tmp/test/3
    /tmp/test/4​

    server2:/tmp/test # touch 0
    server2:/tmp/test # touch 1
    server2:/tmp/test # touch 2
    server2:/tmp/test # touch 3
    server2:/tmp/test # touch 4
    server2:/tmp/test # find /tmp/test | grep /[0-9]
    /tmp/test/1​

    beim server1 bekomm ich den richtigen output zurück - bei server2 nicht! interessant, nicht?

    kann sich da jemand von euch erklären?

    gruß
    roland
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 lordlamer, 23.08.2006
    lordlamer

    lordlamer Haudegen

    Dabei seit:
    15.05.2003
    Beiträge:
    703
    Zustimmungen:
    0
    Ort:
    hamburg
    hi

    1. es gibt kein sles 9.3. nur ein suse 9.3 oder ein suse linux enterprise server 9.

    2. die ausgabe von ls -l wäre noch hilfreich ;)

    mfg frank
     
  4. #3 sniffer, 24.08.2006
    sniffer

    sniffer Jungspund

    Dabei seit:
    16.05.2006
    Beiträge:
    17
    Zustimmungen:
    0
    morgen

    version: SLES-9-x86_64-SP3 auf beiden servern.

    server1:/tmp/test # ls -l
    total 3
    drwxr-xr-x 2 root root 168 Aug 24 06:17 .
    drwxrwxrwt 31 root root 2856 Aug 24 06:23 ..
    -rw-r--r-- 1 root root 0 Aug 24 06:17 0
    -rw-r--r-- 1 root root 0 Aug 24 06:17 1
    -rw-r--r-- 1 root root 0 Aug 24 06:17 2
    -rw-r--r-- 1 root root 0 Aug 24 06:17 3
    -rw-r--r-- 1 root root 0 Aug 24 06:17 4

    server2:/tmp/test # ls -l
    total 5
    drwxr-xr-x 2 root root 168 Aug 24 06:17 .
    drwxrwxrwt 59 root root 5296 Aug 24 06:22 ..
    -rw-r--r-- 1 root root 0 Aug 24 06:17 0
    -rw-r--r-- 1 root root 0 Aug 24 06:17 1
    -rw-r--r-- 1 root root 0 Aug 24 06:17 2
    -rw-r--r-- 1 root root 0 Aug 24 06:17 3
    -rw-r--r-- 1 root root 0 Aug 24 06:17 4

    problem:
    server1:/tmp/test # find /tmp/test | grep /[0-9]
    /tmp/test/0
    /tmp/test/1
    /tmp/test/2
    /tmp/test/3
    /tmp/test/4

    server2:/tmp/test # find /tmp/test | grep /[0-9]
    /tmp/test/1

    gruß
    roland
     
  5. #4 phrenicus, 24.08.2006
    phrenicus

    phrenicus Routinier

    Dabei seit:
    24.05.2006
    Beiträge:
    253
    Zustimmungen:
    0
    Ort:
    Tübingen, Germany
    Hallo,

    da ist aber sonst noch irgendwas anderes in /tmp/test, oder? Und bei beiden Servern was anderes. Bei mir zeigt ein "ls -l" ein total von 0 an.
    Dein Problem hat vermutlich damit nichts zu tun, seltsam ist das auf jeden Fall.
    /tmp/test ist auch ein normales Verzeichnis auf beiden Servern? Kein symbolischer Link irgendwohin?

    Gruß
     
  6. #5 sniffer, 24.08.2006
    sniffer

    sniffer Jungspund

    Dabei seit:
    16.05.2006
    Beiträge:
    17
    Zustimmungen:
    0
    hi phrenicus

    nein da ist sonst nichts in dem verzeichnis /tmp/test und die 5 files hab ich nur zum testen angelegt - sind auf beiden servern gleich. ist auch kein link oder so. ich kann das auch in jedem verzeichnis machen - funktioniert nirgends.

    leg in ein verzeichnis 5 files mit "touch 0-4" an und versuch dann den find befehl den ich hier geschrieben habe. du solltest alle 5 files zurück kriegen was auch normal wäre. bei mir funktioniert´s aber bei 3 von ca. 80 servern nicht :think:

    gruß
     
  7. hmhweb

    hmhweb Mitglied

    Dabei seit:
    29.11.2004
    Beiträge:
    46
    Zustimmungen:
    0
    Hallo,

    wirklich seltsam. Ich würde an der Stelle mal beginnen, binaries (ls,bash,find, grep usw.) nach Länge und MD5 mit den funktionierenden zu vergleichen und die Installation der Pakete überprüfen. Patchlevel sind gleich ?

    Gruß
    hmhweb
     
  8. #7 sniffer, 24.08.2006
    sniffer

    sniffer Jungspund

    Dabei seit:
    16.05.2006
    Beiträge:
    17
    Zustimmungen:
    0
    hallo

    patchlevel sind die gleichen. alle server auf SLES-9-x86_64-SP3. auch die checksummen stimmen überein (siehe unten). mittlerweile hab ich mal nen call bei novell aufgemacht. mal abwarten was die dazu meinen.

    server1:~ # cksum /usr/bin/grep
    2539055375 143278 /usr/bin/grep
    server1:~ # cksum /usr/bin/find
    770499147 62456 /usr/bin/find
    server1:~ # cksum /bin/bash
    2367083551 534104 /bin/bash
    server1:~ # cksum /bin/ls
    1406914432 102195 /bin/ls

    server2:~ # cksum /usr/bin/grep
    2539055375 143278 /usr/bin/grep
    server2:~ # cksum /usr/bin/find
    770499147 62456 /usr/bin/find
    server2:~ # cksum /bin/bash
    2367083551 534104 /bin/bash
    server2:~ # cksum /bin/ls
    1406914432 102195 /bin/ls

    server1:~ # md5sum /usr/bin/grep
    ee61aa192db3ea3e8d4ad42329cbac10 /usr/bin/grep
    server1:~ # md5sum /usr/bin/find
    f899dff72f7a7b6678806bc2421c0577 /usr/bin/find
    server1:~ # md5sum /bin/bash
    6aa070ffac566f7bca109cf408dcb794 /bin/bash
    server1:~ # md5sum /bin/ls
    c0a0eb919ba65e9d21cee32f3b0b4c25 /bin/ls

    server2:~ # md5sum /usr/bin/grep
    ee61aa192db3ea3e8d4ad42329cbac10 /usr/bin/grep
    server2:~ # md5sum /usr/bin/find
    f899dff72f7a7b6678806bc2421c0577 /usr/bin/find
    server2:~ # md5sum /bin/bash
    6aa070ffac566f7bca109cf408dcb794 /bin/bash
    server2:~ # md5sum /bin/ls
    c0a0eb919ba65e9d21cee32f3b0b4c25 /bin/ls

    gruß
    roland
     
  9. hmhweb

    hmhweb Mitglied

    Dabei seit:
    29.11.2004
    Beiträge:
    46
    Zustimmungen:
    0
    Hallo nochmal,

    was ergibt denn
    Code:
    find /tmp/test -name "[0-9]"
    
    oder
    Code:
    find /tmp/test -name "[0|1|2|3|4]"
    find /tmp/test
    
    Ich würde testhalber mal einen von den dreien komplett neu installieren.
    Ansonsten ebenso ratlos

    hmhweb
     
  10. #9 phrenicus, 24.08.2006
    Zuletzt bearbeitet: 24.08.2006
    phrenicus

    phrenicus Routinier

    Dabei seit:
    24.05.2006
    Beiträge:
    253
    Zustimmungen:
    0
    Ort:
    Tübingen, Germany
    Grummel,

    Code:
    server1:~ strace find /tmp/test | grep /[0-9] 2>/tmp/trace.1
    server2:~ strace find /tmp/test | grep /[0-9] 2>/tmp/trace.2
    
    Dann

    Code:
    diff trace.1 trace.2
    EDIT: Sorry, Code funktioniert nicht... Muss nachschauen. Dauert kurz

    *noch ein Grummeln*

    Der Reihe nach:

    Code:
    server1:~ strace find /tmp/test 2>/tmp/trace1 | tee /tmp/tee.1
    server2:~ strace find /tmp/test 2>/tmp/trace2 | tee /tmp/tee.2
    
    Dann siehst Du zumindest mal, was find für einen Output generiert und ob es am Output von find liegt.
    Wie ich das sehe, gibt es drei Möglichkeiten:
    1. find generiert falschen Output (unwahrscheinlich)
    2. grep generiert falschen Output (unwahrscheinlich)
    3. grep erhält falschen Input (bash hat einen Fehler und die Pipe funktioniert nicht richtig)

    md5sum /bin/bash

    Gruß
     
  11. #10 Schlaubi_fi.de, 24.08.2006
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    Hallo,

    ich würde das Spielchen auch mal bissi weiter treiben...und folgendes kontrollieren:

    less /var/log/messages
    last
    who
    history | less

    Nur um mal ein Gefühl dafür zu bekommen, ob sich da jemand zu schaffen gemacht hat... (md5sum war ein Anfang)
     
  12. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Wenn jemand die Möglichkeit hat, executables in /bin, /usr/bin zu modifiziern, wird er auch mit ziemlicher Sicherheit seine verräterischen Spuren in history, ... löschen (können).

    Gruss, Xanti
     
  13. #12 sniffer, 01.09.2006
    Zuletzt bearbeitet: 01.09.2006
    sniffer

    sniffer Jungspund

    Dabei seit:
    16.05.2006
    Beiträge:
    17
    Zustimmungen:
    0
    hier die lösung! (das glaubt mir keiner).

    hatte ein file im root verzeichnis das "1" hieß und somit funktioniert der grep nicht mehr richtig.
    versucht es selber einmal. würde mich interessieren ob bei euch das gleiche verhalten auftritt.

    legt in / ein file mit touch 1 an und im verzeichnis /tmp ein paar mit touch 1,2,3,4,......

    beispiel:
    server1:/ # touch 1
    server1:/ # cd /tmp
    server1:/tmp # touch 1
    server1:/tmp # touch 2
    server1:/tmp # touch 3
    server1:/tmp # touch 4
    server1:/tmp # cd /
    server1:/ # find /tmp | grep /[0-9]
    /tmp/1

    server1:/ # rm 1
    server1:/ # find /tmp | grep /[0-9]
    /tmp/1
    /tmp/2
    /tmp/3
    /tmp/4


    es funktioniert also nicht wenn in / ein file von 0 bis 9 liegt. alles darüber ist egal. datt n fetter bug!!!!!

    toll gell?!?!?!

    gruß
    roland
     
  14. #13 supersucker, 01.09.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    rofl,

    habs grad bei mir (gentoo) ausprobiert und das klappt wirklich (nicht).....:D

    Wer schreibt den bug-report?........:)
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 Wolfgang, 01.09.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Generell sollte man die Pattern in Anführungszeichen setzen, dann erspart man sich unerwartete Ergebnisse!

    Gruß Wolfgang
     
  17. #15 Xanti, 01.09.2006
    Zuletzt bearbeitet: 01.09.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Das ist übrigens kein Bug, sondern pathname expansion der Shell. Die Shell interpretiert den Befehl find /tmp | grep /[0-9] und expandiert /[0-9], so es möglich ist. Da die 1 unter root existiert, führt die Shell find /tmp | grep /1 aus, mit entsprechendem richtigen Ergebnis. Wenn allerdings kein /<beliebige Zahl> existiert, erfolgt keine Expansion und die Shell übergibt den regulären Ausdruck /[0-9] an grep.

    Um die pathname expansion zu verhindern: einfach den Pattern quoten, so wie Wolfgang schon geschrieben hat.

    Gruss, Xanti
     
Thema:

find, grep problem

Die Seite wird geladen...

find, grep problem - Ähnliche Themen

  1. Problem mit "Find" und "grep"

    Problem mit "Find" und "grep": Ich will mir alle Dateien auflisten lassen ausser denjenigen die ' /proc/' oder ' /sys/' enthalten (Beachte das führende Leerzeichen). Ich...
  2. Before und After bei find + grep

    Before und After bei find + grep: Hallo NG! Wie kann ich mit find+grep zusätzlich zu der Zeile, die den Suchbegriff enthält, die Zeilen davor bzw. danach anzeigen lassen....
  3. Wo befindet sich der Autostartordner?

    Wo befindet sich der Autostartordner?: Hallo ich habe CentOS 7.2.15.11 und Desktopumgebung mate , wo befindet sich der Autostartordner?
  4. Fragen zu find

    Fragen zu find: Hallo an alle, Ich bin ziemlich neu in der Linux Welt und habe paar frage Ich soll alle Datein im system finden die vor weniger als drei Tagen...
  5. Rechner im lokalen Netzwerk finden

    Rechner im lokalen Netzwerk finden: Hallo, in meiner Firma habe ich zwei Linux-Rechner, die ganz modern mit dem Internet verbunden sind. Jetzt möchte ich von dem einem Rechner...