Die meisten Logfiles unter Linux liegen unter /var/log. Oftmals werden sie vom Cron in regelmäßigen Abständen geschloßen, umbenannt und eventuell kopiert. Dann wird eine neue leere Version erzeugt. Zum Beispiel gibt es vom Systemlogfile die Versionen: messages, messages.1, messages.2, messages.3 und messages.4. Gepackte Versionen heissen z.B. messages.1.gz und sind somit im GZip-Format gespeichert.
- Suchen nach Datum und Einträgen zu USB:
# grep "^Apr 14" /var/log/messages | grep -i usb # zgrep "^Apr 14" /var/log/messages.gz | grep -i usb (bei gepackter Version)
Mit dem folgenden Ausdruck wird der Text 'suchtext' in den Dateien txt, csv und html im homedir gesucht und die Dateinamen ausgegeben wenn dieser Text gefunden wurde.
# find ~/.* -type f \( -iregex "^.*\(txt\|csv\|html\)$" \) -exec grep -i suchtext {} \; -print
Will man in allen Dateien suchen jedoch in stimmten Dateien nicht muß ein '-not' hinzu gefügt werden.
# find ~/.* -type f -not \( -iregex "^.*............
Will man all diese Dateien auch löschen, so geht das so (Achtung).
# find ~/.* -iname *.tmp -print0 | xargs -0r rm
Wenn man nur die Ubuntu-Server Edition auf einem Rechner hat und vermeiden will das der Bildschirm in der Console schwarz wird, kann man dies mit diesen paar Zeilen in der Datei /etc/rc.local machen. Wenn dann z.B. ihrgendwelsche Fehlermeldungen auf der Console erscheinen und der Rechner bleibt hängen, kann man diese dann noch lesen.
for index in $(seq 1 6) do /usr/bin/setterm -blank 0 -powerdown 0 -powersave off > /dev/tty${index} done
Nach einem Hardwaretausch, insbesondere nach der Änderungen des ATA-Chipsatzes, kann eine Maschine beim Laden des Kernels scheitern und in der Shell der initial ramdisk
hängen bleiben. So geschehen nach einem recht brutalen ,,dd
-Backup„ aus dem laufenden System.
In der Initrd-Shell kann man nicht viel machen, der ATA-Treiber wird nicht auf magische Weise entstehen und ohne ihn kann man nicht auf die Festplatte zugreifen.
Also bootet man von einem Live-System, zum Beispiel grml
[1] und probiert im changeroot den Neubau der Initrd. Das tote Zielsystem sei auf /dev/sda1
, alles auf /
(also /boot/
, /usr/
, etc. nicht auf eigenen Partitionen, Swap ist irrelevant):
# mount /dev/sda1 /mnt # mount -t proc none /mnt/proc # mount -t sysfs none /mnt/sys # mount --bind /dev /mnt/dev # chroot /mnt /bin/bash
Man hat /
und die virtuellen Dateisystem proc
und sysfs
gemountet und /dev
gebunden, um hinterher auf die physikalischen Platten schreiben zu können. Danach hat man eine Shell, in der man fast genau so wie im geklonten System arbeiten kann – mit dem Unterschied, dass der Kernel des Live-Systems läuft.
Hier wollen wir die Initrd neu bauen und GRUB updaten:
# update-initramfs -u # update-grub
Das funktioniert unter Debian GNU/Linux und verwandten Systemen. Andere Distris haben andere Tools dafür.
Nun kann man neu booten und bei Erfolg nochmal dmesg
und das Syslog beobachten.
[1] http://grml.org/
Wenn z.B. nach eimen Kernel Update oder einem Systemneustart der Grub2 den Kernel nicht mehr bootet und in der minishell hängt, kann man mit den folgenden Befehlen das System manuell starten.
Zuerst gugggge wir uns die Partitionen an mit:
#ls -l
un dann fange mer an mit:
# insmod gzio # insmod part_msdos # insmod ext2 # set root='(hd0,msdos1)' # linux /boot/vmlinuz-X.X.X-X-generic-pae root=/dev/sd?? # initrd /boot/initrd.img-X.X.X-X-generic-pae # boot
Wenn bei der Ubuntu-Serverinstallation das Tastaturlayout noch auf englisch steht, kann mit
# dpkg-reconfigure keyboard-configuration
das Layout und die Sprachbelegung eingestellt werden. Mit dpkg-reconfigure lassen sich alle instalierten und dafür geeigneten Pakete konfigurieren.
Wenn die Zeitzone falsch eingestellt ist, dann:
### Auf debian und ubuntu kompatiblen Systemen: # dpkg-reconfigure tzdata ### Auf redhat basierten Systemen: # tzselect
Wenn man das Root Passwort seines Linux Rechners vergessen hat, kann man dies z.B. auf zwei Arten lösen: 1. via Grub ein Notsystem starten oder 2. mit einer Rettungs- oder Live-CD starten.
Variante 1: Hierzu muß im Grubmenu beim Booten die Parameterübergabe für den Kernel geändert werden.
Variante 2: Mit einer sogenannten Rettungs-CD oder auch einer Live-CD startet man ein eingenständiges Linuxsystem, von dem aus man das System auf der Platte manipulieren kann.
Hinweis: Manch einer wird jetzt denken: Das ist aber eine gewaltige Sicherheitslücke! Nein, das ist eine wichtige Funktion, falls man mal sein Passwort vergessen hat. Sichern muss man seinen Rechner gegen physikalischen Zugriff. Wer den Rechner hat, kann auch die Platte ausbauen und in einem anderen Rechner lesen.
Wenn bei einem Rechner die Spannung ausfällt bzw. dieser nicht richtig runter gefahren wird, kann es zu einem Filesystem-Error kommen, den man nur via Console beseitigen kann. Zum Beispiel bei embedded Rechner.
Dies ist schlecht, wenn der Rechner keine Console hat oder nur via Remote gewartet werden kann.
Um den File System Check beim Starten ohne Interaktion bzw. mit „Auto repair“ durch zuführen, kann man in der Datei:
"/etc/default/rcS" die Variable FSCKFIX auf yes schalten.
Hinweis: Hilft natürlich nicht wenn notwendige Files defekt oder verschwunden sind.
Taste(n) | Funktion |
---|---|
Alt + . | Parameter des letzten Befehls einfügen |
Alt + d | Wort vor dem Cursor löschen |
Alt + f | Ein Wort nach vorne überspringen |
Alt + b | Ein Wort rückwärts überspringen |
Ctl + a | An den Zeilenanfang springen |
Ctl + e | Ans Ende springen |
Un wenn mann den KK fragt kann man auch in der ~/.screenrc
das eingeben „termcapinfo xterm ti@:te@“, dann geht auch Shift+Cursor wieder.
Zum Scrollen „C-a“ dann ESC und dann kann man mit mit PAGE/Cursor UP/DOWN im screen scrollen.
C-a S splits into two regions
C-a tab switches input focus to the next region
C-a X kills the current region
C-a :resize numlines resizes the current region to numlines lines.
Custom key bindings for scrolling
If you don't want to hit C-a ESC PGUP everytime to page up, you can create keyboard shortcuts. I use CTRL+K to scroll up one line and META+K to scroll up one page (I know these are kind of weird key combinations). To create these shortcuts, I put the following in my .screenrc.
bindkey „^[k“ eval „copy“ „stuff ^b“ # enter copy mode and move up one page
bindkey „^k“ eval „copy“ „stuff k“ # enter copy mode and move up one line
bindkey -m „^[k“ stuff ^b # move up one page
bindkey -m „^k“ stuff k # move up one line
Now, when I'm in screen and press M-k, screen enters copy mode and scrolls up one page. Likewise, C-k enters copy mode and scrolls up one line. As before, to exit copy mode, hit ESC. How to copy and paste in screen (added 2010-02-03)
Enter scrollback mode using C-a [ or C-a ESC
Press the space bar to begin selecting text.
Move the cursor using h,j,k,l,C-b,C-f or arrow keys/PGUP/PGDOWN
Hit the space bar again to copy the selected text.
Hit ESC to exit scrollback mode.
Press C-a ] to paste.
How to open 2 terminals connected to the same session (Multi display mode) (updated 2012-04-05)
The -x option can be used to attach multiple terminals to the same screen session. Pretty cool! Open a terminal and create a screen session named „local“
$ screen -S local
Start a second terminal, then attach it to the existing session:
$ screen -x local
Hier eine kurze Befehlsübersicht:
Speichern & Schließen: | |
:q |
vi beenden |
:q! |
vi beenden, nicht gespeicherte Änderungen gehen verloren |
:w |
Datei speichern |
:w! |
Speichern der Datei erzwingen |
:wq (oder) ZZ |
Datei speichern und vi beenden |
<Strg> + z |
Shell starten; vi wird in Hintergrund geschoben; Rückkehr durch Eingabe von "fg" |
Navigation: | |
G |
an das Ende des Dokuments springen |
1G |
in die erste Zeile des Dokuments springen |
0 (null) |
an den Anfang der Zeile springen |
^ |
an den Anfang der Zeile springen |
$ |
an das Ende der Zeile springen |
b |
an den Anfang des letzten Wortes springen |
w |
an den Anfang des nächsten Wortes springen |
e |
an das Ende des nächsten Wortes springen |
h |
ein Zeichen nach links |
j |
ein Zeile nach unten |
k |
eine Zeile nach oben |
l |
ein Zeichen nach rechts |
<Strg> + u |
nach oben blättern |
<Strg> + d |
nach unten blättern |
L |
in die letzte Zeile der Bildschirmausgabe springen |
Löschen: | |
x |
Zeichen unter Cursor-Position löschen |
r |
Zeichen unter Cursor-Position ersetzen |
s |
Zeichen unter Cursor-Position ersetzen und in den Bearbeitungsmodus wechseln |
dd |
aktuelle Zeile ausschneiden (in Zwischenablage kopieren & löschen) |
[ZAHL]dd |
die nächsten [ZAHL] Zeilen ausschneiden |
C |
Zeile ab aktueller Cursor-Position löschen |
V |
Zeile markieren |
v |
Zeichen markieren |
y |
Markierte Zeichen in Zwischenablage kopieren |
d |
markierte Textstellen löschen |
cw |
aktuelles Wort ersetzen |
dw |
aktuelles Wort löschen (incl. angehängtem Leerzeichen) |
de |
aktuelles Wort löschen (über Zeile hinaus) |
dl |
Zeichen unter Cursor-Position löschen |
dj |
zwei Zeilen löschen (Cursor-Position ist 1. Zeile) |
dk |
zwei Zeilen löschen (Cursor-Position ist 2. Zeile) |
:5,10d |
Zeilen 5 bis 10 löschen |
:.,$d |
alle Zeilen löschen ("." = Anfang der Datei, "$" = Ende der Datei) |
Einfügen: | |
p |
Zwischenablage nach aktueller Zeile einfügen |
P |
Zwischenablage vor aktueller Zeile einfügen |
R |
Text ab Cursor-Position überschreiben |
J |
aktuelle Zeile an das Ende der vorhergehenden Zeile anhängen |
o |
eine Zeile nach der aktuellen einfügen und in den Bearbeitungsmodus wechseln |
O |
eine Zeile vor der aktuellen einfügen und in den Bearbeitungsmodus wechseln |
a |
ein Leerzeichen einfügen und in den Bearbeitungsmodus wechseln |
A |
zum Ende der Zeile springen und in den Bearbeitungsmodus wechseln |
i |
in den Bearbeitungsmodus wechseln |
I |
an den Anfang der Zeile springen und in den Bearbeitungsmodus wechseln |
Suchen & Ersetzen: | |
/Linux |
nach "Linux" suchen |
/ |
letzte Suche wiederholen |
n |
letzte Suche wiederholen |
:s/Suchen_nach/Ersetzen_durch/ |
in aktueller Zeile suchen & ersetzen |
:1,7s/Suchen_nach/Ersetzen_durch/ |
in Zeile 1 bis 7 suchen & ersetzen |
:%s/Suchen_nach/Ersetzen_durch/ |
in allen Zeilen suchen & ersetzen |
Sonstiges: | |
u |
UNDO der letzten Befehle |
U |
alle Änderungen der aktuellen Zeile rückgängig machen |
Hier ein kleines Script durch das alle Dateinamen auf Kleinbuchstaben (lower case) umgestellt werden.
#! /bin/sh for filename in `ls *` do echo "Filename:"$filename" wird geaendert" mv $filename `echo $filename | tr "A-Z" "a-z"` done
So gehts auch in einer Zeile als Befehl in einer Shell
for f in `ls *`;do mv $f `echo $f | tr "A-Z" "a-z"`;done
Auszug grub.conf:
#boot=/dev/hdc default=0 timeout=10 #splashimage=(hd0,0)/grub/splash.xpm.gz #hiddenmenu serial --unit=0 --speed=38400 terminal serial title CentOS (2.6.18-348.12.1.el5) root (hd0,0) kernel /vmlinuz-2.6.18-348.12.1.el5 ro root=/dev/VolGroup01/LogVol00 connsole=ttyS0,38400 initrd /initrd-2.6.18-348.12.1.el5.img
Hallo, hier mal wieder was zum ausrasten, unter Unity bzw. Ubuntu kann man keine Skripte mehr mit doppelklick ausführen obwohl das exec. Bit gesetzt ist, is ja logisch oder ?, wer hat sich diesen Müll nur wieder ausgedacht.
gsettings set org.gnome.nautilus.preferences executable-text-activation (ask oder launch)
Damit wird das script gleich gestartet oder vorher nochmal gefragt.
Liste alle Datein auf, die in den letzten 5 Minuten im aktuellen Verzeichnis geändert wurden.
find . -cmin -5
Will man das gesamte Dateinsystem prüfen ohne die System Verzeichnisse, so geht das so:
find / \( -path /proc -o -path /dev -o -path /sys \) -prune -o -cmin -5
Manchmal muss man unter Linux den Datums- und Zeitstempel einer Datei auf den aktuellen Wert ändern. Das geht am einfachsten mit touch:
touch –time=modify dateiname
Dadurch bekommt die Datei das aktuelle Datum und die aktuelle Zeit.
Will man nicht das aktuelle Datum (Zeit), kann man auch beliebige Werte manuell eingeben:
touch -t MMDDhhmm[[CC]YY][.ss] dateiname
Die Werte in den eckigen Klammern sind optional.
Beispiel:
touch -t 10261230 beispiel.txt
→ die Datei beispiel.txt hat jetzt das Datum 26.10.13 und die Zeit 12:30.
Mit dem Tool ncdu kann man den Festplatten Verbrauch prüfen.
Eigentlich ganz einfach, ins Stammverzeichnis der Partition die geprüft werden soll einfach die Datei ablegen ohne Inhalt.
touch /forcefsck
Wichtig! Die Partition muss in der FSTAB stehen damit das ganze funktioniert. Linux prüft im Endeffekt auf diese Datei während es die FSTAB parsed und macht dann den fsck noch vor dem Mount.
—-
Will man in der Console beim ls Befehl z.B. die ausführbare Datein oder Ordner in einer anderen Farbe sehen, kann man in die Datei /etc/bash.bashrc die folgenden drei zeilen hinzufügen.
PS1='\[\033[01;31m\]\u\[\033[01;33m\]@\[\033[01;36m\]\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\]' alias lsa="ls -ahl" alias ls="ls --color"