|
Persönliche
Linux-Unix-IRIX-howtos & FAQs |
|
Häufige Konstruktionen bei der Shellprogrammierung
Konstruktion mit <<end<< um Text in einen Befehl einzuspeisen
Suchen nach Zeichen, Ausschneiden von Werten, Umlenken in Variablen
Kommandosubstitution(Einfügen einer Befehleingabe in eine Variable)
am Einfachsten via ftp aus YaST heraus (Installationsquelle ftp)
ftp.uni-tuebingen.de /pub/linux/suse/i386/6.4
z.B. weil master-bootrecord überschrieben wurde, LILO kaputt o.Ä.
Starten von Boot-CD
booten von installiertem System, um zu schauen, ob es noch da ist (meistens /dev/hda2)
Neu-Installieren von lilo
Der mbr kann mit fdisk /mbr ausradiert werden, z.B. wenn man Lilo nicht mehr haben will Wenn die boot-Partition im Eimer ist, d.h. zwar noch da, aber nicht mehr eingetragen, kann man mit das Rettungssystem von der Suse-Boot-CD starten, und mit fdisk die Partition wieder eintragen. Wenn weiter nichts verändert wurde, sind die Daten wieder zugänglich (Uff!)
Bei unclean unmount, z.B. bei warmstart, weil x-server eingefroren ist können Fehler auf dem reiserfs filesystem zurückbleiben (Inkonsistenz), weil diese Daten nicht zurück geschrieben werden konnten. Fsck – chek and repair linux filesystem. z.B.
fsck -r
mit fdisk Partition löschen
mit fdisk /mbr Lilo rauswerfen
Partition mit anderem Betriebssystem neu formatieren
|
/.profile |
root-profile |
|
/.bashrc |
roots bash-Profil |
|
/etc/profile |
globale Shellkonfiguration, alias etc., wird bei update überschrieben |
|
/etc/profile.local |
globale Shellkonfiguration, alias etc. wird bei update nicht überschrieben |
|
/etc/hosts.allow |
andere Rechner, denen Zugang gewährt wird |
|
/etc/hosts.deny |
andere Rechner, denen Zugang verweigert wird. Reihenfolge: erst
deny dann allow z.B. |
|
~/.profile |
individuelle Shellkonfiguration |
|
~/.bashrc |
individuelle Konfiguration der bash-Shell |
|
~/.alias |
Aliastabelle |
|
/etc/lilo.conf |
Linux Loader Konfigurationsdatei |
|
/etc/fstab |
Partitionstabelle |
|
/etc/rc.config |
Konfiguration für init |
|
/etc/conf.modules |
Konfiguration der ladbaren Module |
|
/etc/route.conf |
Angaben zum routing |
|
/etc/hosts |
Konversion von Rechneradressen in -namen |
|
/etc/mtools.conf |
Konversionstabelle für die DOS-Partitionen & Laufwerken |
|
/vmlinuz |
Lokation des Kernel |
|
/etc/xf86config |
X-Windows-Konfigurationsdatei |
|
/usr/X11R6/bin/XF86Setup |
X-Windows-Konfigurationsprogramm einfach |
|
/usr/X11R6/bin/xf86config |
X-Windows-Konfigurationsprogramm komplett |
|
/etc |
Konfigurationsdateien |
|
/etc/init.d |
Shellscripte, die beim booten abgearbeitet werden |
|
/usr/doc/faq |
Faqs |
|
ls -l -h |
ls in lesbarem Format (in MB, KB etc |
|
df |
Verfügbarer Plattenplatz (disk free) |
|
du |
Plattenverbrauch, geordnet nach Verzeichnissen |
|
du -m |
In MB |
|
fdisk |
Überblick über die Partitionen |
|
mount |
gemountete Dateisysteme |
|
dmesg |
Ausgabe der Bootsequenz-Meldungen |
|
top |
Prozesse |
|
lsmod |
Liste der geladenen Module |
|
insmod |
Laden von Modulen |
|
rmmod |
Entfernen von Modulen |
|
netstat |
Status der Netzwerkverbindungen |
|
route |
Routing |
|
which 'Programmname' |
Zeigt den Pfad des gesuchten Programms an |
|
nslookup |
sucht den eingetragenen Nameserver |
|
xlock |
macht Bildschirm dicht |
|
ps ax |
Statusabfrage der laufenden Prozesse |
alias ll='ls -l' alias f77=g77 unalias f77
|
/etc/printcap |
Druckerwarteschlangen |
|
/var/lib/apsfilter/bin/apsfilter |
apsfilter (Druckerfilter) |
|
lpq |
Queue-Abfrage |
|
a2ps -8 datei |
druckt beliebige Texte schön vorformatiert auf PS-Drucker |
| lpr -Pbrothercolor test.ps | Ausdrucken einer PS-Datei auf eine vordefinierte Warteschlange, die mit einem PS-fähigen Drucker verbunden ist |
|
:q |
quit |
|
:q! |
quit auf jeden Fall |
|
:wq |
write and quit |
|
esc |
Wechsel in den command-mode |
|
i |
Wechsel in den insert-mode |
|
a |
Wechsel in den append-mode |
|
/ |
Beginn einer Suche nach regular expression |
|
:1,$ s/Mist/Super/g |
Ersetzt Mist durch Super in der gesamten Datei (Spalte 1 bis Ende) |
find /opt -name "S10W100.DEM"
|
-n |
Ausgabe der Zeilennummer |
|
grep Länge ./haupt.f -n |
einfach |
|
grep "Länge von" ./haupt.f -n |
zusammengesetzte regexp |
|
. |
steht für irgendein Zeichen innerhalb der regexp |
|
grep "Modell Nr ." ./haupt.f -n |
mit Platzhalter |
|
grep velox ./*.f -n |
in mehreren Dateien |
diff datei1 datei2 diff -w -y datei1 datei2 Zeilenweise Unterschiede als Gegenüberstellung in 2 Spalten ohne Berücksichtigung von white space
Achtung! Probleme mit symbolischen Links. Diese werden u.U. von einer tar-Version gespeichert, von der nächsten nicht gelesen : "checksum error". Am besten vermeiden
dir1=/home/davo/modell
dir2=/home/davo/gmtscripts
tar -cvzf save_neu.tgz $dir1 $dir2
c - create
v - verbose
z - zip
f - Ausgabegerät (i.A. Dateierster Schritt: entzippen
gunzip save_neu_tgz
zweiter Schritt: tar aufwickeln
tar -xvf save_neu.tar
x - extract
in einem Schritt:
gunzip < datei.tar.gz | tar xvf -
Wenn man die gezippte Version mit tar bearbeitet, kommt Murks raus tar erzeugt sämtliche Pfade in dem aktuellen Verzeichnis noch einmal. Wenn man nur einzelne Pfade restaurieren will, dann hängt man den Pfadnamen an den tar Befehl und zwar ohne den root-Strich, z.B.:
tar -xvf L280199.tar home/voelker/modell7/src/tcl Lediglich Inhaltsverzeichnis der gezippten tar-Datei anzeigen: tar tzf L280199.tgz
ln -s /usr/X11R6/bin/kde .xsession
stellt einen symbolischen Link auf die zuerst genannte Datei her - mit demNamen der zweiten (.xsession).
|
strg+alt+del |
shutdown -r "now" |
|
strg+alt+backspace |
shutdown xserver |
|
alt+Funktionstaste |
Umschalten zwischen den Konsolen |
|
strg+alt+Funktionstaste |
Umschalten zwischen kde-Konsole und Konsole |
|
rmmod /lib/modules/2.0.33/misc/lp.o |
Entfernen des Druckertreibers lp.o |
|
kill [Nummer für /usr/sb/lpd |
Löschen der Druck-Prozesse |
|
insmod /lib/modules/2.0.33/scsi/ppa.o |
Installieren des Zip-Treibers |
|
insmod /lib/modules/2.5.5/net/3c59x |
Installieren der Netzwerkkarte |
Standardbefehl
mount -t [dateisystem] [Gerät] [Mountpoint]
alles, was in der /etc/fstab steht mounten:
mount -a mounten aller in der /etc/fstab gelisteten Geräte mount -l listen der gemounteten Geräte mount -t vfat /dev/sdc4 /zip mounten des zip-LW auf /zip mount -t vfat /dev/fd0 /floppy mounten von Disketten LW
Normalerweise kann nur der superuser Dateisysteme mounten. Wenn aber in der /etc/fstab die "user" -Option gesetzt wurde, dann kann jeder das Ding mounten. Mit folgender Zeile in der /etc/fstab
/dev/scd0 /cdrom iso9660 ro,user,noauto,unhide
kann jeder das iso9660 - Dateisystem auf seinem cdrom-LW starten mit
mount /cdrom
mounten einer Platte auf einem anderen Rechner
mount -t xfs 160.45.86.25:/dev/dsk/dks1d7s0 /dummy
Remounten einer Festplatte als rw
mount -n -o remount,rw /
crontab überwacht eine Tabelle von Befehlen (eben die crontab), die zu einem bestimmten Zeitpunkt oder in bestimmten Intervallen automatisch gestartet werden sollen. Die Tabelle steht in der Datei /var/spool/cron/crontabs. Der user muss in /usr/lib/cron/cron.allow eingetragen sein, oder zumindest nicht in der /usr/lib/cron/cron.deny auftauchen.
crontab -l Listen der crontab crontab -e Editieren der crontab mit vi crontab datei Hochladen der Datei als crontabelle
Die Einträge der crontab sind folgendermassen aufgebaut:
Minutenangabe Stundenangabe Tag_im_Monat Monat Tag_der_Woche Kommando
5 12 * * 3 /home/dvoelk/chile/supercommands/weekly_quakes.gmt
Würde also bedeuten: Jeden Mittwoch um 12:05.
Achtung: cron hat seine eigene default-Einstellungen. Wenn die aufgerufenen Befehle bestimmte Einstellungen (Pfade etc.) benötigt,
die in ./profile oder ./bashrc eingestellten Werte des users benötigt, muss die shell explizit aufgerufen werden:
5 12 * * 3 bash --login /home/dvoelk/chile/supercommands/weekly_quakes.gmt
dazu muss in der /etc/fstab folgende Zeile eingetragen werden
/dev/hda1 /nt ntfs ro,noauto 0 0
danach läßt sich die Partition zum Lesezugriff mounten
mount /nt
und ist danach unter /nt eingebunden
wenn die Partition hda1 (erste Partition der IDE-Platte) ist (läßt sich unter Yast abfragen) ro=readonly erlaubt nur lesenden Zugriff, was aber von SuSe empfohlen wird, da der Zugriff noch im Experimentierstadium ist.
exec -ls -e /modell.exe
telnet -l [user] [maschine]
Um Programme die auf der anderen Maschine gestartet werden, auf dem eigenen X-Window laufen zu lassen, sind 3 Dinge notwendig.
dem fremden Rechner muss erlaubt werden den eigenen display zu benutzen(Eingabe in der home-shell):
xhost +bgeolm20.kfunigraz.ac.at
Einloggen auf der remote-Maschine:
telnet -l dvoelker bgeolm20.kfunigraz.ac.at
die auf dem Fremdrechner laufende shell muss wissen wohin gesendet werden soll (Eingabe in der remote-shell):
export DISPLAY=led12.gpi.geowissenschaften.uni-tuebingen.de:0.0
Wenn die Programme im Hintergrund laufen, ist die shell weiter eingabefähig - das Amperesand machts
xemacs &
die Priorität läßt sich durch den nice-Faktor bestimmen. Ein hoher nice-Faktor bedeutet eine niedrige Priorität, die geringste Priorität ist 19
renice +19 -p [pid] setzt die Priorität herunter (den nice-Wert um 16 rauf)
Man kann den nice-Faktor eines bestimmten Prozesses von vorneherein angeben:
nice -n 19 mbedit startet den Befehl mbedit mit einer niedrigen Priorität von 19
|
echo $PATH |
Ausgabe der Umgebungsvariablen |
|
set |
Ausgabe aller Umgebungsvariablen |
|
GMTHOME=/opt/GMT3.3.2 |
Setzen einer Umgebungsvariablen |
|
PATH=$PATH:$GMTHOME/bin |
Additives Setzen einer Umgebungsvariablen |
|
echo |
Ausgabe |
|
read |
Eingabe |
|
export |
exportiert Variable, die in einer Shellskript definiert wurdenin die Basishell (und jede spätere Subshell) |
|
let a=b*c |
einfache Operationen mit Variablen (nur Integer) |
|
$ |
kennzeichnet Variablen |
|
# |
kennzeichnet Kommentar |
|
; |
trennt Befehle (wie Zeilenende |
|
~/.cshrc |
wird jedesmal gelesen, wenn neue cshell aufgerufen wird |
|
~/.login |
wird nach ~/.cshrc abgearbeitet |
|
~/.profile |
loginscript fuer sh user |
|
set path (usr/freeware) |
Setzen einer Umgebungsvariablen (additiv?) |
tag=$(date +'%d') monat=$(date +'%m') jahr=$(date +'%y') dateiname=../sedmodell_$tag$monat$jahr.tgz echo Schreibe Bachup-Datei $dateiname tar -cvzf $dateiname $dir2
tag=$(date +'%d') monat=$(date +'%m') jahr=$(date +'%y') dateiname=../sedmodell_$tag$monat$jahr.tgz echo Schreibe Bachup-Datei $dateiname tar -cvzf $dateiname $dir2
Das Network Time Protocol (ntp) ist für die Synchronisation der lokalen Uhr mit anderen Rechnern zuständig. Dokumentation: http://ntp.isc.org/bin/view/Main/WebHome. Die Datei /etc/ntp.conf enthält eine Liste von servern, deren Zeitangaben berücksichtigt werden, unterstellt jedoch eine ständige Internetverbindung.
netstat -all netstat -na | grep -i listen netstat -na | grep -i established bzw netstat -na | grep -i verbunden
Gestartete Prozesse verfolgen:
ps ax
paste test1.txt text2.txt > text3.txt
Der Text bis zu END wird in denBefehl (z.B. psxy) eingespeist, die Ausgabe erfolgt in die Variable ps (in diesem Fall mit append)
psxy ... <<END>> $ps 12.0 15. 0. DSDP218 END
Der Text 0.5 0.5 scale wird an die Datei(oder Variable ps drangehängt
cat -v <<END>> $ps 0.5 0.5 scale END
grep $datei1 'Werte' | cut -d";" -f3 > dummy read xmax < dummytest
additiv: klebt die Variablen zusammen
neu="$alt1$alt2"
subtraktiv: Schneidet den Rest (.for) ab.
neu=${alt%.for}
tag=$(date +'%d') monat=$(date +'%m') jahr=$(date +'%y') dateiname=./backup_$tag$monat$jahr.tgz echo Schreibe Bachup-Datei $dateiname tar -cvzf $dateiname $dir1
Datum=$(date +'%d') Pfad=$(pwd) allg. Variable=(Befehl)
{
gsub(/#define equi/,"$SET(EQUI=.TRUE.)")
gsub(/#if defined.equi./,"$IF(EQUI=.TRUE.)")
print $0}' ./src/f77/sedcalc1.F > ./src/f77_HPUX/sedcalc1.FErklärung: öffnet Datei 1 und schreibt in Datei2mit gsub wird zeilenweise nach dem in // stehenden string gesucht. Achtung:Klammern und & im Suchstring werden nicht als solche erkannt. Um auch Klammern im Suchbegriff zu verwenden, kann man sie durch einen . (steht für beliebiges Zeichen) ersetzen (wie hier im zweiten gsub-Aufruf).
for datei [in haupt.f sedcalc1.f press.f]
do
rumpf=${datei%f}
' {
gsub(/#define equi/,"$SET(EQUI=.TRUE.)")
gsub(/#if defined.equi./,"$IF(EQUI=.TRUE.)")
print $0}' $datei > $rumpf.F
doneErklärung: die Variable datei wird nacheinander mit dem Inhalt der Liste [in ...] gefüllt, für jeden der Listeneinträge wird die Schleife abgearbeitet. In diesem Fall wird die Dateiendung durch ein großes F ersetzt.
awk 'NR > 11 {print $1, $5}' porenfluiddruck.prn > Ph.prnErklärung: Wenn die Bedingung Zeilennummer > 11 erfüllt ist, wird die erste und fünfte Spalte extrahiert.
awk '{print $1*1000, $2}' Pfb.dat > pfb_m.dat
awk '$1 < 0 {print $1}' test.xy > clipped.xy
awk -F: '{print $4, $5, $24}' uf.txt > features.xyzErklärung: -F definiert den Field Seperator (hier :) der anstelle des Default (Leerzeichen) genommen wird. Wenn es der horizontal tab (ht) ist, dann funktioniert es mit dem HEX-Code \x09 awk -F"\x09" '{print $4, $5, $24}' "$namepath"/UF.txt > undersea_names.txt
awk '$24~/Seamount/ {print $4, $5}' UF.txt > UF_Seamount.txtErklärung: Wenn in Spalte 24 der Text Seamount enthalten ist, dann werden Zeile 4,5 ausgeschrieben.
awk '$4~!/ERROR/ {print $4, $5}' UF.txt > UF_Seamount.txtErklärung: Wenn in Spalte 4 der Text ERROR enthalten ist, dann werden Zeile 4,5 nicht ausgeschrieben.
COPYDIR=~/gmt01
for USERNUMMER in 02 03 04 05 06 07
do
TARGET=~/gmt"$USERNUMMER"
cp $COPYDIR/*.gmt $TARGET
echo $TARGET abgearbeitet
doneErklärung: Innerhalb der do done -Schleife wird die Variable nacheinander durch den Inhalt der Liste erstetzt.
awk '$3~/12:00:../||$3~/13:00:../ {print $5, $4, $3}' 20011103.dat > out.datErklärung: Wenn in Spalte 3 der Begriff 12:00:.. (Punkte sind Stellvertreter für ein beliebiges Zeichen) oder (||) 13:00:.. gefunden wird, dann werden die anderen Spalten ausgeschrieben.
sed -e '1,3d' hypocenter_comte2004.xyz | more
Erklärung: sed liest die Datei ein und löscht (d) Zeilen 1 bis 3 (1,3d). Das Ergebnis kann in einen Befehl oder Datei gelenkt werden.
sed -e '1~2d' dummy2 > dummy3
Erklärung:sed löscht (d) jede zweite Zeile, beginnend mit Zeile 1 ('1~2d').
cat dummy |awk '{n=split($3,zeit,".")
print $4,$5,$2,zeit[1]
}
'>dummy2
Erklärung:cat lenkt den Inhalt der Datei dummy in awk. awk trennt die Spalte 3 (zeit) in einen Vektor auf, das Trennzeichen ist ein Punkt. Es existieren nun zeit[1] und zeit[2]. gedruckt wird nun statt der ganzen Spalte $3 nur noch der erste Teil.
awk 'NR > 4 {
if ($12>1){
if ($14>0){
if ($7=="CHILE"){print $12, $14}
}
}
}' tsunamievents_chile.csv
Erklärung:Wenn die Zeilenzahl größer 4 ist, ausserdem Spalte 12>1 und Spalte 14>0,
und Spalte 7 das Wort Chile enthält, dann werden die zwei Zeilen ausgedruck.
Alternativ in einer Zeile:
awk 'NR>4&&$12>1&&$14>0&&$7=="CHILE"{print $12, $14}' tsunamievents_chile.csv
sed -e 's/alfa/beta/' intext > outtext
Erklärung:sed sucht (s) den Begriff (alfa) und ersetzt durch string (beta)
sed -e '/Shore*/d' chile_sonne0_coastline.xy
Erklärung:sed sucht (//) das Muster (Shore*) und löscht die entsprechende Zeile (d)
sed -e '/^[ ]*$/d' AlteDatei > NeueDateiErklärung:sed sucht und löscht alle Leerzeilen der alten Datei
expand alte.datei > neue.dateiErklärung:expand ersetzt alle Tabulatoren durch eine entsprechende Anzahl von Leerzeichen
find /home -name "dummy*.*" | awk '{print "rm", $1}' > deldummy
chmod +x deldummy
deldummy
Erklärung:find sucht alle Dateien mit dem Suchmuster dummy* im Verzeichnis /home (+Unterverzeichnisse), übergibt die Liste an awk, das an den Anfang jeder Zeile ein rm setzt und das ganze in die Datei deldummy schreibt. deldummy wird aktiviert und ausgeführt.
case $BASE in chile_0) WEST=-76.5;EAST=-71.0;SOUTH=-32;NORTH=-29;WESN=-76.5/-71.0/-32/-29;; chile_1) WEST=-76.5;EAST=-71.0;SOUTH=-35;NORTH=-32;WESN=-76.5/-71.0/-35/-32;; esac
Erklärung:innerhalb von case esac wird eine Fallunterscheidung getroffen. Wenn die Variable einem Wert enstpricht, wird alles nach der ) , getrennt durch ; ausgeführt. das Ende der Bedingung markiert ;;
FIRST=$(sed -n 2p neic_quakes.d | awk -F, '{printf "%s %s\n", $1, $2}')
TAG=$(date +'%d')
Erklärung:Die Ausgabe der Befehle, die innerhalb der $() stehen werden in die Variable geschrieben
cd /opt/nvs if test "$?" = 0 then echo 'Verzeichnis gefunden' else echo 'Verzeichnis nicht existent' fi
Erklärung:Wenn der letzte Befehl (in diesem Fall cd) erfolgreich war, schreibt er den
Rückgabewert 0 in die Variable $?, ansonsten - je nach auftretendem Fehler - einen anderen Rückgabewert.
Mit test kann dieser Wert abgefragt und zur weiteren Ablaufsteuerung verwendet werden.
Zweites Beispiel:
# erster check: sda1 bereits gemountet? Taucht sda1 in der Ausgabe des Befehls mount auf? mount > mountlist grep sda1 mountlist if test "$?" = 0 then echo $? echo 'sda1 ist bereits gemountet' else echo $? echo 'ist noch nicht gemountet, versuche zu mounten' mount /dev/sda1 if test "$?" = 0 then echo $? echo 'mount erfolgreich' else echo $? echo 'mount fehlgeschlagen' fi fi
Erklärung:Hier wird getestet, ob ein Gerät bereits gemountet ist, d.h., ob grep das Gerät in der Liste der gemounteten Geräte findet. Wenn nicht, wird ein Versuch gestartet, zu mounten.
gmtmath dummy.tab -C1 LOG2 = dummy2.tab
Erklärung:Mathematische Operation (log2) an Spalte 2 (-C1, Zählung beginnt mit -C0).
daß z.B. Dateien mit Endung .gmt für den owner executable sind?
Prinzipiell geht für den Zweck der Befehl umask. Damit lassen sich die Rechte an neuen Dateien beschränken. Da aber neue Daten normalerweise mit rw_rw_rw_ zur Welt kommen, geht der Befehl für diesen Zweck nicht (nur für zusätzliche Einschränkungen). Daher: chmod o+x
Nicht in einem Schritt: grep und awk geben ihr Suchergebnis (und Ersetzergebnis)immer erst in neue Dateien aus (die alten können dann freilich gelöscht werden) * Eine Möglichkeit, ungenehme Zeilen verschwinden zu lassen ist die grep -invert-Fuktion z.B. grep -v -i "IF DEFINED" Sedcalc1.for > Sedcalc.f. Der Befehl läßt alle Zeilen, die die Zeichenkette enthalten verschwinden. -v =InVertieren -i = Ignorieren Groß/Kleinschreibung
Eine Möglichkeit auszutauschen geht mit der awk-Funktion gsub z.B.
awk '{gsub(/end/,"END"); print $0}' Sedcalc1.for > Sedcalc.fJede Zeile wird eingelesen (leeres Muster), der Suchbegriff end wird durch END ersetzt, die Zeile wird ausgegeben und in eine zweite Datei umgelenkt. Bei dieser Möglichkeit treten Probleme auf, wenn das Suchmuster oder Ersetzungsmuster Zeichen enthält, die von awk als Steuerzeichen verwendet werden wie z.B. () $ Das Suchmuster wird von der Routine gsub wie vom Befehl grep interpretiert. Innerhalb eines Shellscripts wird dabei versucht werden das Zeichen $ durch eine Variable zu ersetzen. Eine Möglichkeit besteht darin, schwierige Zeichen im Suchmuster durch einen . zu ersetzen (. steht für jedes Zeichen). Das Ersetzungsmuster wird wie Text interpretiert, d.h. hier können $'s stehen.
eine Möglichkeit besteht darin einen awk-Befehl einzubauen. Die unten gezeigte Sequenz liest die 2 Spalten einer Datei zeilenweise ein, die Zahlen werden in die Variablen $1 und $2 gesteckt. Mit diesen Zahlen kann gerechnet werden, das Ergebnis wird mit dem Befehl printf formatiert in eine neue Datei ausgegeben.
input=brittle.xy
output=brittle_gmt.xy
awk '{ prop=0.05
mp=$2/2+$1
du=$2*prop
printf("%10.4f %10.4f %10.4f\n", mp, 0, du)
}' $input > $output
Ein Ping auf den eigenen Rechner ist erfolgreich, ein ping auf einen anderen Rechner ergibt 100% packet loss, jedoch nicht die Meldung "network unreachable".
Alle Rechneradressen korrekt angegeben ?
Netmask 255.255.255.0 (route.conf) ?
Gateway-Adresse korrekt ?
Ethernet-Karte richtig konfiguriert (die Optionen des Treibers sind in /usr/src/linuxDocumentation/networking/vortex.txt beschrieben -es sollten dieselben wie unter NT sein - und müssen in /etc/conf.modules eingetragen werden.)
Stehen in der Datei /etc/conf.modules mehrere options-Zeilen zum Treiber, die einander widersprechen ?
Letzter Punkt war der entscheidende !
(z.B. auf das ZIP-LW, um ein tar-Backup abzulegen). user root kann das, aber er kann keinem sonst das Recht dazu verleihen. Weder direkt (chmod o+w /dev/sdb4), noch durch Gruppenzuweisung (chown davo /dev/sdb4). Liegt das an der Eigenschaft von DOS-Partitionen, dass ihre Rechte und Besitzverhältnisse unveränderbar sind, oder liegt ein Denkfehler vor?
Die Rechte werden beim mounten festgelegt. Am besten bereits in der /etc/fstab. die mount-Option uid= und gid= legen owner und gruppe fest. Siehe man mount