Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news2.telebyte.nl!border2.nntp.ams.giganews.com!border1.nntp.ams.giganews.com!nntp.giganews.com!fu-berlin.de!uni-berlin.de!not-for-mail
From:
[email protected] (dcoul-FAQ Team)
Newsgroups: de.comp.os.unix.linux.infos,de.answers,news.answers
Subject: de.comp.os.unix.linux.infos - FAQ (section2)
Followup-To: poster
Date: Sat, 28 Aug 2004 13:42:35 +0000 (UTC)
Organization: dcoul-FAQ Team
Lines: 902
Sender: Andreas Metzler <
[email protected]>
Approved:
[email protected]
Expires: Sat, 2 Oct 2004 07:02:33 GMT
Message-ID: <
[email protected]>
References: <
[email protected]>
Reply-To:
[email protected]
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: news.uni-berlin.de xoAbGFKn7QJ3zm7jjk6VWAY/lQ8rzFnQ6G0UA0KFQLIClCy2Q=
Summary: This is the FAQ of the german newsgroup hierarchy
de.comp.os.unix.linux (dcoul). This article provides answers to
linux and usenet questions. The text is written in german.
User-Agent: mkPosting.pl by Thomas Nesges <
[email protected]>
X-Disclaimer: Approval for *.answers is based on form, not content.
Xref: senator-bedfellow.mit.edu de.comp.os.unix.linux.infos:3668 de.answers:10914 news.answers:275464
Archive-name: de/comp/linux/dcoul-faq/section2
Posting-frequency: monthly
Last-modified: 2004-08-28 15:39:58
Version: CVS revision 1.139
URL:
http://www.dcoul.de/faq/
http://www.dcoul.de/faq/
_________________________________________________________________
2. Allgemeine Linux-Fragen
2.1 Ich bekomme beim Compilieren die Meldung, es sei ein Signal 11
aufgetreten. Was bedeutet das?
Das weist h�ufig auf fehlerhafte Hardware hin (z.B. defekte oder zu
langsame Speicherchips). Zu Signal 11 gibt es eine ausf�hrliche FAQ
unter
http://www.bitwizard.nl/sig11/.
Enth�lt der Rechner einen AMD K6 �lterer Bauart und mehr als 32MB RAM,
kann es durch einen Fehler im Prozessor zum Auftreten des Signal 11
kommen. Der Fehler wird u.a. durch einige im gcc vorkommende
Codesegmente ausgel�st (der K6 h�lt die Sequenz f�lschlicherweise f�r
selbstmodifizierenden Code und behandelt sie falsch). Ab der
Prozessorrevision B9732 (auf dem Prozessor aufgedruckt) ist der Fehler
behoben. AMD hat f�r die Prozessoren mit dem Fehler einen Umtausch
angeboten.
2.2 Ich habe mir ein kleines Testprogramm compiliert, aber wenn ich es
aufrufe, passiert gar nichts. Warum?
Ein h�ufig unter Linux (und nat�rlich anderen Unix-Derivaten)
gemachter Fehler ist es, ein Programm test zu nennen. Es gibt ein
Systemkommando mit dem Namen test, das einen logischen Ausdruck
auswertet und mit dem man z.B. �berpr�fen kann, ob eine bestimmte
Datei existiert (und noch einiges mehr). Wenn man ein Programm test
nennt und es aufruft, wird der eingestellte Suchpfad (enthalten in der
Shellvariable PATH) von vorne nach hinten durchsucht, bis ein Programm
mit dem Namen test gefunden wird. Das Verzeichnis, in dem sich das
Systemkommando test befindet, steht in der PATH-Variable in der Regel
weiter vorne als das eigene Home- oder Arbeitsverzeichnis, so das
nicht das gerade selbst compilierte Programm ausgef�hrt wird, sondern
das System-test. Dieses erzeugt keine Ausgabe, sondern setzt, je nach
dem Ergebnis des als Parameter �bergebenen logischen Ausdrucks,
lediglich einen Fehlercode, den man in der Shell abfragen kann. Es
sieht also so aus, als ob das Programm nichts tut.
Bei manchen Shells ist test auch ein in die Shell integrierter Befehl,
so dass bei der Eingabe von test �berhaupt kein externes Programm
ausgef�hrt wird. Dies l�sst sich umgehen, indem das aufzurufende
Programm mit vollem Pfad (/foo/test) bzw. in dem entsprechenden
Verzeichnis mit ./test aufgerufen wird (vgl. auch Warum kann ich ein
Programm als normaler User starten, aber nicht als root?).
2.3 Warum kann ich ein Programm als normaler User starten, aber nicht
als root?
Wenn das Programm im aktuellen Verzeichnis steht, ist es
wahrscheinlich so, dass der Suchpfad f�r den normalen Benutzer das
Verzeichnis ".", d.h. das jeweils aktuelle Verzeichnis, enth�lt, der
Suchpfad f�r root aus Sicherheitsgr�nden aber nicht. Unter Linux/Unix
ist es standardm��ig so, dass das aktuelle Verzeichnis NICHT im
Suchpfad steht, da man andernfalls sehr einfach ein trojanisches Pferd
mit einem gebr�uchlichen Namen irgendwo ablegen k�nnte und nur darauf
warten m�sste, dass root im entsprechenden Verzeichnis (versehentlich)
das Programm startet. Bsp: ein trojanisches Pferd mit dem Namen sl (ls
als Dreher) in /tmp. Sobald root in /tmp w�re und versehentlich sl
statt ls tippt, kann das trojanische Pferd alles tun, was es m�chte,
da es Root-Rechte hat, so z.B. irgendwo eine SUID-root-Shell anlegen
o.�.
M�chte man das Programm trotzdem starten, kann man es explizit mit
voller Pfadangabe aufrufen (/foo/bar/Programm) oder in Kurzform mit
/Programm, da der Punkt f�r das aktuelle Verzeichnis steht.
2.4 Welche Libc-Version ist neuer: 5.4.4 oder 5.4.38?
Libc 5.4.38 ist neuer. Die verschiedenen Versionsteile bzw. minor
releases sind bei der libc immer durch Punkte getrennt, d.h. 38 ist
als achtunddrei�ig zu verstehen, nicht als drei acht.
2.5 Warum kann ich mich nicht als root �ber telnet einloggen?
Das ist ein Sicherheitsfeature. So wird verhindert, dass man direkt
mit einem Brute-Force-Attacke versuchen kann, das Root-Passwort
heraus- zubekommen. Man muss sich als normaler User einloggen und dann
mit su -l Root-Rechte erlangen, wobei das Root-Passwort abgefragt
wird. Ein Eindringling muss somit mindestens zwei Passworte knacken,
um root zu werden. Sinnvollerweise ist das Root-Passwort dabei
nat�rlich ein anderes als das User-Passwort.
Immer daran denken: wer selbst (z.B. �ber PPP) ins Netz kommt,
erm�glicht damit auch Anderen, an den eigenen Rechner zu kommen.
Telnet hat dabei ein grunds�tzliches Sicherheitsproblem: es �bertr�gt
auch die Kennworte im Klartext und erm�glicht es dadurch einem
Angreifer, vergleichsweise einfach an Kennworte zu kommen. Es ist
daher durchaus lohnenswert, sich Gedanken �ber die Verwendung eines
verschl�sselnden Verfahrens zu machen, z.B. SSH o.�., wobei telnet
dann vollst�ndig deaktiviert werden kann. Mit OpenSSH
<
http://www.openssh.com/> liegt inzwischen eine komplette freie
Implementierung des SSH-Protokolls vor. Sie wird inzwischen bei den
meisten Linuxdistributionen (bei Debian im Paket "ssh") mitgeliefert.
2.6 Warum kann ich meine CD nicht mehr aus meinem CD-Laufwerk nehmen?
Wenn eine CD mit dem Kommando mount in den Verzeichnisbaum eingebunden
ist (manche Distributionen machen das beim Booten automatisch, falls
eine CD eingelegt ist), ist der Auswurfknopf des Laufwerks gesperrt,
damit die CD nicht versehentlich entnommen werden kann. Dies hat
mehrere Gr�nde: Bei einem beschreibbaren Wechselmedium (MO, PD, ZIP
etc.) darf dieses erst entnommen werden, wenn alle Puffer auf das
Medium zur�ckgeschrieben wurden (Linux arbeitet mit Write-Cache, d.h.
Daten werden nicht immer sofort auf das Medium geschrieben, sondern
zun�chst nur im Hauptspeicher gesammelt und erst bei Bedarf auf das
Medium geschrieben). Erst nach dem Unmounten des Mediums (mit umount)
kann man sicher sein, dass die Daten auch wirklich geschrieben wurden,
so dass das System die vorherige Entnahme des Mediums verhindert.
Au�erdem wird so verhindert, dass einem anderen Prozess bzw. dessen
Benutzer, der noch Dateien auf dem Medium ge�ffnet hat, dieses
entzogen wird, was zu Programmfehlern und ggf. Datenverlust f�hren
w�rde. Wenn ein umount-Befehl ausgef�hrt wurde, kann man sicher sein,
dass keine Dateien auf dem Medium mehr ge�ffnet waren.
Der Befehl zum Unmounten lautet umount <Verzeichnis>, wobei
<Verzeichnis> dasjenige ist, in das die CD eingeklinkt wurde, in der
Regel /cdrom.
Einige �ltere CDROM-Laufwerke unterst�tzen die Verriegelung des
Auswurfknopfes nicht, dennoch sollte auch hier immer erst ein
umount-Kommando ausgef�hrt werden, bevor das Medium entnommen wird.
2.7 Warum kann ich keine ZIP-Disk mounten, obwohl der Kernel das
Laufwerk beim Booten ordnungsgem�� erkannt hat? Ich erhalte beim
Mountversuch lediglich die Meldung mount: wrong fs type, bad option,
bad superblock on /dev/hdc, or too many mounted file systems.
ZIP-Medien sind standardm��ig partitioniert wie eine Festplatte, d.h.
man muss beim Mounten die Partition und nicht nur das Ger�t angeben.
Gegeben sei ein ATAPI-ZIP als Master am sekund�ren Controller, also
w�re das ZIP-Laufwerk �ber /dev/hdc anzusprechen. Bei Medien von
Iomega ist die Partition an vierter Stelle in der Partitionstabelle
angelegt, d.h. der Mount-Befehl m�sste mount /dev/hdc4 /mnt lauten.
Bei Fremdherstellermedien kann die Partitionsnummer eine andere sein.
2.8 Was bedeutet die Meldung /dev/hdaX has reached maximal mount
count; check forced beim Booten?
Beim Booten wird normalerweise das Programm fsck (FileSystemChecK)
aufgerufen, welches �berpr�ft, ob die interne Struktur des
Dateisystems noch konsistent ist. Wenn Linux korrekt beendet wird und
die Platten sauber unmounted sind, wird auf der jeweiligen Partition
eine Markierung gesetzt, die alles ok besagt (Clean-Flag). Wenn diese
Markierung vorhanden ist, nimmt fsck beim n�chsten Aufruf keine
detaillierte �berpr�fung der Partition vor. Da sich eventuell aber
doch irgendwann ein Fehler eingeschlichen haben k�nnte, wird nach
einer gewissen Anzahl von Mountvorg�ngen (maximal mount count)
trotzdem eine Pr�fung durchgef�hrt, auch wenn die Markierung alles ok
signalisiert (daher die Meldung check *forced*). Die �berpr�fung kann
bei gro�en Partitionen mit vielen Dateien durchaus einige Minuten
dauern. Die Anzahl der Mountvorg�nge, nach denen zwangsweise ein
fsck-Lauf stattfindet, l�sst sich mit Hilfe des Programms tune2fs
einstellen.
2.9 Ich benutze f�r meinen Internetzugang ISDN mit SyncPPP (ipppd) und
Dial-On-Demand. Das funktioniert auch, aber nur einmal. Sobald die
Verbindung abgebaut wurde, wird sie nicht automatisch wieder
aufgebaut.
Beim Abbau der Verbindung wird vom ipppd die Defaultroute auf das
ISDN-Interface gel�scht, so dass weitere IP-Pakete keinen neuen
Verbindungsaufbau triggern k�nnen, da sie mangels Route nicht auf das
ISDN-Interface geleitet werden. Abhilfe: in /etc/ppp/ip-down die
Defaultroute wieder auf das ISDN-Interface setzen. /etc/ppp/ip-down
wird vom ipppd nach dem Abbau der Verbindung automatisch ausgef�hrt.
2.10 Wie kann ich ein ext2-Dateisystem defragmentieren?
Es gibt dazu ein Programm im Alphastadium auf sunsite.unc.edu,
allerdings wird von der Benutzung regelm��ig abgeraten, sowohl wegen
der damit verbundenen Gefahren als auch aus grunds�tzlichen
Erw�gungen, welche ein Text von Kristian Koehntopp erkl�rt, zu finden
in der SuSE-Support-Datenbank unter
http://sdb.suse.de/sdb/de/html/ext2frag.html.
2.11 In meiner Shell kann ich keine Umlaute eingeben und die Del/Entf-
Taste arbeitet nicht so, wie sie soll (das Zeichen unter dem Cursor
l�schen). Wie kann ich das �ndern?
Das l�sst sich (zumindest f�r die Standard-Shell unter Linux, die
bash) �ndern, in dem man in die Datei .inputrc im Homeverzeichnis die
folgenden Zeilen eintr�gt:
set meta-flag on
set convert-meta off
set output-meta on
"\e[3~": delete-char
Bei halbwegs aktueller bash (bzw. readline) gen�gt es, stattdessen die
locales richtig zu setzen, z.B. LC_CTYPE=de_DE.
2.12 Warum kann ich ein RPM-Paket, das ich gerade mit rpm -i
foo-1.0-1.i386.rpm installiert habe, nicht mit rpm -e
foo-1.0-1.i386.rpm wieder deinstallieren? RPM meldet nur: package
foo-1.0-1.i386.rpm is not installed.
RPM unterscheidet zwischen dem Namen der Datei und dem Namen des
Paketes. Dies erm�glicht es z.B., ein RPM-Paket auch mit verk�rztem
Namen auf einer DOS-Diskette abzuspeichern und es trotzdem mit dem
korrekten Namen zu installieren. Der Name des Paketes ist in der Datei
abgelegt und kann mit rpm -qp foo-1.0-1.i386.rpm abgefragt werden. Im
vorgenannten Beispiel soll das Paket foo-1.0-1 hei�en, so dass die
Deinstallation einfach mittels rpm -e foo-1.0-1 oder auch mit der
Kurzform rpm -e foo (Weglassen der Versionsnummern) erfolgen kann.
2.13 Wie kann ich auf der Kommandozeile (d.h. ohne X-basierte
Programme verwenden zu m�ssen) ftp �ber einen Proxy benutzen?
In diesem Fall bietet sich Lynx an. Lynx ist ein Webbrowser f�r die
Textkonsole, der auch ftp �ber ftp-f�hige http-Proxies beherrscht. Um
Lynx den passenden Proxy bekanntzumachen, muss man lediglich die
beiden Shell-Variablen http_proxy und ftp_proxy auf die URL des
jeweiligen Proxies setzen, z.B. so:
bash> export http_proxy=
http://mein.http.proxy.de:8080/
bash> export ftp_proxy=
http://mein.http.proxy.de:8080/
Alternativ kann man die Proxies f�r lynx auch in /etc/lynx.cfg setzen.
Eine andere M�glichkeit ist die Verwendung des Programms wget, das
entgegen seinem Namen nicht nur mit Web- sondern auch mit ftp-Servern
und entsprechenden Proxies umgehen kann.
2.14 Bei Anleitungen zur Netzwerkkonfiguration findet man h�ufig
Angaben wie 192.168.1.0/24. Was bedeutet das /24?
Es handelt sich hier um eine Kurzschreibweise der Netzmaske. Die Zahl
steht f�r die Anzahl der 1-Bits, die in der Netzmaske den Netzwerkteil
der davorstehenden Adresse angeben. In diesem Beispiel sind es 24
1-Bits, die Netzmaske ist also in bin�rer Schreibweise
11111111.11111111.11111111.00000000 bzw. dezimal 255.255.255.0.
2.15 Warum werden Textdateien im Querformat (jeweils 2 Seiten auf
einem A4-Blatt) gedruckt und wie kann man das �ndern?
Das ist abh�ngig von der Konfiguration des Druckerfilters. Bei
Systemen, die Apsfilter verwenden (z.B. SuSE), kann man das in der
Datei /etc/apsfilterrc konfigurieren. Dort gibt es einen Eintrag
FEATURE, bei dem die verschiedenen M�glichkeiten in den
Kommentarzeilen beschrieben sind.
2.16 Wie kann ich auf meine DOS-formatierten Disketten zugreifen?
Eine Diskette ist f�r Linux prinzipiell nichts anderes als jeder
andere Datentr�ger, d.h. man kann eine Diskette genauso mounten, wie
eine Festplattenpartition. In diesem Fall muss nur der passende
Dateisystem-Typ angegeben werden, also z.B. so:
mount -t vfat /dev/fd0 /mnt/floppy.
Dabei steht vfat f�r lange Dateinamen in Windows95-Art und das
Verzeichnis /mnt/floppy muss existieren. Vor dem Entnehmen der
Diskette muss diese _unbedingt_ mittels umount /mnt/floppy wieder
unmounted werden, sonst kann es zu Datenverlusten kommen ! Da es doch
recht umst�ndlich ist, auf diese Art auf Disketten zuzugreifen, gibt
es die mtools. Das sind Befehle, die den wichtigsten DOS-Befehlen mit
einem vorangestellten m entsprechen, also z.B. mdir, mcopy, mtype etc.
Damit kann man, ohne die Diskette mounten zu m�ssen, z.B. eine Datei
von Diskette auf die Platte kopieren: mcopy A:foo.txt /tmp/.
2.17 Wie kann ich LILO wieder aus dem MBR entfernen?
Am einfachsten ist es, MS-DOS zu booten und fdisk /MBR aufzurufen.
Eine hinreichend neue DOS-Version vorausgesetzt, wird damit der MBR
mit dem Standard-Bootblock �berschrieben. Diese Funktion von fdisk ist
AFAIK nicht offiziell dokumentiert und funktioniert mit einigen
fdisk-Versionen nicht.
Bei WindowsXP sollte es gen�gen (ungetestet), von der XP
Installations-CD zu booten und anschlie�end folgend Schritte
auszuf�hren: Installation reparieren (R), Reparaturkonsole w�hlen (K),
Partition w�hlen (1), FIXMBR und FIXBOOT starten.
Soweit unter Linux ein Backup des Original-Bootblocks vorhanden ist,
kann dieser auch unter Linux wie im Manual zu lilo beschrieben per dd
oder mit lilo -u wieder installiert werden.
2.18 Wie kann ich auf meinen Streamer zugreifen?
H�ufig wird gefragt, wie denn ein Streamerband gemounted werden kann.
Die Antwort ist recht einfach: gar nicht (zumindest nicht unter
Linux).
Ein Streamer ist unter Linux ein sogenanntes Character-Device, d.h. es
gibt darauf kein Dateisystem, das man mounten k�nnte. Zum Schreiben
auf und zum Lesen vom Band verwendet man entsprechende Programme, z.B.
tar und cpio. F�r diese Programme ist ein Streamer eine Blackbox, d.h.
dass z.B. tar nicht wei�, an welche Stelle auf dem Band gerade
geschrieben wird und tar kann das Band auch nicht vor- oder
zur�ckspulen. F�r Bandoperationen (vor- oder zur�ckspulen, l�schen,
Suchen einer bestimmten Bandstelle, etc.) gibt es das Programm mt
(magnetic tape). F�r mt ist das Band wiederum eine Blackbox: mt kennt
nicht die Daten auf dem Band, es kennt aber z.B. die Position des
Bandes. Tar und mt erg�nzen sich daher.
Bei beiden Programmen muss man das zum Streamer geh�rende Device
angeben. Wie das Device hei�t, h�ngt von der Art des Streamers ab. Der
erste SCSI-Streamer im System hei�t /dev/st0, ein QIC-80- oder
Travan-Floppystreamer wird �ber /dev/ftape angesprochen und einer der
bisher noch recht seltenen ATAPI-Streamer hei�t z.B. /dev/hdb, d.h. er
erh�lt die Bezeichnung, die eine Festplatte an gleicher Stelle
erhalten w�rde. Bei den Device-Bezeichnungen muss noch eine wichtige
Unterscheidung getroffen werden: die bisherigen Beispiele sind
sogenannte rewinding devices, d.h. nach dem Ende jeder Schreib- oder
Leseoperation wird das Band automatisch an den Anfang zur�ckgespult,
so dass ein weiterer Schreibvorgang die vorhandenen Daten
�berschreiben w�rde. M�chte man, dass das Band nach dem Ende eines
Schreib- oder Lesevorgangs an der Stelle stehen bleibt, an der es
zuletzt war, muss als Device das entsprechende nonrewinding device
angegeben werden, also z.B. /dev/nst0 oder /dev/nftape.
Wie bekommt man jetzt die Daten aufs Band? Dazu ein Beispiel mit einem
SCSI-Streamer:
* Zur�ckspulen des Bandes, falls noch nicht erfolgt:
bash> mt -f /dev/st0 rewind
* Sichern des Verzeichnisses /etc auf den Streamer:
bash> cd /; tar -cvf /dev/st0 etc/
Da als Device /dev/st0 angegeben ist, wird das Band anschlie�end
automatisch zur�ckgespult.
* Vergleich der geschriebenen Daten:
bash> tar -dvf /dev/st0
Die Option -dv bei tar bewirkt, dass die jeweils gerade �berpr�fte
Datei auf dem Bildschirm ausgegeben wird. Falls eine Abweichung
zwischen Band und Platte festgestellt wird, gibt tar eine
entsprechende Meldung aus.
2.19 In /var/log/messages erscheint regelm��ig der Eintrag -- MARK --.
Was hat das zu bedeuten?
Mit diesem Eintrag zeigt der Syslogd, welcher f�r das Protokollieren
von Systemereignissen zust�ndig ist, an, dass er noch l�uft. Das
Zeitintervall zwischen den Eintr�gen l�sst sich beim Aufruf des
Syslogd mittels des Parameters -m Intervall einstellen bzw. mit dem
Intervall 0 ganz abschalten.
Einige Syslogd-Versionen unterdr�cken den Eintrag, wenn w�hrend des
Intervalls andere Ereignisse protokolliert wurden, so dass er nur
erscheint, wenn ansonsten keine Lebenszeichen des Syslogd sichtbar
w�ren.
2.20 Wie ist das mit den Locales?
Locales sind Konfigurationsdateien, die den Rechner an nationale
Gegebenheiten anpassen sollen. Dazu gibt es Dateien, die Informationen
�ber nationale oder regionale Besonderheiten enthalten, u.a. die
Sprache, das Zahlen-, das Datums- und das Zeitformat sowie den
verwendeten bzw. darstellbaren Zeichensatz. Sind die Locales
unvollst�ndig oder nicht richtig konfiguriert, werden sehr restriktive
Defaults verwendet, die z.B. nur die Anzeige von 7 bit us-ascii
Zeichen erlauben. Die Konfiguration, welche Locale-Einstellungen
verwendet werden sollen, erfolgt durch folgende Environmentvariablen.
Umgebungsvariablen setzt man entweder mit export VARIABLE=WERT (bash)
oder setenv VARIABLE WERT (tcsh).
1. $LC_ALL Diese Variable �berschreibt alle weiter unten erl�uterten.
Deshalb sollte man sie tunlichst ungesetzt lassen, und die anderen
Variablen verwenden.
2. $LC_CTYPE Diese Variable gibt an, welche Zeichen / welcher
Zeichensatz auf dem aktuellen Terminal verwendet werden kann. Wenn
diese Variable nicht korrekt gesetzt ist, geben viele Programme
z.B. statt Umlauten nur Fragezeichen aus.
3. $LC_COLLATE Damit kann man die Sortierreihenfolge beeinflussen. Im
Locale de_DE beispielsweise ist � gleichwertig zu a zu behandeln.
(ab,�b,ac)
4. $LANG Der hier eingestellte Wert wird f�r die anderen LC-Variablen
verwendet, sofern nicht diese selbst oder LC_ALL gesetzt sind.
Einige wenige Programme wie man werten diese Variable auch direkt
aus.
5. $LC_TIME Diese Variable gibt an, in welchen Formaten Datum und
Zeit ausgegeben werden sollen.
6. $LC_NUMERIC Gibt an, wie Zahlen, die keine Geldbetr�ge sind,
formatiert werden sollen. (z.B. '.' oder ',' als Dezimaltrenner)
7. $LC_MONETARY Das selbe wie vorhin, diesmal allerdings f�r
Geldbetr�ge.
8. $LC_MESSAGES Gibt an, in welcher Sprache Programme ihre
Nachrichten ausgeben sollen. Das hat nichts mit automatischer
�bersetzung o.�. zu tun, sondern ein Programm muss f�r jede
Sprache die es unterst�tzen soll, entsprechend vorgesehen sein.
Deshalb werden durch setzen dieser Variable l�ngst nicht alle
Nachrichten in Deutsch ausgegeben. Teilweise sind die
�bersetzungen auch nicht sehr gelungen.
Ich pers�nlich setze nur LC_CTYPE, aber das ist eine Sache des pers.
Geschmacks.
F�r deutsche Einstellungen m�ssen die Variablen auf "de_DE" gesetzt
werden.
Anmerkung: Bei manchen Distributionen m�ssen die Locales selbst
kompiliert werden. Bei Debian (ab woody) macht man das am einfachsten
mittels dpkg-reconfigure locales, alternativ kann man die gew�nschten
locales auch direkt in /etc/locale.gen eintragen und danach als root
das Programm locale-gen ausf�hren.
2.21 Wie [l�sche/verschiebe/bearbeite] ich Dateien, die mit -
beginnen?
Das h�ngt vom Programm ab. Oft zum Erfolg f�hrt, nach dem letzten
echten Parameter -- und dann den Dateinamen anzugeben. Also etwa so:
$ touch -file
touch: invalid option -- i
Try touch --help' for more information.
$ touch -- -file
nikratio:~/foo$ ls
-file
$ rm -file
rm: invalid option -- l
Try rm --help' for more information.
$ rm -- -file
$ ls
Eine weitere M�glichkeit ist, vor dem Dateinamen das Verzeichnis
einzugeben, also z.B. rm ./-file oder rm /home/me/-file.
2.22 Ich ben�tige die Datei foo.bar, welches Paket muss ich
installieren?
Das kommt auf die Distribution an:
* Debian: Auf den CDs und dem ftp-Server befindet sich im
Verzeichnis dists/$Version/ die Datei Contents-$arch.gz, die
einfach mittels zgrep durchsucht werden kann.
zgrep foo.bar /cdrom/dists/potato/Contents-i386.gz
Alternativ kann man auch die untere Suchmaske ("Search the
contents of packages") im Formular <
http://packages.debian.org/>
auf Debians WWW-Site verwenden.
* SuSE: YaST bietet die Funktion Paketauskunft.
* RedHat: Installiert man das Paket rpmdb-redhat (ab RedHat Version
6.2 enthalten), kann man mittels
rpm -qf `rpm -qla --define '_dbpath
/usr/lib/rpmdb/%{_arch}-%{_vendor}-%{_os}/redhat' |
grep gesuchte.Datei` --define '_dbpath
/usr/lib/rpmdb/%{_arch}-%{_vendor}-%{_os}/redhat'
das entsprechende Paket finden.
* Alternative f�r alle rpm-basierten Distributionen: Man erzeugt
selbst eine Liste, indem man die Installations-CDs (DVD) der Reihe
nach einlegt, mountet und anschlie�end
find /mnt/cdrom -type f -name "*.rpm" -print |
{ while read paketdatei ; do
paket=`basename $paketdatei`
rpm -qpl "$paketdatei" | sed -e "s/$/ $paket/"
done
} >> ~/InhaltallerCDs
aufruft. Jetzt kann man die Liste einfach mittels
grep gesuchte.Datei ~/InhaltallerCDs durchsuchen.
2.23 Wie kann ich mit einem Kommandozeilenprogramm Mails mit
MIME-Attachment verschicken?
* mutt -n -F /dev/null -s "Anhang" -a Datei email@adresse <
/dev/null
* mpack -s "Anhang" Datei email@adresse
* nail -s "Anhang" -a Datei email@adresse < /dev/null
* metasend -b -s "Anhang" -f Datei -t email@adresse -m
application/octet-stream
* uuenview -b -s "Anhang" -m email@adresse Datei
2.24 Manchmal f�ngt die Festplatte aus heiterem Himmel an zu rattern -
und erst nach einigen Minuten ist der Spuk wieder vorbei.
Daf�r ist in aller Regel ein Cronjob verantwortlich. Es handelt sich
hierbei um regelm��ige Aufr�umarbeiten (z.B. im Spool eines Proxies,
Newsservers oder in den Logfiles) und Aktualisierungen (so wird z.B.
f�r das Tool locate mit updatedb eine Datenbank erstellt). Mit top und
pstree l�sst sich das genauer feststellen.
Sofern nicht anacron eingesetzt wird, wird die Festplatte immer zur
selben Uhrzeit aktiv werden. Anacron hingegen richtet sich nicht nach
Uhrzeiten, sondern verrichtet seinen Dienst t�glich, w�chentlich, oder
wie auch immer gew�nscht.
2.25 Wie kann ich Audio-CDs mounten?
Das ist normalerweise nicht n�tig, da sowohl Programme zum Abspielen
der CD wie z.B. xmms <
http://www.xmms.org/> als auch solche zum
digitalen Grabben (cdparanoia, cdrdao) direkt auf das Device
zugreifen.
Sollte diese Antwort nicht �berzeugend genug sein, bietet sich cdfs
<
http://www.elis.rug.ac.be/~ronsse/cdfs/> an.
2.26 Beim Versuch, ein rpm-Paket zu installieren, erhalte ich die
Fehlermeldung only packages with major numbers <= 3 are supported by
this version of RPM.
Das Paket wurde mit der neuen Version 4 von rpm gebaut, deine Version
kann mit dem ge�nderten Format aber nichts anfangen. Der Hersteller
deiner Distribution stellt dir vermutlich ein Update auf rpm Version
3.0.5 bereit, das auch mit dem rpm4-Format umgehen kann.
Siehe auch Red Hat, Inc. Product Enhancement Advisory RHEA-2000:051-01
<
http://www.redhat.com/support/errata/RHEA-2000-051.html> "New version
of rpm required to install Red Hat updates" bzw.
http://sdb.suse.de/sdb/de/html/thallma_rpm_40.html.
RedHat empfiehlt inzwischen in RHSA-2001:016-03
<
http://www.redhat.com/support/errata/RHSA-2001-016.html> f�r alle
Versionen von RedHat Linux das Update auf RPM4.
Vorsicht, obwohl RedHat und SuSE beide RPM-basiert sind, unterscheiden
sie sich in bestimmten Punkten, wie Paketnamen und Pfaden, so dass ein
RedHat-RPM auf einem SuSE-System (und vice versa) laufen kann, aber
nicht muss. Vor allem bei den Abh�ngigkeiten wird es aufgrund der
unterschiedlichen Paketnamen Probleme geben.
Wenn man sich nicht mit den entstehenden Problemen herumschlagen will,
so sollte man nur zur Distribution passende Pakete installieren.
2.27 Wie kann ich einem Netzwerkinterface mehrere IP-Adressen
zuweisen?
Sofern dein Kernel mit "IP Aliasing" unterst�tzt, gen�gt
beispielsweise
ifconfig eth0:0 127.0.8.15, um eth0 zus�tzlich die IP-Adresse
127.0.8.15 zuzuweisen.
Genauer steht das in
Kernelquelltext/Documentation/networking/alias.txt.
2.28 Ich habe mein Root-Passwort vergessen, wie komme wieder in mein
System?
Du �bergibst (wie BootPrompt-HOWTO beschrieben) am lilo-Bootprompt
zus�tzlich den Parameter init=/bin/sh, gibst dann mit mount -n -o
remount,rw / das Rootfilesystem zum Schreiben frei und setzt das
Passwort mittels passwd wieder auf einen bekannten Wert. Mounte
anschlie�end mit mount -n -o remount,ro / das Rootfilesystem wieder
readonly und boote neu.
Das passwd-Kommando liegt �blicherweise in /usr/bin/, und daher
eventuell nicht auf der Rootpartition, in diesem Fall musst du auch
diese Partition h�ndisch mittels mount -n -r /usr mounten.
W�hrend der ganzen Prozedur hast du normalerweise keine deutsche
Tastaturbelegung, w�hle daher ein Passwort ohne Sonderzeichen.
"/" liegt auf "-", "-" auf "�" und "=" auf der Akzent-Taste, zwischen
Backspace und �.
2.29 Wenn ich versuche, ein Programm auszuf�hren, bekomme ich immer
die Meldung PROGRAMMNAME: No such file or directory (obwohl das
angegebene Programm tats�chlich existiert), Backslash found where
operator expected at ... oder : command not found.
Es handelt sich bei dem Programm h�chstwahrscheinlich um ein Script.
Ein Script liegt immer als Textdatei vor. Die Textdateien unter Unix
und DOS/Windows sind nun aber verschieden aufgebaut (sie verwenden
einen anderen Zeichensatz und andere Zeilenendezeichen). Da Entpacker
Textdateien oft an die Gegebenheiten des laufenden Betriebssystems
anpassen, sind diese dann unter einem anderen Betriebssystem nicht
mehr direkt lesbar.
Du kannst jetzt entweder alle Textdateien mit recode ibmpc..latin1
dateiname ins Linuxformat konvertieren, oder, wenn es sich um ein
Linuxarchiv (tar.gz, tgz, tar, tar.bz2) handelt, das Paket direkt
unter Linux entpacken beziehungsweise deinem Windowsentpacker das
konvertieren abgew�hnen.
Handelt es sich um ein Archiv f�r Windows, musst du einen
Linuxentpacker auftreiben, der ebenfalls automatisch konvertiert, oder
aber besser unter Windows entpacken und dann manuell konvertieren.
2.30 Ich habe ein Shell-Skript geschrieben, das als root laufen muss,
dazu habe ich mit chmod u+s script.sh das SUID-Bit gesetzt, es hat
aber anscheinend keine Wirkung.
Aus Sicherheitsgr�nden ignoriert Linux das SUID-Bit bei Skripts. Es
gibt eine Race-Condition, zuerst �ffnet der Kernel die Datei, um
herauszufinden mit welchem Interpreter das Skript ausgef�hrt werden
soll (das steht hinter #! in der ersten Zeile), dann �ffnet der nun
Set-ID laufende Interpreter das Skript. In der Zeit dazwischen kann
das Skript ver�ndert worden sein.
Es gibt mehrere L�sungsans�tze:
* Du verwendest ein Programm wie super oder sudo, das es erm�glicht,
bestimmte Kommandos zum Ausf�hren als root freizugeben. Folgender
Eintrag in /etc/super.tab erlaubt beispielsweise mason und dixon
den Rechner mit super apm in den Standbymodus zu schalten:
apm "/usr/bin/apm -s" uid=root nargs=0\
info="Suspend-mode" mason dixon
* Du verwendest perl als Skriptsprache, siehe perlsec (1p).
* Du schreibst ein Programm statt eines Skripts.
2.31 Ich suche ein Notfall-Linux, das m�glichst auf eine Diskette
passen sollte.
Hier eine unvollst�ndige Liste:
* Floppix
http://floppix.ccai.com/
* muLinux
http://sunsite.auc.dk/mulinux/
* CClinux
http://www.cclinux.org/
* Trinux
http://www.trinux.org/
* Tomsrtb
http://www.toms.net/rb/
Auf der letzten Seite gibt es noch mehr Links zu anderen
Linux-Systemen auf Floppy.
2.32 Wo kann ich ISO-Images von SuSE Linux herunterladen?
Nirgends, SuSE gibt nur CD-Images der Live-Eval-Version zum Download
frei, die direkt von CD l�uft und nicht installiert wird. Die
Begr�ndung ist unter
ftp://ftp.suse.com/pub/README.iso-images.deutsch
nachzulesen.
Es besteht allerdings die M�glichkeit, SuSE ohne CD direkt per ftp zu
installieren, dies ist in
http://sdb.suse.de/sdb/de/html/lmuelle_suselinux_internet.html
<
http://sdb.suse.de/sdb/de/html/lmuelle_suselinux_internet.html>
genauer erkl�rt.
2.33 Wie installiert man Programme aus dem Internet richtig? Alle
meine Versuche mit ./configure, make, make install sind bisher
gescheitert.
I.d.R. handelt es sich dabei um gepackte Archive im tar.gz- oder
tar.bz2-Format (sog. Tarballs), die zun�chst entpackt werden m�ssen:
tar -xvzf archivname.tar.gz
tar -xv --bzip2 -f archivname.tar.bz2
Nun solltest Du nachsehen, was hierbei genau entpackt wurde. Denn:
Tarballs enthalten nicht zwangsl�ufig Sourcecode, der compiliert
werden will. Und nicht alle Programme werden auf die gleich Weise
installiert. Meist ist eine Datei INSTALL und/oder README vorhanden,
in der der Programmautor erkl�rt, was zu tun ist.
Oft bricht die Installation ab, da angeblich etwas fehlt - obwohl man
sich sicher ist, dass dies vorhanden ist:
* Zu fast allen Libs existieren sog. "devel"-Pakete;
Entwicklerpakete, die zum Compilieren anderer Software ben�tigt
werden. Wer z.B. die GTK-Libs installiert, mu� - um GTK-Programme
nicht nur ausf�hren, sondern auch compilieren zu k�nnnen - das
separat erh�ltliche GTK-Devel-Paket seiner Distribution
installieren. Ein anderes Beispiel ist in der Frage �ber fehlende
X11-Dateien zu finden. Der Punkt Ich ben�tige die Datei foo.bar,
welches Paket muss ich installieren? in der FAQ hilft dir
vielleicht, das n�tige Paket selbst zu finden.
* Wer Libs selber installiert (und kein fertiges Distributionspaket
einsetzt), mu� den Pfad zu diesen in der Datei /etc/ld.so.conf
eintragen (mit Ausnahme von /lib und /usr/lib). Existieren
verschiedene Versionen der gleichen Lib, so wird sp�ter jene
zuerst gefunden, deren Pfad in dieser Datei zuerst eingetragen
ist. Allerdings werden Libs nicht anhand den Eintr�gen in
ld.so.conf gefunden - vielmehr wird /etc/ld.so.cache gefragt.
Erstellt und aktualisiert wird diese Datei mittels dem Tool
ldconfig anhand der ld.so.conf.
* Ein weiterer Lauf von ./configure durchsucht nur dann wirklich das
System auf Ver�nderungen, wenn zuvor die Datei config.cache
gel�scht wurde.
Ein Blick in Wie werde ich selbst kompilierte Software wieder sauber
los vor dem Aufruf von make install ist empfehlenswert.
2.34 Wie werde ich selbst kompilierte, mit make install installierte
Software wieder sauber los.
Wenn du das Makefile des Programms noch hast, kannst du es mit make
uninstall probieren, sonst bleibt dir nur h�ndisches Suchen, es sei
denn, du hast schlauerweise schon beim Installieren Vorkehrungen
getroffen, und z.B. einen der folgende Vorschl�ge befolgt.
* Verwende Software wie stow <
http://www.gnu.org/software/stow/>,
graft <
http://www.gormand.com.au/peters/tools/graft/graft.html>
oder depot <
http://andrew2.andrew.cmu.edu/depot/>, welche die
Software in eigene separate Verzeichnisse ablegt.
* Erzeuge Pakete im Paketformat deiner Distribution und installiere
diese.
Siehe RPM-HOWTO, Maximum RPM <
http://www.rpm.org/max-rpm/>, Debian
New Maintainers' Guide <
http://www.de.debian.org/doc/maint-guide/>
und Debian Policy Manual
<
http://www.de.debian.org/doc/debian-policy/>
Ein kleiner Tipp noch: Erzeuge die RPM- oder DEB-Pakete nicht als
root sondern als normaler User, so kannst feststellen, ob die
entsprechenden Skripts den Fehler haben, die Dateien direkt ins
root-Dateisystem zu kopieren, anstatt in das Verzeichnis, in dem
das Paket gebaut wird. Bei Debian musst du dazu fakeroot verwenden
und bei rpm folgende Zeile in ~/.rpmmacros aufnehmen
%_topdir /ein/beliebiges/Verzeichnis
und (zumindest) die Verzeichnisse BUILD, RPMS/i386, RPMS/noarch,
SOURCES, SPECS und SRPMS unter /ein/beliebiges/Verzeichnis
anlegen.
* Installwatch <
http://asic-linux.com.mx/~izto/installwatch.html>
zeichnet auf, welche Dateien bei make install hinzugef�gt werden.
* CheckInstall <
http://asic-linux.com.mx/~izto/checkinstall/>
verwendet Installwatch, um automatisch rpm- oder Slackware-Pakete
zu erstellen.
2.35 Wie kann ich verhindern, dass ich die Ausgabe bestimmter cronjobs
per Mail zugestellt bekomme.
Du kannst die Ausgabe des Kommandos nach /dev/null umleiten:
08 15 * * * /pfad/zu/blabla > /dev/null
Mit
08 15 * * * /pfad/zu/blabla > /dev/null 2>&1
leitest du zus�tzlich auch eventuelle Fehlermeldungen um, die auf
Stderr ausgegeben w�rden. Dies l�sst sich auch sch�ner mit gezieltem
(mehrfachen) Setzen von MAILTO erreichen:
MAILTO="
[email protected]"
47 11 * * * job/mit/interessanter/Ausgabe
#
MAILTO=""
* * * * * job/mit/laestigen/Meldungen
2.36 Ich erhalte die Fehlermeldung Argument list too long, wenn ich in
einem Verzeichnis mit sehr vielen Dateien mit rm * versuche, alle
Dateien zu l�schen.
Im Linuxkernel gibt es eine Beschr�nkung f�r die L�nge der
Kommandozeile, bei rm * ersetzt die shell den * durch die Dateinamen
und ruft rm mit dieser langen Liste als Argument auf.
Es gibt mehrere L�sungsm�glichkeiten daf�r:
* Eine Schleife: for i in *; do rm "$i"; done
Hier wird der * von der Shell intern aufgel�st und rm f�r jede
einzelne Datei separat aufgerufen (langsam!).
Wichtig sind die doppelten Anf�hrungszeichen um $i, sonst w�rde rm
Dateinamen mit beispielsweise Leerzeichen f�r zwei kurze
Dateinamen halten, probiere es mal aus:
touch "mit Leerzeichen"; rm mit Leerzeichen
* Die schnellste, bitte nicht erschrecken:
find ./ -type f -maxdepth 1 -print0 | xargs -r0 rm
find ./ -maxdepth 1 -mindepth 1 -name ".*" -or -print0 | xargs -r0
rm
find sucht im aktuellen Arbeitsverzeichnis (./), steigt nicht in
Unterverzeichnisse ab, um dort weiterzusuchen (-maxdepth 1),
ignoriert aber "./" selbst (-mindepth 1), versteckte Dateien, d.h.
die welche einen Punkt als erstes Zeichen im Dateinamen haben,
werden ignoriert -name ".*", die Namen der anderen werden auf
Stdout ausgegeben, dabei werden die einzelnen Dateinamen durch ein
"null character" getrennt (-or -print0).
xargs liest diese Liste auf Stdin, teilt sie in gerade so gro�e
Teile, dass die Kommandozeile nicht zu lang wird, und ruft dann
jedesmal rm mit diesen kurz genugen Teillisten als Argument auf.
-r steht f�r --no-run-if-empty und erspart uns eine Fehlermeldung,
wenn das Verzeichnis leer w�re und find keine Dateien f�nde. Sonst
w�rde n�mlich xargs rm einmal ohne Argumente aufrufen.
-print0 und -0 sind wieder n�tig, um auch Dateinamen mit
Leerzeichen korrekt zu behandeln, sonst w�rde xargs auch bei
Leerzeichen splitten. Diese L�sung ist nicht portabel, d.h. sie
l�uft praktisch nur mit GNU-find und -xargs, wie es bei
Linuxsysteme �blicherweise Verwendung findet. Die Implementationen
von find auf anderen unixartigen Systemen verstehen diese Optionen
meist nicht, und man muss eine der anderen hier aufgef�hrten
L�sungen verwenden.
* find ... -or -exec rm '{}' ';' find findet wieder dieselben
Dateien wie oben, anstatt aber deren Namen auszugeben, ruft es
wieder f�r jede einzelne Datei einmal rm auf. ({} wird jeweils
durch den Namen der Datei ersetzt, das Semikolon kennzeichnet f�r
find das Ende des Kommandos. Beides sind auch f�r die Shell
Zeichen mit besonderer Bedeutung und m�ssen daher mit
Anf�hrungszeichen oder Backslash vor dieser "gesch�tzt" werden.)
* find ... -or -exec rm '{}' + Nur der Vollst�ndigkeit erw�hnt,
funktioniert nicht mit GNU find, ist so schnell wie find ... |
xargs ..., d.h. es wird nicht f�r jede Datei ein neues rm
gestartet. Diese Syntax ist im Standard Single UNIX Specification
Version 3 <
http://www.UNIX-systems.org/version3/> (bzw.
IEEE-1003.1-200x) spezifiziert und schon sehr lange bei Solaris
und UnixWare verf�gbar.
Lesehinweise: Die Dokumentation zu find im info-Format, das BASH
Programming - Introduction HOWTO, die Newsgroup de.comp.os.unix.shell,
http://www.heise.de/ix/artikel/2001/07/164/
<
http://www.heise.de/ix/artikel/2001/07/164/>.
2.37 Wie kann ich bestimmten Benutzern Schreibzugriff auf gemountete
Windowspartitionen gew�hren?
Erstelle einen neue Gruppe und mache die entsprechenden User (im
folgenden Beispiel "ich" und "sonstwer") zu Mitgliedern dieser Gruppe
(mit groupadd, addgroup, adduser, usermod, YaST, linuxconf, etc.). -
Bei Debian geht das so:
groupadd winwrite
adduser ich winwrite
adduser sonstwer winwrite
Jetzt brauchst du die GID der neuen Gruppe.
grep winwrite /etc/group
winwrite:x:4711:ich,sonstwer
Die GID ist die Zahl in der Mitte, also 4711. F�ge jetzt in /etc/fstab
die Mountoptionen gid=4711,umask=002 ein (direkt durch Editieren oder
mit dem Administrationsprogramm deiner Distribution (YaST, linuxconf,
etc.), um den Schreibzugriff zu erm�glichen,
/dev/hda1 /mnt/win vfat rw,gid=4711,umask=002 0 0
Das erlaubt den Usern in der Gruppe winwrite (und root) Schreib- und
Lesezugriff, allen anderen nur Lesezugriff. Mit mount -o remount
/mnt/win treten die �nderungen in Kraft.
Lesetipps: mount (8), umask (2) und fstab (5).
2.38 Wie kann ich den Speicherbedarf eines Verzeichnisses
einschlie�lich der Unterverzeichnisse abfragen? Wie viel freier Platz
ist auf der Festplatte noch verf�gbar?
Mit dem Kommando du -sxh Verzeichnisname kannst du einfach die gesamte
Gr��e eines Verzeichnisbaums herausfinden. -s sorgt daf�r, dass nur
der insgesamt verwendete Speicherplatz angef�hrt wird, anstatt alle
Unterverzeichnisse einzeln aufzuf�hren, -h fordert Angabe der Gr��e in
leichter lesbaren Einheiten (Megabyte oder Kilobyte statt Byte) an. -x
bewirkt, dass unter dem Verzeichnis gemountete andere Dateisysteme
nicht mitgez�hlt werden.
Das Kommando df liefert Informationen �ber belegten und freien Platz.
2.39 Mein Bildschirm wird auf Console nach einiger Zeit schwarz. Wie
schalte ich das ab?
F�r die Console gibt es das Tool setterm. Ein Aufruf von setterm
-blank 0 verhindert, dass das Monitorbild deaktiviert wird. Um die
Energiespar-Funktionen des Monitors zu nutzen sind die Parameter
powersave und powerdown zu verwenden.
2.40 Ich habe ein Skript geschrieben, das direkt aufgerufen tadellos
funktioniert, aber nicht wenn ich es als cronjob starte.
Das liegt h�chstwahrscheinlich daran, dass f�r cronjobs der
Standardsuchpfad (PATH) auf einen anderen Wert gesetzt ist, z.B. ist
/sbin/ nicht inkludiert. Rufe die Kommandos entweder mit vollem Pfad
auf oder setze am Beginn der crontab PATH richtig.
2.41 Was bedeutet es, wenn "ps" einen Prozess als "<defunct>" anzeigt?
Es handelt sich um einen sogenannten Zombie. Die Dokumentation der
meisten unix-�hnlichen Systeme bietet dazu als Erkl�rung an:
"dead, but parent is not waiting"
Um das schl�ssig zu erkl�ren, muss man wohl etwas weiter ausholen. Bei
der Prozess-Verwaltung gibt es f�r jeden Prozess einen Eintrag in der
Prozesstabelle, in dem bestimmte Daten zur Prozessverwaltung abgelegt
werden. Wird der Prozess beendet, werden diese Daten wieder frei
gegeben. Allerdings w�rden mit dem Freigeben des Eintrags in der
Prozesstabelle auch Informationen wie der "Exit-Status" des Prozesses
unwiderbringlich verlorengehen, und m�glicherweise m�chte der Parent-
Prozess genau diese Information ja noch weiter benutzen.
Um dieses Problem zu l�sen, hat man sich folgendes ausgedacht: Der
Eintrag in der Prozesstabelle wird eben nicht sofort nach Beendigung
des Prozesses freigegeben, sondern erst, wenn der Parent sich diese
Informationen abgeholt hat. Dies tut er duch Aufruf der Systemfunktion
wait(). Solange also der Parent (Elternprozess) nicht wait()
aufgerufen hat, um den Exit-Code des Kindprozesses abzuholen, gibt das
System den Eintrag in der Prozesstabelle noch nicht frei. Prozesse in
diesem Zustand (sie laufen nicht mehr, sind aber noch in der
Prozesstabelle verzeichnet) nennt man Zombies, und diese Prozesse
werden in der Ausgabe von "ps" als "<defunct>" markiert.
Eine Schlussfolgerung aus dem bisher gesagten ist, dass jeder Prozess,
der sich beendet f�r kurze Zeit zum Zombie wird (genau so lange, bis
der Eltern-Prozess wait() aufgerufen hat). Normalerweise sollte ein
Prozess aber nur sehr kurz in diesem Status verbleiben. Bleibt ein
Prozess l�nger in diesem Zustand, liegt meistens ein Programmierfehler
vor (in aller Regel beim Eltern-Prozess).
2.42 Wie kille ich einen Zombie?
Die Antwort darauf kann nach der obigen Erkl�rung eigentlich nur
lauten "gar nicht, weil er schon tot ist". Die Frage zielt aber
meistens auf etwas anderes hin: Wie beseitigt man den Eintrag in der
Prozesstabelle? Dieses Problem w�rde sich von selbst erledigen, wenn
der Elternprozess einmal wait() aufrufen wuerde, um den Exit-Status
des Zombies abzuholen (und eigentlich ist nur der Elternprozess dazu
in der Lage). Wenn der Elternprozess aber diese Systemfunktion nicht
aufruft (Stichwort: "Rabeneltern, die sich nicht mehr um die Kinder
k�mmern"), wird man diesen Prozess erst einmal nicht los ... ... bis
sich der Elternprozess beendet.
Damit "erbt" nun n�mlich der Prozess "init" (der Prozess, der beim
Systemstart als erstes gestartet wird, mit der Prozess-ID 1) diesen
Prozess, und der hat kaum etwas anderes zu tun, als auf seine Kinder
zu warten, "init" wird dann also diesen Prozess abr�umen. Damit hat
man nun bereits eine Methode gefunden, um Zombies los zu werden: Man
killt ihre Eltern.
2.43 Ich m�chte das Dateisystem meiner Linuxpartition wechseln und
z.B. von ext2 auf ReiserFS umsteigen. Kann ich da irgendwie direkt
konvertieren?
Nein. Die g�ngigen Dateisysteme f�r Linux (ext2, xfs, ReiserFS, ...)
unterscheiden sich in ihrer internen Struktur so stark, dass ein
direktes Konvertieren nicht m�glich ist. (Und wenn schon, w�rde man es
nicht ohne aktuelles, getestetes Backup probieren wollen.)
Es bleibt daher die klassische universelle Methode: Backup, neues
Dateisystem erstellen, Daten wieder aufspielen. Siehe Hard Disk
Upgrade Mini How-To
<
http://www.tldp.org/HOWTO/mini/Hard-Disk-Upgrade/>
Nur zwischen ext2 und ext3 kann man mit tune2fs -j bzw. tune2fs -O
^has_journal hin und her konvertieren.
2.44 Wie kann ich verhindern, dass die Benutzer ihr Homeverzeichnis
verlassen k�nnen?
Beim Zugriff �ber ftp ist das ganz einfach, konsultiere die
Dokumentation deines ftp-Daemons und suche nach chroot.
chroot f�r lokales Login oder Anmeldung mit ssh erfordert, dass du
alle Programme, die der User verwenden k�nnen soll, sowie deren
Konfigurations- (/etc) und andere Daten (/usr/share) und zus�tzlich
nat�rlich auch die ben�tigten dynamischen Bibliotheken(/lib, /usr/lib)
in sein Homeverzeichnis packen musst. Das ist so aufwendig, wie es
sich anh�rt, und sprengt daher den Umfang dieser FAQ. Dieser Aufwand
macht nur in Spezialf�llen Sinn z.B., wenn man beim login �ber ssh nur
einen extrem reduzierten Kommandoumfang zur Verf�gung stellen m�chte.
2.45 Ich brauche ein Shellskript, das ...? Kennt jemand eine
Einf�hrung in die Shell-Skriptprogrammierung?
Shell-Skripting ist nicht Linux-spezifisch, und es gibt sogar eine
eigene Newsgroup daf�r, de.comp.os.unix.shell, stelle Detailfragen
bitte dort.
Im WWW finden sich eine ganze Reihe Einf�hrungen in
Shellprogrammierung, die bekanntesten d�rften wohl Kristian Koehntopps
UNIX Shellprogrammierung
<
http://www.koehntopp.de/kris/artikel/unix/shellprogrammierung/> und
BASH Programming - Introduction HOW-TO
<
http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html> sein. Eine
Suche nach "Shellprogrammierung Einf�hrung" liefert weitere.
2.46 Ich m�chte eine Datei, deren Namen mit ".bin" endet, entpacken
oder verwenden.
Es sind zwei grunds�tzlich verschiedene Typen von bin-Dateien �blich:
* Selbstentpackende Archive, z.B. Sun Java. file blah.bin wird die
Datei als "Bourne shell script text executable" identifizieren.
Die Datei wird einfach ausgef�hrt, d.h. chmod +x blah.bin ;
./blah.bin, wie auch der beiliegenden Dokumentation zu entnehmen
w�re.
* Der Datenteil eines bin/cue CD-Images. Wenn die zugeh�rige
cue-Datei vorhanden ist, kann man das Image mit cdrecord oder
cdrdao auf eine CD-ROM brennen oder mit bchunk wandeln. Sonst wird
es schwieriger, bin2iso <
http://users.andara.com/~doiron/bin2iso/>
versucht ein passendes cue-Sheet zu generieren. Handelt es sich um
ein (S)VCD-Image, kann man es mit MPlayer
<
http://www.mplayerhq.hu/> abspielen oder mit VCDGrab
<
http://vcdgrab.sourceforge.net/> dem MPEG-Teil extrahieren.
_________________________________________________________________
Build: 28.08.2004