INodes: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem In…“) |
|||
| Zeile 229: | Zeile 229: | ||
xinux@zero:~$ ln -v /etc/katze . | xinux@zero:~$ ln -v /etc/katze . | ||
ln: Zugriff auf „/etc/katze“: No such file or directory | ln: Zugriff auf „/etc/katze“: No such file or directory | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
==Suchen von Dateien== | ==Suchen von Dateien== | ||
Version vom 4. August 2016, 09:41 Uhr
Inode (oder I-Node) wird im Deutschen am besten als Informationsknoten oder Indexeintrag bezeichnet. Er fasst alle Attribute einer Datei zusammen außer dem Inhalt und dem Namen der Datei.
Daten
| type | Der Typ der Datei wird als einzelner Buchstabe angezeigt. Der Typ einer Datei wird beim Anlegen der Datei festgelegt |
| Permissions | Die Zugriffsrechte der Datei werden in den 12 Bit sstrwxrwxrwx abgespeichert.Die Zugriffsrechte können mit dem Kommando chmod verändert werden. |
| link count | In UNIX kann eine Datei mehr als einen Namen haben. Der Link Count gibt die Anzahl der Namen einer Datei an. Er kann
mit dem Kommando ln erhöht und dem Kommando rm erniedrigt werden. |
| owner | Für den Dateieigentümer gelten die in der ersten rwx-Gruppe festgelegten Zugriffsrechte. Standardmäßig ist der
Eigentümer einer Datei derjenige Benutzer, der die Datei angelegt hat. |
| group | Für Benutzer, die in der gleichen Gruppe sind, der die Datei angehört, gelten die in der zweiten rwx-Gruppe festgelegten
Zugriffsrechte. In System V gehört eine Datei standardmäßig der Gruppe an, in der der anlegende Benutzer gerade ist. |
| size | Bei normalen Dateien und Verzeichnissen gibt diese Information die Länge der Datei in Byte an. |
| access time | Die Zugriffszeit gibt den Zeitpunkt des letzten Lesezugriffes auf eine Datei an. Aus Effizienzgründen wird die
Zugriffszeit an Verzeichnissen nicht gesetzt, wenn ein Verzeichnis durchsucht wird, obwohl man dies erwarten könnte. (ls -l --time=atime) stat zeigt alle Zeiten an. |
| modification time | Die Modifikationszeit gibt die Zeit des letzten Schreibzugriffes auf die Daten der Datei an. Intern speichert UNIX
die Zeit als Sekunden seit Beginn des Jahres 1970 und in GMT ab. Für die Ausgabe wird dies in ein besser lesbares Format in der lokalen Zeitzone umgewandelt. (ls -l) |
| change time | Die Veränderungszeit gibt das Datum der letzten Statusänderung der Datei an. Sie wird immer dann gesetzt, wenn die
Informationen über die Datei sich ändern (Datum der Erzeugung wird nicht gespeichert) (ls -lc) |
Dateiarten
| Zeichen | Typ | Zweck |
|---|---|---|
| - | file | normale Datei |
| d | directory | Verzeichnis |
| b | block device | Gerätedatei |
| c | character device | Gerätedatei |
| p | named pipe | Benannte Pipeline |
| s | socket | Netzwerkverbindung |
| l | link | Querverweis |
Normale Dateien
Unter einer normalen Datei versteht man die Ansammlung von Daten. Dies kann ein Text, Programm, Bild oder sonstiges sein. Beispiel
root@zero:~# ls -l text | cut -c 1 -
Verzeichnisse
Dateien werden in Verzeichnissen gespeichert, nur so ist eine Ordnung möglich.
root@zero:~# mkdir -v Ordner mkdir: Verzeichnis „Ordner“ angelegt root@zero:~# ls -ld Ordner | cut -c 1 d
Gerätedateien (Block und Char)
Gerätedateien ermöglichen Anwendungsprogrammen unter Benutzung des Kernels den Zugriff auf die Hardwarekomponenten des Systems. Ansprechbar über Major und Minor Nummern
Beispiele
Sicherung des Master Boot Records der ersten Festplatte
root@zero:~# dd if=/dev/sda of=/tmp/mbr.img bs=512 count=1
Block Device
root@zero:~# ls -l /dev/sda | cut -c 1 b
Character Device
root@zero:~# ls -l /dev/ttyS0 | cut -c 1 c
Erstellen einer Gerätedatei
root@zero:/dev# mknod sata1 b 8 0
root@zero:/dev# fdisk -l /dev/sata1
Platte /dev/sata1: 6442 MByte, 6442450944 Byte
255 Köpfe, 63 Sektoren/Spuren, 783 Zylinder
Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes
Disk identifier: 0x0005efab
Gerät boot. Anfang Ende Blöcke Id System
/dev/sata1p1 * 1 743 5968116 83 Linux
/dev/sata1p2 744 783 321300 5 Erweiterte
/dev/sata1p5 744 783 321268+ 82 Linux Swap / Solaris
Named Pipes
Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen. Sie sind flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren). Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplexbetrieb zwischen den Prozessen ausgetauscht werden.
Erstelle Named Pipe mit Namen /tmp/roehre. Schreibe "hallo welt" in die Pipe und bleibe
xinux@zero:~$ mkfifo /tmp/roehre xinux@zero:~$ echo hallo welt > /tmp/roehre
Gebe Inhalt der Pipe mit cat aus
root@zero:~# cat < /tmp/roehre hallo welt root@zero:~# ls -l /tmp/roehre | cut -c 1 p
Sockets
Schnittstelle um es lokalen Anwendungen zu ermöglichen, miteinander Netwerkmässig zu kommunizieren.
root@lydia:~# netstat -lnxp | tail -1 unix 2 [ ACC ] STREAM HÖRT 21951 6646/nm-applet /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede
root@lydia:~# ls -l /tmp/orbit-thomas/linc-19f6-0-2b9b81095cede | cut -c 1 s
Links
Bei Links handelt es sich um symbolische Verweise auf andere Dateien
Softlink Ein Softlink ist eine Datei die nur auf den Namen einer anderen Datei verweist. Wenn die Originaldatei gelöscht wird, zeigt der Link ins Leere.
ln -s datei softlink
| Vorteile | Symbolische Links können auch auf Verzeichnisse angelegt werden Sie sind partitionsübergreifend Man kann sie auf Dateien anlegen, die noch nicht existieren |
| Nachteile | Wenn das Original gelöscht ist, ist kein Zugriff mehr möglich |
Beispiel Normal
root@zero:~# ln -s text verweis
Verbose
root@zero:~# ln -sv text verweis „verweis“ -> „text“
Erzwungenes Überschreiben
root@zero:~# ln -sf dat verweis
Auswirkungen
root@zero:~# ls -l dat verweis -rw-r--r-- 1 root root 4 2009-07-29 13:56 dat lrwxrwxrwx 1 root root 3 2009-07-29 13:57 verweis -> dat
Kopieren(Original wird kopiert)
root@lydia:~# cp -v verweis /tmp/ „verweis“ -> „/tmp/verweis“ root@lydia:~# ls -l /tmp/verweis -rw-r--r-- 1 root root 4 2009-07-29 13:59 /tmp/verweis
Kopieren(Link wird kopiert)
root@lydia:~# cp -vd verweis /tmp/ „verweis“ -> „/tmp/verweis“ root@lydia:~# ls -l /tmp/verweis lrwxrwxrwx 1 root root 3 2009-07-29 14:00 /tmp/verweis -> dat
Hardlinks
ln datei hardlink
Eigentlich ist jede Datei ein Hardlink. Ein Hardlink ist ein Verzeichniseintrag, der auf eine Inode verweist. Beim Erzeugen einer Datei verweist ein Eintrag auf eine Inode. Man kann dann weitere Verweise erzeugen. Der Linkcounter wird jeweils um 1 erhöht. Beim Löschen einer Datei wird er jeweils um 1 reduziert. Wird der Wert 0 erreicht, ist die Datei gelöscht.
| Vorteile | Zugriff auf die Daten, selbst wenn das Orginal gelöscht ist. |
| Nachteile | Man kann keine Hardlinks auf Verzeichnisse anlegen.
Ist nur innerhalb einer Partion möglich. |
Beispiel
root@zero:~# touch 1 root@zero:~# echo "text" > 1 root@zero:~# ln 1 2 root@zero:~# more 2 text root@zero:~# echo "doch kein text" > 1 root@zero:~# more 1 doch kein text root@zero:~# more 2 doch kein text
Weitere Optionen:
-b sichert Dateien, statt sie zu überschreiben -f Überschreibt bestehende, gleichnamige Dateien -i fragt vor dem Überschreiben nach Bestätigung -v ausführliche Meldungen
Softlink mit dem Namen passwd im Homeverzeichnis angelegt
xinux@zero:~$ ln -vs /etc/passwd . „./passwd“ -> „/etc/passwd“
Softlink mit dem Namen passwd im Homeverzeichnis angelegt(Original exestiert nicht)
xinux@zero:~$ ln -vs /etc/hund . „./hund“ -> „/etc/hund“
Hardlink mit dem Namen hosts im Homeverzeichnis angelegt
xinux@zero:~$ ln -v /etc/hosts . „./hosts“ => „/etc/hosts“
Auf eine nicht existierende Datei kann kein Hardlink angelegt werden!
xinux@zero:~$ ln -v /etc/katze . ln: Zugriff auf „/etc/katze“: No such file or directory
Suchen von Dateien
find
find ab_wo_wird_gesucht was_wird_gesucht aktion find [Pfad] [Bedingung] [Aktion]
Nach Namen
find [Pfad] -name [Name]
Finde alle Dateien mit Namen test ab dem Verzeichnis /home und gebe diese Zeilenweise aus
root@zero:~# find /home -name test -print /home/xinux/test /home/test
Wie oben, jedoch mit Namensanfang test
root@zero:/home/xinux# find /home -name 'test*' /home/xinux/testdatei /home/xinux/test /home/test
Nach Benutzer(Eigentümer)
root@zero:/tmp# find /tmp/ -user xinux /tmp/datei
Nach Gruppe
root@zero:/tmp# find /tmp/ -group hacker /tmp/datei3 /tmp/datei2
Nach Typ
Es wird nach Dateien anhand Ihrer Art gesucht:
find [Pfad] -type [Typ]
Typ:
- f: Normale Dateien
root@zero:~# find /tmp/ -type f /tmp/mbr.img /tmp/datei /tmp/zeugs /tmp/.X0-lock
- d: Verzeichnisse
root@zero:~# find /var/log -type d /var/log /var/log/apache2 /var/log/unattended-upgrades /var/log/apparmor /var/log/ConsoleKit /var/log/dist-upgrade /var/log/dist-upgrade/20090526-1052 /var/log/cups /var/log/apt /var/log/fsck /var/log/samba /var/log/samba/cores /var/log/samba/cores/smbd /var/log/samba/cores/nmbd /var/log/samba/cores/winbindd /var/log/installer /var/log/gdm /var/log/news
- c: Char Devices (Zeichenorientierte Gerätedatei)
root@zero:~# find / -type c /lib/udev/devices/kmem /lib/udev/devices/null /lib/udev/devices/console /lib/udev/devices/ppp /lib/udev/devices/net/tun
- b: Block Devices (Blockorientierte Gerätedatei)
- p: Benannte Pipe
- l: Links
- s: Sockets
Nach Permissions
root@cardassia:~# find /usr/bin/ -perm +4000 -exec ls -l {} \;
-rwsr-xr-x 1 root root 115136 2008-09-01 15:17 /usr/bin/sudoedit
-rwsr-xr-x 1 root root 32988 2008-06-09 20:10 /usr/bin/passwd
Nach Modifikation
Listet alle Dateien in /etc auf, die innerhalb von zwei Tagen modifiziert wurden
root@zero:/var/log# find /etc/ -mtime 2 -print /etc/apache2 /etc/apache2/mods-available /etc/apache2/conf.d /etc/apache2/sites-available /etc/bash_completion.d /etc/blkid.tab.old /etc/firefox-3.0/profile /etc/firefox-3.0/profile/chrome /etc/firefox-3.0/pref /etc/profile.d /etc/ufw/applications.d /etc/logrotate.d /etc/xulrunner-1.9 /etc/blkid.tab /etc/cron.daily /etc/alternatives /etc/alternatives/x-www-browser /etc/alternatives/xulrunner /etc/gre.d /etc/hal/fdi/policy /etc/dbus-1/system.d /etc/udev/rules.d
Nach Größe
Finde Dateien in /tmp, die größer als 100 MByte sind
root@zero:/tmp# find /tmp/ -size +100M /tmp/datei
Finde Dateien in /tmp, die kleiner als 100 KByte sind
root@zero:/tmp# find /tmp/ -size -100k /tmp/ /tmp/datei3 /tmp/backup /tmp/datei2 /tmp/.winbindd /tmp/.winbindd/pipe /tmp/mbr.img /tmp/zeugs /tmp/.ICE-unix /tmp/.X0-lock /tmp/datei1 /tmp/.X11-unix /tmp/.X11-unix/X0 /tmp/pulse-PKdhtXMmr18n
Nach Berechtigungen
Finde Dateien in Home mit der Berechtigung 777 (-rwxrwxrwx)
root@zero:/var# find /home/ -perm 777 /home/samba /home/xinux/Examples /home/xinux/.pulse/1f0763ee4cf4c7e1d3c07fd149dda37b:runtime /home/test/Examples
Nach Zeit
Modifiziert in der letzten Minute
root@zero:~# find /var -mmin -1 /var/log/debug /var/log/kern.log /var/log/syslog /var/run/klogd/kmsg
Modifiziert vor mehr als 9 Tagen
root@zero:~# find /var -mtime +9
Zugriff vor mehr als 9 Minuten
root@zero:~# find /var -amin +9
Kenndaten geändert in den letzen 2 Tagen
root@zero:~# find /var -ctime -2
Ausführen eines Befehls
root@zero:~# find / -name "xinux?" -exec ls -l {} \;
Ausführen eines Befehls mit Rückfrage
root@zero:~# find / -name "xinux?" -ok rm {} \;
< rm ... /tmp/xinux3 > ? y
< rm ... /tmp/xinux2 > ? n
< rm ... /tmp/xinux1 > ? y
locate
Locate arbeitet über einen Index, der erstellt und aktualisiert werden muss. Aus diesem Grund kann locate teilweise nicht akutell sein. Es ist immer schneller als find und es durchsucht immer das ganze Dateisystem.
locate [Dateiname]
Lokalisiere die Datei wvdial.conf. Anmerkung: Der Stern wird beim Suchen automatisch hinzugefügt. Entspricht also wvidal.conf*
root@zero:~# locate wvdial.conf /etc/wvdial.conf /usr/share/man/man5/wvdial.conf.5.gz /var/lib/dpkg/info/wvdial.conffiles /var/lib/dpkg/info/wvdial.config
Lokalisiere die Datei wvdial.conf und nur diese
root@zero:~# locate -b '\wvdial.conf' /etc/wvdial.conf
Aktualisieren des Indexes
root@zero:~# updatedb
Wie wird ein Kommando lokalisiert
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in einem Verzeichnis (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/' im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird der Kommandoname zuerst in der Hashtabelle gesucht, dann wird er mit den Synonymen, mit den Scriptfunktionen und schließlich mit den Shellfunktionen verglichen.
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, gibt die Shell eine Fehlermeldung aus.
which und type
which
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.
which [-a] Dateiname
Optionen:
- -a : Alle Treffer ausgeben, nicht nur den ersten
- --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen
Beispiel
root@zero:~# which startx /usr/bin/startx
type
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen Shell befinden.
type [Optionen] Befehle
Beispiel
root@zero:~# type ls ls is aliased to `ls --color=auto'
Optionen:
- -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde
root@zero:~# type -a ls ls is aliased to `ls --color=auto' ls is /bin/ls
- -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH
unterscheiden
root@zero:~# type -p apache2 /usr/sbin/apache2
- -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist
root@zero:~# type -t apache2 file
