Archiv der Kategorie: CentOS

init Script für Apache archiva unter CentO

Ein init Script für Apache archiva unter CentOS. Nach dem Erstellen der Datei sind noch folgende Schrite notwendig.

chmod +x /etc/init.d/archivad

chkconfig –add archivad

chkconfig archiva on

 

#!/bin/bash
#
#Script to start/stop/status/restart archiva
# chkconfig: 35 20 80
# description: Archiva

ARCHIVA_PATH=/usr/local/archiva/bin

case “$1″ in
start)
${ARCHIVA_PATH}/archiva start
;;
stop)
${ARCHIVA_PATH}/archiva stop
;;
status)
${ARCHIVA_PATH}/archiva status
;;
restart)
${ARCHIVA_PATH}/archiva restart
;;
*)
echo $”Usage: $0 {start|stop|status|restart}”
exit 1
esac

Neue Festplatte installieren und einrichten

Um zusätzlichen Speicherplatz zu erhalten, ist es bei Linux (wie bei jedem anderen Betriebssystem) notwendig, eine zusätzliche Festplatte zu installieren. Man könnte auch die alte ersetzen, doch dann würde man das Betriebssystem wohl eher neu installieren. Um eine zusätzliche Festplatte unter Linux zu installieren, sind die folgenden Schritte notwendig:

1. Computer ausschalten und Gehäuse öffnen. Dann die Festplatte einbauen und an einen freien IDE-Anschluss anschließen. 2. Sobald die Festplatte eingebaut und angeschlossen ist, sollte sie beim Booten des Rechners automatisch erkannt werden. Um die Gerätedateien der Festplatte unter Linux herauszufinden, kann die folgende Liste verwendet werden: Primary Controller – Festplatte 1: /dev/hda Primary Controller – Festplatte 2: /dev/hdb Secondary Controller – Festplatte 1: /dev/hdc Secondary Controller – Festplatte 2: /dev/hdd

Man benötigt diese Informationen, um die neue Festplatte unter Linux einzurichten.

3. Nun, da wir wissen, wie unsere Festplatte unter Linux heißt (z. B. /dev/hdb), ist der nächste Schritt, die Platte mit fdisk zu partitionieren fdisk /dev/hdb

Die bevorzugte Methode ist es, die alten Partitionen auszuwählen und eine einzelne Linux-Partition hinzuzufügen. Wichtig ist, dass die Partition vom Typ 83 (Linux) ist.

   * Drücke "n", um eine neue Partition hinzuzufügen
   * Drücke "e", um die neue Partition zu einer primären Partition zu machen (abä¤ngig davon, wieviele Partitionen erstellt werden)
   * Drücke "1" für eine einzelne Partition
   * Gib den ersten Zylinder ein, z.B. "1"
   * Gib den letzten Zylinder ein, z.B. 1245 (abä¤ngig von der Größe der Festplatte)
   * Drücke "w", um die Partitionstabelle auf die Festplatte zu schreiben und fdisk zu beenden

4. Wenn die Partition erstellt ist, muss mit mkfs das Dateisystem erstellt werden. Wenn nur eine Partition erstellt wurde, dürfte diese beispielsweise /dev/hdb1 heißen. In diesem Fall ist mkfs /dev/hdb1

einzugeben, um ein Dateisystem zu erzeugen. Für mehrere Partitionen funktioniert das analog. Nach mkfs /dev/hdb1 wäre dann mkfs /dev/hdb2 usw. auszuführen, bis alle Partitionen mit einem Dateisystem versorgt sind.

Das neu erstellte Dateisystem sollte standardmäßig als Dateisystem vom Typ ext2 erstellt werden. Falls Du ein Dateisystem vom Typ ext3 (ext2 + Journal) haben möchtest, dann ist

tune2fs -j /dev/hdb1

für alle Partitionen und Dateisysteme auszuführen, die auf der Festplatte eingerichtet wurden.

5. Im nächsten Schritt ist ein Mountpoint zu erstellen, an dem die neue Festplatte gemountet werden soll. Das kann so geschehen: mkdir /dir

Das neue Dateisystem kann dann mit folgendem Befehl getestet werden:

