Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.

Tipps rund um Linux


Logfiles durchsuchen

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.

Beispiele

- 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)

Suchen von Text in bestimmten Dateien mit find und grep

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
  • -print0 bedeutet das auch Dateinamen mit Leerstellen und usw. auch funktionieren.
  • Beim xargs muss dann der Parameter -0r und erst dann der Befehl folgen.

Bildschirmschoner für die Console ausschalten

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

Initramdisk neu bauen

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/


Grub2 neu bauen bzw. hängt in der minishell

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

Tastaturlayout unter Ubuntu Server einstellen

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.


Zeitzone falsch eingestellt ?

Wenn die Zeitzone falsch eingestellt ist, dann:

  ### Auf debian und ubuntu kompatiblen Systemen:
  # dpkg-reconfigure tzdata
  
  ### Auf redhat basierten Systemen:
  # tzselect

Linux Passwort reset

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.

  • Wenn die Liste der zu startenden Systeme (Kernel) angezeigt wird, wählt man mit den Pfeiltasten das zu startende System aus (meist das oberste)
  • Durch Drücken von e kommt man in den Bearbeiten-Modus (edit)
  • Am Ende der Zeile kernel … ergänzt man init=/bin/sh (evtl. geht auch einfach ein S für Single)
  • Root-Dateisystem / identifizieren mit mount; z.B. /dev/hda1 oder /dev/sda2 oder ähnlich
  • Root-Dateisystem im Schreiblesemodus neu einhängen mit mount -o rw,remount /dev/hd… /
  • Passwort neu setzen mit passwd root
  • Root-Dateisystem wieder Nur-Lese-Mode setzen mit mount -o ro,remount /dev/hd… /
  • Rechner neu starten mit reboot oder init 6.

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.

  • CD einlegen und davon starten. Eventuell muss man dies im BIOS erst einstellen, oder ein Boot-Menü z.B. mit F12 aufrufen (abhängig vom jeweiligen Computer)
  • Im Live-System eine Konsole öffnen
  • Festplatte identifizieren und falls nicht automatisch geschehen mounten
  • Shadow-Datei editieren, z.B. vi /mnt/hda(x)/etc/shadow
  • Die Zeile root:$6…Xyz:15284:0:99999:7::: auswählen
  • Das verschlüsselte Passwort zwischen dem 1. und 2. Doppelpunkt löschen
  • Speichern mit :wq!
  • Rechner neu starten
  • Einloggen als root (am besten Konsole mit Strg+Alt+F1/2/3…) ohne Passwort
  • Passwort neu setzen mit passwd root
  • Fertig.

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.


Linux File System Check

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.


Shell Tasten-Tipps

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

Scrollen im Screen

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


Bedienung des vi Editors

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


Alle Dateinamen mit Kleinbuchstaben umwandeln

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

Grub auf Serial-Port umleiten

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

Scripte direkt via Desktop ausführen

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.


linuxtipps.txt · Zuletzt geändert: 2017/01/09 18:59 von jausems
Sie befinden sich hier: startlinuxtipps
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution-Noncommercial-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0