mlnet-ini's löschen & neustarten - script

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
BaGStone
Beiträge: 41
Registriert: 25.01.2003 18:59:33

mlnet-ini's löschen & neustarten - script

Beitrag von BaGStone » 14.01.2004 11:43:27

hier mal was zum lachen für alle bash-profis. aber ich habe nunmal keinen plan.

zum problem:
mein mlnet fängt (total paradox eigentlich) direkt nach dem start immer an mit 20,30kb, manchmal mehr, zu ziehen. dann geht es runter und kurz vorm 24h disconnect findet fast keine übertragung mehr statt. finde ich ein bischen strange, bei edonkey und emule unter windoof früher war es doch immer gegenteilig? na egal, irgendwo stand der sinnvolle tipp, die ini-dateien zu löschen. wenn ich das tue, und mlnet neu starte, dann rennt er auch wieder. (die downloads.ini und files.ini natürlich mitkopiert).

also dachte ich, da das immer die gleiche copy-aktion ist, schreibst du, wie in guten, alten dos-zeiten, ein bash-script (hab früher für jeden 2 oder 3 zeilen mist .bat-dateien geschrieben ;) ). aber meine kenntnisse fanden schnell ihr ende.

v.a. die tatsache, das mv und rm IMMER rekursiv arbeiten, d.h. unterverzeichnisse mit löschen/verschieben, treibt mich in den wahnsinn.

hier meine ersten zaghaften skript-versuche unter linux also... denke, was das skript tun soll, ist klar... mlnet beenden, dateien kopieren (ini's als backup in /old und die 2 oben genannten wieder zurück, und schließlich noch die files aus incoming in mein home-dir. danach mlnet neu starten.)

Code: Alles auswählen

#! /bin/sh

killall -wait -9 mlnet
rm /usr/mldonkey-2.5.4/ini/old/*
cp -f /usr/mldonkey-2.5.4/ini/* /usr/mldonkey-2.5.4/ini/old/
rm /usr/mldonkey-2.5.4/ini/*
cp -v /usr/mldonkey-2.5.4/ini/old/downloads.ini /usr/mldonkey-2.5.4/ini/downloads.ini
cp -v /usr/mldonkey-2.5.4/ini/old/files.ini /usr/mldonkey-2.5.4/ini/files.ini
rm -fv /usr/mldonkey-2.5.4/ini/incoming/* /home/bagstone/incoming/
cd /
cd /usr/mldonkey-2.5.4/ini
../mlnet -daemon
danke, bin für jede hilfe dankbar.
was fehlt, ist ja quasi nur ein -verzeichnisse_auslassen parameter hinter dem mv und rm. aber sowas hab ich im manual nicht gefunden.[/code]

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Re: mlnet-ini's löschen & neustarten - script

Beitrag von spiffi » 14.01.2004 12:26:46

BaGStone hat geschrieben:v.a. die tatsache, das mv und rm IMMER rekursiv arbeiten, d.h. unterverzeichnisse mit löschen/verschieben, treibt mich in den wahnsinn.
Tun sie doch gar nicht. Dafür gibts den Switch -r (für rekursiv :-)).
Hast Du vielleicht zufällig ein alias von rm auf rm -r gesetzt?

BTW: Du hast Da in Deinem Skript ein rm statt mv fürs incoming Verzeichnis. Das würde so jetzt beide incoming Verzeichnisse löschen. Ist wahrscheinlich nicht wirklich das, was Du möchtest.

Und wofür ist das cd / da?

BaGStone
Beiträge: 41
Registriert: 25.01.2003 18:59:33

Re: mlnet-ini's löschen & neustarten - script

Beitrag von BaGStone » 14.01.2004 17:47:07

spiffi hat geschrieben:
BaGStone hat geschrieben:v.a. die tatsache, das mv und rm IMMER rekursiv arbeiten, d.h. unterverzeichnisse mit löschen/verschieben, treibt mich in den wahnsinn.
Tun sie doch gar nicht. Dafür gibts den Switch -r (für rekursiv :-)).
Hast Du vielleicht zufällig ein alias von rm auf rm -r gesetzt?
nein, ich habe bisher noch nie damit gearbeitet... also denke ich nicht, das mein debian das von selbst irgendwo so eingerichtet hat. wie gesagt, ich bin halt auch verwirrt....
spiffi hat geschrieben: BTW: Du hast Da in Deinem Skript ein rm statt mv fürs incoming Verzeichnis. Das würde so jetzt beide incoming Verzeichnisse löschen. Ist wahrscheinlich nicht wirklich das, was Du möchtest.
OH! bööööser tippfehler. gut das ich es nicht einfach mal ausprobiert habe ;)
ja, du hast recht, da muss natürlich ein mv stehen. :) thx
spiffi hat geschrieben: Und wofür ist das cd / da?
alte DOS-gewohnheit... erstmal zum root wechseln und dann ins verzeichnis gehen. weil ich das skript ja aus meinem user-verzeichnis starte...
aber jetzt, wo ich mir das so anschaue, brauche ich das garnicht zu machen, weil
cd /directory immer vom root aus startet, wenn man den slash davor macht. richtig? :oops: "win/dos != linux" wieder was gelernt ;)

um auf das problem zurückzukommen: wo kann ich denn überprüfen ob ich da ein alias irgendwo verdeckt gesetzt habe?
oder wo sonst könnte der fehler liegen? gibt es eine sonstige möglichkeit explizit zu betonen das ich unterverzeichnisse nicht löschen/verschieben will? :/

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 14.01.2004 18:38:25

Eine Liste aller gesetzten Aliase bekommt Du ganz einfach mit

Code: Alles auswählen

alias
Ein * matcht neben den normalen Dateinamen in einem Verzeichnis auch die Namen der Unterverzeichnisse.
Nehmen wir mal an, Du rufst rm * in einem Verzeichnis mit folgendem Inhalt auf:

Code: Alles auswählen

stuff
some_more_stuff
subdir/
another_subdir/
Dann ist ein rm * letzendlich nichts anderes als

Code: Alles auswählen

rm stuff some_more_stuff subdir another_subdir
Für die beiden Unterverzeichnisse wirst Du eine Fehlermeldung bekommen:

Code: Alles auswählen

rm: cannot remove `another_subdir': Is a directory
rm: cannot remove `subdir': Is a directory
rm weigert sich Verzeichnisse (und deren Inhalt) zu löschen wenn die Option -r nicht gesetzt wurde.
mv wird allerding im gleichen Fall die Unterverzeichnisse fröhlich mitverschieben.

Ich würds mal so versuchen:

Code: Alles auswählen

#! /bin/sh

killall -wait mlnet
cd /usr/mldonkey-2.5.4/ini
rm old/*
mv *.ini old/
cp old/downloads.ini .
cp old/files.ini .
mv incoming/* /home/bagstone/incoming/
../mlnet -daemon

BaGStone
Beiträge: 41
Registriert: 25.01.2003 18:59:33

Beitrag von BaGStone » 14.01.2004 19:00:02

super, danke!
problem gelöst.
funktioniert alles :)

Antworten