mount /dev/hdc1 /dir -t ext3

Mit folgendem Befehl kann das Dateisystem wieder unmounted werden:

umount /dir

6. Zum Schluss ist noch ein Eintrag in /etc/fstab zu erstellen, der das neue Dateisystem beschreibt und es ermöglicht, dass es beim Booten des Rechners automatisch gemounted werden kann. Dies kann dann mit dem Befehl mount all

getestet werden.

In der fstab ist eine Zeile ähnlich dieser hinzuzufügen:

/dev/hdX# /dir/to/mount extY defaults 0 1

Dabei entspricht das X dem Buchstaben aus der o.g. Liste und # der Partitionsnummer. Y bezeichnet den Typ des Dateisystems (z.B. 2 für ext2 und 3 für ext3).

Verzeichniss mit Tar und GZIP archivieren und komprimieren

Endung: “tar”

Archive mit der Endung “tar” sind reine Zusammenfassungen von Dateien. Es wird die Verzeichnisstruktur gespeichert, der Inhalt aber nicht komprimiert. Weiterhin werden in einem Tar-Archiv zu jeder Datei die Rechte und Eigentümer gespeichert. Daher ist “tar” das bevorzugte Archivformat unter Linux bzw. Unix.

Ein “tar”-Archiv wird mit folgendem Befehl ausgepackt:

tar xfv [ARCHIVNAME].tar

Die Optionen bedeuten folgendes: “x” steht für extract, also auspacken, “f” für file (aus einer Datei) und “v” für verbose (gesprächig). Verwendet man statt “x” ein “c” (create), kann man Verzeichnis und/oder Dateien einpacken und ein eigenes Archiv erzeugen.

tar cfv [ARCHIVNAME].tar [VERZEICHNIS1] [VERZEICHNIS2] [DATEI1] [DATEI2]

Möchtest du dir den Inhalt eines Archives auflisten lassen, so verwendest du den Schalter “t”:

tar tfv [ARCHIVNAME].tar

Endung: “gz”

Eine Datei mit der Endung “gz” steht für eine mit gzip komprimierte Datei. Es kann jedoch nur eine einzige Datei komprimiert werden. Wenn du mehrere Dateien komprimieren möchtest, musst du aus diesen erst einmal ein Archiv erstellen (siehe oben). Der folgende Befehl komprimiert eine Datei:

gzip [DATEINAME]

Als Ergebnis erhält man die Datei namens “[DATEINAME].gz”. Genauso einfach kann man diese wieder dekomprimieren:

gunzip [DATEINAME].gz

Das Ergebnis ist wieder der ursprüngliche Dateiname [DATEINAME]. Das tar-Kommando kann übrigens komprimierte Archive erzeugen bzw. entpacken:

tar cfvz [ARCHIV].tar.gz [VERZEICHNIS1] [DATEI1]
tar xfvz [ARCHIV].tar.gz

Manchmal findet man übrigens Archive mit der Endung “tgz”. Das ist jedoch nichts anderes als “tar.gz”.

Endung: “bz2”

Die Handhabung einer Datei mit der Endung “bz2” verhält sich ähnlich wie bei einer “gz”-Endung. Der Vorteil von “bz2” sind die bedeutend kleineren Dateien. Beim Linux-Kernel oder ISO-Images sind es einige MB. Der folgende Befehl komprimiert eine Datei:

bzip2 [DATEI]

Das Ergebnis ist eine Datei namens “[DATEI].bz2”. Das Dekomprimieren funktioniert ähnlich:

bunzip2 [DATEI].bz2

Das tar-Kommando kann das Zusammenfassen und Komprimieren bzw. Dekomprimieren und Auspacken auch in einem Schritt erledigen:

tar cfvj [ARCHIV].tar.bz2 [VERZEICHNIS1] [DATEI1]
tar xfvj [ARCHIV].tar.bz2

Sollte das Entpacken einer *.tar.gz Datei mit dem tar-Kommando nicht funktionieren, gibt es auch noch eine andere, aber kompliziertere Möglichkeit:

gzip -dc [DATEI].tar.gz | tar xfv -

