Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Link zu dieser Vergleichsansicht
wiki:linux:probleme [2010/05/18 02:17] grossing |
wiki:linux:probleme [2015/10/04 04:28] (aktuell) grossing |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Fehlersuche und Problembehebung unter Linux ====== | + | **DIE INHALTE DIESER SEITE SIND NACH http://grossing.org/linux/2010/05/18/kmail-script-kopieren-problem.html und http://grossing.org/linux/firefox/ssh/computer/2010/05/18/firefox-auf-zwei-rechnern-und-einem-monitor.html UMGEZOGEN!** |
- | /****** ===== Vorgehensweise ===== ******/ | ||
- | |||
- | ==== Firefox ==== | ||
- | |||
- | === Firefox per SSH auf einem anderen Rechner ausführen und die Ausgabe umleiten === | ||
- | |||
- | == Die Konstellation == | ||
- | |||
- | Lokales Netzwerk mit 3 Rechnern mit Linux als Betriebssystem. Der Einfachheit halber nenne ich sie hier Rechner A, B und C. | ||
- | |||
- | An Rechner A habe ich zwei Monitore angeschlossen, das ist mein Hauptrechner, an dem hängen auch Trackball und Tastatur. Da ich ab und zu mehr Rechenleistung und RAM benötige, sind die Rechner B und C per Gigabit- Netzwerk angeschlossen. B und C agieren auch als Server. | ||
- | |||
- | Der Zugriff auf B und C erfolgt über **ssh -X**, dadurch werden die Ausgaben von grafischen Programmen auf den X-Server von Rechner A umgeleitet.\\ | ||
- | Dadurch habe ich alle Fenster der laufenden Programme der Rechner A, B und C auf einem Monitor((ok, in meinem Fall zwei ;-) )) und kann mit den Programmen hantieren, wie wenn sie auf einem Rechner laufen würden. Sehr angenehm. :-) | ||
- | |||
- | == Das Problem == | ||
- | |||
- | Das hat alles funktioniert, nur beim Firefox hatte ich ein seltsames Phänomen: | ||
- | |||
- | Auf Rechner A läuft Firefox, ich verbinde mich per **ssh -X** zu Rechner B und gebe dann **firefox** ein, um den Browser zu starten. Alles klar, Fenster geht auf, aber ich werde stutzig: da sind die selben Plugins geladen, die ich auf Rechner A installiert habe, auf Rechner B jedoch //nicht//!. Oha.\\ | ||
- | Also versuche ich, eine IPv6- Adresse aufzurufen. Da nur Rechner A eine IPv6- Verbindung ins Internet hat, müßte eine Fehlermeldung kommen, wenn ich z.B. http://ipv6.google.com((nur per IPv6 erreichbar!)) aufrufe. Nix Fehler, die Seite wird geladen. Da stimmt was nicht! Definitiv! | ||
- | |||
- | Also hab ich auf Rechner B mal **ps ax | grep firefox** aufgerufen - Überraschung! Auf Rechner B läuft //kein// Firefox. Der Prozess wurde einfach an den laufenden Prozess von Rechner A "angedockt". | ||
- | |||
- | So war das ja nicht gedacht. Nach einigen fehlgeschlagenen Versuchen, bekam ich ihm Chat bei einer Diskussion um etwas anderes die | ||
- | |||
- | == Lösung == | ||
- | |||
- | Wenn ich den Firefox auf Rechner B mit **firefox -no-remote** starte, bleibt der Prozess da, wo ich ihn haben will: auf Rechner B. | ||
- | |||
- | |||
- | ===== Mir bekannte Fehlerquellen ===== | ||
- | |||
- | ==== Scripte ==== | ||
- | |||
- | === Scripte aus der Mailanzeige von KMail herauskopieren === | ||
- | |||
- | Ich habe das Script [[scripte#alle_archive_der_opensuse-de_mailingliste_als_.gz_herunterladen|download.sh]] gemailt bekommen. | ||
- | Das habe ich per Copy&Paste aus KMail in einen Editor kopiert, in ~/bin abgespeichert und mit [[tools#chmod|chmod +x]] ausführbar gemacht. | ||
- | |||
- | == Das Problem == | ||
- | |||
- | Beim Ausführen erhielt ich folgenden Fehler: | ||
- | |||
- | <code>florian@florian:~/bin> ./download_test.sh | ||
- | ./download_test.sh: line 7: syntax error near unexpected token `do' | ||
- | ./download_test.sh: line 7: ` for m in $(seq 1 12); do'</code> | ||
- | |||
- | Beim Absender geht es, bei mir nicht. Rätselraten. Probieren. | ||
- | |||
- | == Die Ursache == | ||
- | |||
- | Das Script enthält zwei oder mehr aufeinander folgende Leerzeichen. | ||
- | Das ist eigentlich kein Problem. | ||
- | |||
- | Wenn ich mir das Script jedoch mit [[tools#mcedit|mcedit]] angesehen habe, wurde für jedes zweite der aufeinander folgenden Leerzeichen statt 0x20 das Zeichen 0xA0 aus der Zeichentabelle verwendet. Die sehen beide gleich aus, sind auch beides Leerzeichen. | ||
- | |||
- | Mit dem mcedit sieht das richtig codierte Leerzeichen so aus (rote Umrandung): | ||
- | {{ http://florian-gross.de/gallery/albums/userpics/10001/mcedit1.png }} | ||
- | |||
- | Das "falsch" codierte Leerzeichen sieht im mcedit dagegen so aus (rote Umrandung): | ||
- | {{ http://florian-gross.de/gallery/albums/userpics/10001/mcedit2.png }} | ||
- | |||
- | |||
- | **ABER:** 0x20 wird auch von der Shell als Leerzeichen erkannt und beim Ausführen ignoriert, 0xA0 wird aber versucht mit auszuführen. | ||
- | |||
- | In meinem Fall wollte die Shell also nicht <code>«for m in $(seq 1 12); do»</code> sondern <code>« for m in $(seq 1 12); do»</code> ausführen. | ||
- | Beachte das Leerzeichen nach dem «! Das ist das 0xA0. | ||
- | Und da « for» kein Befehl ist, sondern nur «for», kommt für die Shell anstelle von <code>for .. ; do irgendwas; for .. ; do irgendwas;</code> ein <code>for .. ; do irgendwas; do irgendwas;</code> heraus. | ||
- | |||
- | == Die Lösung == | ||
- | |||
- | * Entweder im Script die problematischen Leerzeichen von Hand durch die "richtigen" Leerzeichen ersetzen (aufwendig!) | ||
- | |||
- | oder | ||
- | |||
- | * Die email abspeichern und dann mit einem Texteditor alles außer dem Script entfernen. | ||
- | |||
- | == Anmerkung == | ||
- | |||
- | Dieses Problem besteht auch mit einzelnen Befehlszeilen, wenn der Absender z.B. zwischen Befehl und Option(en) aus Versehen zwei Leerzeichen gemacht hat. | ||
- | In diesem Fall einfach das überflüssige Leerzeichen entfernen. | ||
- | |||
- | Die Shell selber stört sich selber nicht an zwei oder mehreren Leerzeichen: | ||
- | <code> | ||
- | florian@florian:~/bin> head ../Homepage/bytecamp/grossing.de/index.php | ||
- | <?php | ||
- | header("Location: home.php"); | ||
- | exit(); | ||
- | ?> | ||
- | florian@florian:~/bin> head ../Homepage/bytecamp/grossing.de/index.php | ||
- | <?php | ||
- | header("Location: home.php"); | ||
- | exit(); | ||
- | ?> | ||
- | </code> | ||
- | |||
- | Du möchtest selber ein wenig damit herumspielen? Du kannst dir das Script mit den problematischen Leerzeichen [[http://download.grossing.de/script/download-script_mit_falschen_leerzeichen.sh|herunterladen]] | ||
- | |||
- | \\ | ||
- | |||
- | ---- | ||
- | Du hast ein Script oder eine Konfigurationsdatei, die du gerne anderen hier zur Verfügung stellen möchtest? | ||
- | Bitte mit den Kommentaren und eventuell einer Kurzbeschreibung (zum besseren Verständnis) [[linuxwiki@florian-gross.de|mailen]]. Danke! | ||
- | --- //[[florian@grossing.de|Florian Groß]]// |