IT-Service GmbH 


Allgemeines zu Linux

rsync

zum Abgleich von Verzeichnissen oder Kopieren von Partitionen, lokal oder remote. Wenn an source ein "/" angehängt ist, erfolgt der Abgleich relativ, zumindest bei der Optionskombination -avurt
> rsync -avurt -e ssh [--delete] [--progress] [--exclude EXCLUDES] [--include-from FILE] source dest
weitere Optionen:
- z Kompression an

in der Steuerdatei FILE:
+ Filename_include
- Filename_exclude

Shellscripte

Datum in Shellskripten benutzen:
!#/bin/bash
DATUM=`date +%y-%m-%d`
echo $DATUM
Zyklisches ausführen von Kommandos
> for((;;));do date; df -k; sleep 10; done
Umleiten von STDIO und STDERR in eine Datei
> commando 1>filename 2>&1
Alle Dateien finden, die neuer als 14 Tage alt sind oder in den letzten 14 Tagen geändert wurden:
$ find . -type f -mtime -14
Alle Dateien die zwischen 2 Datums geändert wurden finden:
$ find . -type f -printf '%TY%Tm%Td %p\n' | awk '"20210625"<=$1 && $1<="20210701"'
$ find . -newermt 20210625 -a ! -newermt 20210701
Alle Dateien, die den String Max enthalten, in einen Ordner kopieren:
$ find SOURCEDIR/ -name '*Max*' -type f -exec  cp {} DESTDIR/ \;
Alle Dateien, die letzten drei Tage geändert wurden, in einen Ordner kopieren (User und Rechte erhalten):
$ find  SOURCEDIR/ -mtime -3  -type f -exec rsync -avrtHAX {} DESTDIR/ \; \;
Mehr Dateien löschen als rm -rf * zulässt, auch mit Leerzeichen im Dateinamen? Mit xargs:
$ find . -name 'spam-*' -print0 | xargs -0 rm
Alle jpg-Bilder grösser als 5MB kleinrechnen, so dass die lange Seite 2000 Pixel hat (auch mit xargs):
$ find . -name "*.jpg" -type f -size +5M | xargs mogrify -scale 2000x2000
Mehrere Dateien umbenennen, z.B. durchnummerieren:
$ let a=0; for i in *.mp3; do let a=a+1; b=`printf XYZ-CD01_%02d.mp3 $a`; mv $i $b; done
Dateien mit Leerzeichen im Namen sind eine Plage, mit folgendem Befehl werden alle Leerzeichen durch Unterstriche "_" ersetzt:
$ rename 's/\s/_/g' *
Falls man nicht mehr auf die Kiste kommt, weil die passwd zerschossen ist... mit Linux boot Disk booten ....
# mount /dev/sda1 hd
# cd hd
# cd etc
# mv shadow shadow.old
# mv passwd passwd.old
# cat > passwd 
  root::0:0:xxx:/:/bin/bash
	<CTRL><D>
in /etc/shadow muß bei root die 2. Spalte leer sein wenn in der /etc/passwd in der zweiten Spalte bei root ein "x" steht. Dies ist bei allen moderneren LINUX und UNIX Varianten so. In die /etc/shadow und /etc/passwd muss vom vi aus mit w! geschrieben werden.
Mount NFS Laufwerk
# mount -t nfs servername:/path /mnt
ext2 nach ext3 konvertierten:
# tune2fs -j /device
Anschließend /etc/fstab anpassen Damit ext2 nicht dauernd flushd und Plattenzugriffe macht, in /etc/fstab
/dev/hda3 /home ext3 rw,noatime,commit=3600
bzw:
# mount -t ext3 -o commit=3600,noatime /dev/hda1 /mnt/whatever
ReMount schreibgeschütztes FS:
# mount -o remount -o rw /dev/hda3 / 
Datum einstellen:
> date MMDDhhmmYYYY 
Platte total bügeln:
# dd if=/dev/urandom of=/dev/hda bs=65535
# dd if=/dev/zero of=/dev/hda bs=65535
einzelne Datei sicher löschen (bei Debian Sarge dabei):
# shred -n anz filename
Dateisystem von ext2 nach ext3 umwandeln
# tune2fs -j /dev/sda1
Dateisystem von ext2 nach ext4 umwandeln
# tune2fs -O extents,uninit_bg,dir_index,has_journal /dev/sda1
Dateisystem von ext3 nach ext2 umwandeln
# tune2fs -O ^has_journal /dev/sda1
Tar zum Kopieren von Partitionen, im SOURCE Verzeichnis
> tar cfSp - * | ( cd /DEST && tar xfSp - ) 	oder
> tar cpSz * | ( cd /DEST && tar xpSz ) 
> find -depth -print | cpio -pdauV /DEST
mit TAR nur neuere Dateien kopieren:
> tar -cvf name.tar -N "YYYY-MM-DD" *	sichert Dateien neuer als ...
auch wenn init 0 nicht mehr geht, funktioniert das Schreiben der Triggerdevices unter /proc oft noch. Zuerst alles readonly mounten (u) und dann neu booten (b)
# echo u > /proc/sysrq-trigger
# echo b > /proc/sysrq-trigger