Der erste Befehl dekomprimiert die Datei und schickt das Ergebnis auf die sogenannte “Pipe”. Das tar-Kommando greift sich von dieser “Pipe” die Daten und entpackt diese. Die “Pipe” kann man sich wie eine Zwischenablage vorstellen.

Hinweis: Wenn man beim Kommando “tar” ein Minus vor die Optionen setzt, dann wird die Angabe für den Dateinamen (“f”) als letztes erwartet, z. B. “tar -xvzf datei.tgz”. Andernfalls gibt es eine Fehlermeldung.

Endung: “zip”

ZIP-Dateien wurden und werden noch immer hauptsächlich unter DOS bzw. Windows verwendet. Zum Datenaustausch zwischen Linux und Windows sollte dieses Format bevorzugt werden. Der folgende Befehl komprimiert einzelne Dateien:

zip [ARCHIV].zip [DATEI1] [DATEI2]

Möchte man hingegen Dateien in einer kompletten Verzeichnisstruktur archivieren, so lautet das Kommando:

zip -r [ARCHIV].zip [VERZEICHNIS1] [VERZEICHNIS2]

Mit dem folgenden Befehl kann man sich den Inhalt eines ZIP-Archivs ausgeben lassen:

unzip -l [ARCHIV].zip

Zuguterletzt kann ein ZIP-Archiv auch wieder entpackt werden:

unzip [ARCHIV].zip

Der ZIP-Algorithmus wird beispielsweise von OpenOffice.org verwendet, um die XML-Daten zu komprimieren.

Crontab

User Crontab

auflisten des User Crontabs

crontab -l

min hour day month weekday   command
*   10   *   *     *        /etc/cron.d/backup

Ändern des User Crontabs

crontab -e

min hour day month weekday   command
*   10   *   *     *        /etc/cron.d/backup

Systemweiter Crontab

nano /etc/crontab

min hour day month weekday   user    command

17   *    *   *      *       root    cd / && run-parts --report /etc/cron.hourly
25   6    *   *      *       root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47   6    *   *      7       root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52   6    1   *      *       root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

 

Beispiele

Wenn man z.B ein Backup jeden Tag un 23.30 Uhr laufen lassen will sieht der Crontab so aus:

min hour day month weekday   command
30   23   *   *      *       /home/backup/tar-backup

30 steht für eine halbe Stunde

weiterlesen …

Mails von der bash senden

Einfache Emails von der bash aus schicken bzw. mittels shellscripts:

   $ mail root < /tmp/db_reorg.log
   $ echo "Komme zum Abendessen!" | mail sylvia@home.de
   $ echo "Heinz kommt auch mit" |
       mail -c johana -s "Aw:Komme zum Abendessen!" sylvia@home.de

Das Mail Kommendo akzeptiert die folgenden Parameter,

-s subject Betreff

-c address sendet eine Kopie der Email an Benutzer X

-b address sendet eine blind carbon copy der Email an Benutzer X

 

Datei Anhänge

uuencode

Binärdateien per Mail zu senden ist nicht sinnvoll, man könnte zwar eine Datei als Anhang so versenden,

mail -s "bild vom Abendessen" sylvia@home.de < essen.jpeg

aber die Wahrscheinlichkeit, dass diese unbrauchbar ankommt ist sehr hoch.
Beim versenden der Emails werden diese von einen Server zum nächsten gereicht. Jeder davon verändert die Email, d.h. entfernen von Null Bytes (ASCII code 0), umwandeln der end-of-line character LF (“line-feed”, ASCII code 12) in ein lokal passendes Format (e.g. CR LF), oder es werden anführende Leerzeichen und TABS entfernt.

Da nur sehr wenige Zeichen sicher nicht verändert werden, ist die traditionelle Lösung die Email vom Binärformat in ein Textformat für die sichere Übertragung umzuwandeln. Das Programm welches dafür benutzt wird heist uuencode (“UNIX to UNIX encoding”), zum decodieren der Emailheist das Programm uudecode.

 

$ uuencode essen.jpeg essen.jpeg | mail sylvia@home.de

Mit Text und Betreff:

