Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de.
Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert.
Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können.
Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang.
Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
[gelöst] Shellskript läuft nicht
moins,
ich habe folgendes kleines script:
|
Quellcode
|
1
2
3
4
5
|
#!/bin/bash
PATH=$PATH':/usr/bin:/usr/local/bin:/sbin'
DIR='/srv/www/logs/'
cd /srv/www/logs/
echo $?
|
Es kommt immer die Fehlermeldung No such file or directory. Führe ich denBefehl direkt auf der Shell aus geht es. in $? steht 2. Da Verzeichnis IST auch existent.
ich habe da noch ein anderes Skript, das ganz ähnlich ist und es funktioniert tadellos:
|
Quellcode
|
1
2
3
4
|
#!/bin/bash
PATH=$PATH':/usr/bin:/usr/local/bin:/sbin'
cd /var/spool/cron/tabs/
rm wwwrun
|
why??? ziemlich ratlos
RE: Shellscript
Dann debugge doch dein Script:
Jeden einzelnen Befehl im Script laufen lassen und auf die Stelle an der der Fehler auftritt warten
Hiroshima 45 .. Tschernobyl 86 .. Windows 95
Letzte Worte des PC's: "Starte Windows 95"
Kunde : Ich habe Windoze 95
Techniker: Ja?
Kunde : Mein Rechner funktioniert nicht.
Techniker: Das sagten sie bereits.
der Fehler taucht erst auf wenn das skript an der Zeile mit cd angekommen ist.
Schaetzungsweise hat der User, der das Script ausfuehrt, keine Rechte um nach /srv/www/logs/ zu wechseln.
Dann gib in einer Konsole
|
Quellcode
|
1
|
cd /srv/www/logs/
|
ein und poste die Ausgabe hier bzw. nutze
|
Quellcode
|
1
|
#!/bin/bash -x
|
als Shebang und starte das Script.
die ausführung auf der konsole klappte, wie gesagt. ich habe das skript welches funktionierte nun auf den neuen Namen kopiert und es geht. kann dann mit dem weiterarbeiten.
Schreib trotzdem mal "#!/bin/bash -x" als Interpreter in der nicht funktionierende Script, starte es und poste die Ausgabe hier.
Just because an OS holds 90% of the market doesn`t mean it`s superior.
Remember 90% of all animals are insects.
Wer sucht der findet..
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »chieps« (07.08.2007, 14:36)
Original von chieps
chmod +x script
Das nutzt ihm nichts, er kann das Script ja ausführen!
Hiroshima 45 .. Tschernobyl 86 .. Windows 95
Letzte Worte des PC's: "Starte Windows 95"
Kunde : Ich habe Windoze 95
Techniker: Ja?
Kunde : Mein Rechner funktioniert nicht.
Techniker: Das sagten sie bereits.
Schreib trotzdem mal "#!/bin/bash -x" als Interpreter in der nicht funktionierende Script, starte es und poste die Ausgabe hier.
Nochmal der Code:
|
Quellcode
|
1
2
|
#!/bin/bash -x
cd /srv/www/logs
|
Dies bei der Ausführung
|
Quellcode
|
1
2
|
/bin/bash test.sh :
No such file or directoryww/logs
|
starte das script ohne /bin/bash davor, sonst hebelst du das -x ja wieder aus oder du machst
/bin/bash -x ./test.sh
und cd /srv/www/logs/ funktioniert in der konsole, bist du da sicher?
befindet sich /srv auf einer localen platte oder ist das vielleicht ein remote-filesystem (zb nfs)?
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »linuxerr« (07.08.2007, 15:22)
|
Quellcode
|
1
2
3
|
/bin/bash -x ./test.sh
+ cd $'/srv/www/logs\r'
: No such file or directory/www/logs
|
ich vermute mal das es der zeilenumbruch ist. das skript ist in windows unter eclipse erstellt und via ssh+svn auf linux transferiert worden.
Du hast doch im ersten script
|
Quellcode
|
1
|
DIR=/srv/www/logs
|
stehen gehabt. Geht denn
|
Quellcode
|
1
|
cd $DIR
|
?
Original von z-shell
Du hast doch im ersten script
|
Quellcode
|
1
|
DIR=/srv/www/logs
|
stehen gehabt. Geht denn
|
Quellcode
|
1
|
cd $DIR
|
?
nein. das skript ist jetzt ganz simpel so:
|
Quellcode
|
1
2
|
#!/bin/bash
cd /srv/www/logs
|
funktioniert trotzdem nich.
alle haben alle rechte, auch aufs verzeichnis.
Der befehl direkt auf der shellausgeführt, funktioniert.
du musst die zeilenumbrüche in unixzeilenumbrüche umwandeln!!!
nimm zb dos2unix
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.
Hoert sich danach an als enthielte das Script ^M (Zeilenumbrueche von Windows). Entferne diese.