home *** CD-ROM | disk | FTP | other *** search
- Archive-name: de/comp/linux/dcoul-faq/section2
- Posting-frequency: monthly
- Last-modified: 2004-04-18 13:49:22
- 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="ich@here.org"
- 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: 18.04.2004
-