$ (cat mailtext; uuencode essen.jpeg essen.jpeg) |mail -s "bild vom Abendessen" sylvia@home.de

ACHTUNG: Der Dateiname essen.jpeg erscheint zweimal in dem uuencode Befehl: der erse spezifiziert die Input Datei, die zweite ist für die Gegenseite.

mime

Vorteile:

  • vielseitige Dateimöglichkeiten, u.a. Bilder, Audio Dateien
  • mehr als ein Anhang pro Email
  • multi-part Nachrichten

Mutt ist ein interaktiver textbasierender Emailclient.

$ mutt -s "Geburtstags Feier" -a citymap.jpg all@freunde.de < einladung.txt
  • Den Empfänger (“all@freunde.de”)
  • Den Body der Email (gelesen von der Standard Eingabe, hier umgeleitet von der Datei “einladung.txt”)
  • Ein Anhang (mit Option -a)
  • Den Betreff (option -s)

Der interessanteste Teil ist die Option -a, welche für den Anhang verantwortlich ist. Die option -a kann mehrfach angehängt werden.

Wenn nur ein Anhang ohne Betreff gesendet werden soll kann man folgendermassen vorgehen:

$ mutt -a syslogs.tar.gz admin@domain.org < /dev/null

oder

$ echo | mutt -a syslogs.tar.gz admin@domain.org

(m,a,c)time

mtime atim ctime Definition

  • mtime die Zeitangabe der letzten Modifikation
  • atime die Zeitangabe des letzten Zugrifes
  • ctime die Zeitangabe der letzten Änderung der Inode

mtime

Die mtime ist der Zeitpunkt zu dem die Datei oder das Verzeichniss zuletzt medifiziert wurde. Sie wird jedesmal vom Filessystem jedesmal updated, wenn etwas eine Änderung stattgefunden hat.

Um die mtime einer Datei anzuzeigen:

ls -l <filename>

atime

Die atime ist der Zeitpunkt an dem die Datei oder das Verzeichniss zuletzt aufgerufen wurde. Sie wird jedesmal aktualisiert, wenn eine Datei oder ein Verzeichniss mit einem Read oder Write Befehl aufgerufen wird.

Um die atime einer Datei anzuzeigen:

ls -lu <filename>

ctime

Die ctime ist der Zeitpunkt an dem die Datei oder das Verzeichniss zuletzt aufgerufen wurde und dabei die inode geändert wurde. Sie wird jedesmal aktualisiert, wenn eine Datei oder ein Verzeichniss mit einem permision, own, set link Befehl aufgerufen wird.

Um die ctime einer Datei anzuzeigen:

ls -lc <filename>

Mount.nfs: Stale NFS file handle

Um das Problem mit dem NFS Share zu beheben helfen folgende Schritte:

  • umount, remounten des Filesystems mit der Option -o

Aus der Man Page: -O Overlay mount. Allow the file system to be mounted over an existing mount point, making the underlying file system inaccessible. If a mount is attempted on a pre-existing mount point without setting this flag, the mount will fail,

             		 producing the error "device busy".

 

  • Killen oder Neustarten des NFS Prozesses
  • Einen neuen Mountpoint erstellen und das NFS Share dort einhängen
  • Client rebooten
  • umount -f /mount/point, danach remount

Prozesse killen mit xargs

Machmal ist es praktisch einen Prozess zu killen. Normalerweise sucht man dann die Prozess Id und setzt ein kill Prozessid bzw. kill -9 Prozessid ab.

Das geht aber wessentlich eleganter in einen Schritt mittels xarg und awk. Wollen wir z.B. denn SSH Daemon killen:

 #ps -ef |grep ssh| awk '{ print $2 }' |xargs kill -9
  • Mit ps -ef rufen wir die Prozessliste auf und filtern diese mittels grep nach ssh.
  • Das ganze wird über eine Pipe an awk übergeben, welches dann die zweite Spalte print $2 ausgibt.
  • Das Ergebniss sieht folgendermassen aus:

 

1519
10631
19829
19897
20030

Das wiederum übergeben wir an xargs kill -9. Xargs liest nun Zeile für Zeile aus und killt die entsprechenden Prozesse der Reihe nach.