Performanceanalyse

Systemstatistik (systools müssen installiert sein)
# sysstat
Welcher Prozess hängt!? Wenn z.B. ps -aux bei der Ausgabe stoppt? - strace davor:
# strace ps -aux

Debian System aktualisieren

Alternativ kann man das mit aptitude auch interaktiv machen.
Update, Installieren und alle Fragen mit Ja beantworten
# apt-get update
# apt-get -y dist-upgrade
Update, Sicherheitsupdates und harmlose Pakete installieren, dann veraltete Paketquellen löschen
# apt-get update
# apt-get -yt $(lsb_release -cs)/updates dist-upgrade
# apt-get --trivial-only dist-upgrade 
# apt-get autoclean

Sendmail

direkt ansprechen:
> telnet wega 25
HELO EMPFÄNGERDOMAIN		ulm.go-itservice.de, ohne ":"
MAIL FROM: SENDER		god@heaven.org, manche Lotus Notes Server erwarten Mail Adressen in Spitzklammern: <god@heaven.org>
RCPT TO: EMPFÄNGER		go@wega.ulm.go-itservice.de
data				schaltet Mailtext ab nächster Zeile ein
	Subject: SUBJECT	innerhalb Data
MAILTEXT
.				beendet und sendet mail
quit				beendet sendmail
Sendmail auf Kommandozeile benutzen
sendmail -t -F sender@domain < testfile
wobei testfile so aussieht:
To: recipient@domain
Subject: Testsubject
bla bla
bla
.
Smarthost: in der /etc/sendmail.cf den Eintrag hinzufügen:
DS172.16.30.1
Sendmail ohne DNS, in /etc/service.switch:
hosts		files
aliases	files 
und in der sendmail.cf den Kommentar vor ServiceSwitchFile entfernen. mit -p smtp:172.16.30.1 sollte es via Relay gehen, das tut aber nicht: schickt Mail über smtp und 172.16.30.1 als relay. Falls man sich nach MX Records richten will, entfällt der Teil mit -p

POP

direkt ansprechen
> telnet wega 110
USER USERNAME		Anmelden
PASS PASSWD		POP Password eingeben
STAT			Mailbox: Anzahl Dateien, Grösse
LIST			Nachrichten und Grösse anzeigen
RETR NUM		Nachricht Nummer NUM anzeigen
DELE NUM		Nachricht Nummer NUM zum Löschen markieren
RSET			Änderungen rückgängig machen
QUIT			Abmeldungen, gelesene Meldungen werden ohne RSET gelöscht.

master Boot record (MBR) sichern/wiederherstellen

sichern (im Beispiel die 1. SATA Platte, sda)
# dd if=/dev/sda of=sda.mbr bs=512 count=1
restaurieren, Vorsicht!:
# dd if=sda.mbr of=/sda/hda bs=512 count=1

Partitionstabelle sichern/wiederherstellen

sichern (im Beispiel die 1. SATA Platte, sda):
# sfdisk -d /dev/sda > sda.part
restaurieren, Vorsicht!:
# sfdisk /dev/sda < sda.part
Falls die Partitionstabelle zerstört wurde, kann man versuchen, sie mit gpart wieder zu analysieren. Vorsicht, das ist letztes Mittel und sehr gefährlich! Optionen siehe man gpart
# gpart /dev/sda

root-Passwort der mySQL-Datenbank zurücksetzen

Falls man das root-Passwort der DB vergessen hat: mySQL stoppen, ohne Netzwerk und Sicherheit starten
# /etc/init.d/mysql stop
# mysqld_safe --skip-grant-tables --skip-networking &
# mysql -u root
in der MySQL Oberfläche das Passwort ändern
> USE mysql;
> UPDATE user SET password='PASSWORD' WHERE user='root';
> FLUSH privileges;
> quit;
mySQL wieder stoppen und normal starten
# /etc/init.d/mysql stop
# /etc/init.d/mysql start
# mysql -u root -p PASSWORD
sollte jetzt gehen...

SED

> sed <infile >outfile 's/aaa/bbb/'		Ersetzung mit reg_exps
> sed '/aaa/s/bbb/ccc/g'			Ersetzung von bbb durch ccc, wenn aaa in Zeile enthalten ist-
Im Internet gibts eine Menge interessanter SED Einzeiler zu finden!

GDM

mehrere graphische Anmeldungen gleichzeitig: in der Datei /etc/gdm/gdm.conf den Abschnitt [servers] anpassen:
[servers]
0=Standard
1=Standard
Das Umschalten geschieht mit <STRG><ALT><F7> und <STRG><ALT><F8>