Ich habe einen Linux-Computer, bei dem ich mich regelmäßig über ssh (putty) von Windows aus anmelde. Ich verwende den VcXsrv X-Server auf meinem Windows-Desktop. Ich verwende dies hauptsächlich, um einen Debugger (ddd) und Firefox auszuführen und auf unser webbasiertes Codeüberprüfungssystem zuzugreifen. Es ist praktisch, das Linux-Firefox zu verwenden, damit ich es über ein Skript starten kann. Normalerweise starte ich dies mit "-new-tab", um keine neuen Fenster zu erstellen.
Jetzt habe ich eine neue Linux-Update-Maschine, die ich vorerst neben der alten laufe. Was mir aufgefallen ist, ist ein merkwürdiges Verhalten: Wenn ich eine neue Firefox-Sitzung starte, wenn auf einem der Computer bereits eine ausgeführt wird, wird diese verwendet.
Ich möchte in der Lage sein, immer noch als neue Registerkarte zu starten, jedoch nur unter der Instanz von Firefox vom aktuellen Computer, nicht als Instanz von einem anderen Computer, der zufällig auf demselben X-Server angezeigt wird.
Ich habe mit verschiedenen Flags herumgespielt, darunter -no-remote, -new-instance und auch bestimmte Profile definiert und verwendet. Ich konnte jedoch nicht das gewünschte Ergebnis erzielen. Entweder erhalte ich das oben beschriebene Verhalten oder es wird eine Fehlermeldung angezeigt, die besagt, dass "Firefox bereits ausgeführt wird, aber nicht reagiert, bitte schließen Sie es".
BEARBEITEN: Ich wurde gebeten, dies zu bearbeiten, um einige Beispiele zu liefern.
OKAY. Im Folgenden werde ich auf M_OLD und M_NEW verweisen. Hierbei handelt es sich um separate Computer, auf denen verschiedene Linux-Versionen mit verschiedenen Firefox-Versionen (1.5 und 19) ausgeführt werden. Ich verbinde mich über einen SSH-Client namens Putty mit beiden und leite X an einen X-Server auf meinem Windows-Desktop weiter. Es ist nur ein X-Server beteiligt.
Beispiel 1:
Von meiner Kitt-Sitzung zu M_OLD laufe ich also:
firefox www.google.com &
und von meiner M_NEW-Kitt-Sitzung starte ich:
firefox www.imdb.com &
dann bekomme ich ein Firefox 1.5-Fenster mit zwei Registerkarten. Wenn ich das Gleiche in umgekehrter Reihenfolge mache, erhalte ich das gleiche Ergebnis, jedoch mit Firefox 19. Mit anderen Worten, wie in einem Kommentar unten beschrieben, startet der erste Befehl eine Instanz von Firefox, der zweite weist die vorhandene Instanz einfach an, eine neue Registerkarte zu öffnen. Auch wenn sich die Instanz auf einem anderen Computer befindet, solange es sich um denselben X-Server handelt.
Das will ich aber nicht. Ich möchte separate Instanzen für separate Maschinen haben. Damit:
Beispiel 2:
Von meiner Kitt-Sitzung zu M_OLD laufe ich also:
firefox -no-remote www.google.com &
und von meiner M_NEW-Kitt-Sitzung starte ich:
firefox -no-remote www.imdb.com &
Jetzt habe ich zwei separate Instanzen von Firefox. Wenn ich dann aber auf M_NEW laufe:
firefox -no-remote www.google.com &
Ich werde bekommen
Firefox is already running, but is not responding. To open a new window, you must first close the existing Firefox process, or restart your system.
und selbst wenn ich es versuche
firefox -no-remote -new-instance www.google.com &
oder nur
firefox -new-instance www.google.com &
dann bekomme ich trotzdem den fehler.
Was ich wirklich möchte - und es ist möglicherweise nicht möglich - ist, für jeden Computer eine separate Instanz zu haben. Wenn jedoch eine neue URL von diesem Computer aus gestartet wird, wird eine neue Registerkarte geöffnet. Es scheint, als ob ich entweder nur eine Instanz mit neuen Registerkarten für jede URL oder eine Instanz pro Computer haben kann, aber jeweils nur eine.
Hoffentlich ist das klarer.
ssh -X
korrekt verbunden?--no-remote
. Könnten Sie Ihre Frage bearbeiten und uns mitteilen, wann die Meldung "Firefox läuft bereits" angezeigt wird? Beim Ausführenfirefox -no-remote
sollte eine neue Firefox-Instanz gestartet werden, die auf dem Remotecomputer ausgeführt wird, aber auf Ihrem lokalen X-Server angezeigt wird.-p -no-remote
. Dies ermöglicht es, mit einem neuen Fx-Profil zu beginnen. Siehe Befehlszeilenoptionen . Um eine Verbindung zum bestehenden Fx Prozess könnten Sie versuchen ,firefox https://www.mozilla.org
oderfirefox -remote "openURL(https://www.mozilla.org, new-tab)"
Antworten:
Bestimmte Firefox-Instanzen (z. B. erstellt mit
--no-remote
) müssen separate Profile haben.Option 1: Erstellen Sie zwei (oder mehr) Profile, eines für jedes System, auf dem Firefox ausgeführt wird. Beispiel
Starten Sie nun Firefox und wählen Sie beim Start ein Profil aus
oder
Option 2: Richten Sie eine dynamische Lösung ein, um beim Start ein "Einweg" -Profil zu erstellen, z. B. einen Scrupt wie folgt:
Möglicherweise möchten Sie Schritte hinzufügen, um das temporäre Profil anschließend zu entfernen. (Das zu entfernende Verzeichnis kann durch Analysieren der Ausgabe des Befehls CreateProfile ermittelt werden, der über den obigen Befehl in /tmp/.mozprofile.$TEMPPROFILE gespeichert wird
quelle
-no-remote
...Ok ... ich weiß nicht, ob das funktionieren wird, aber es ist das erste, was ich versuchen würde:
Wie wäre es, wenn Sie auf jedem Computer ein zweites Skript erstellen, das nicht versucht, die neue Registerkarte zu erstellen, sondern nur eine neue Instanz. Wenn auf diesem Computer derzeit kein FF ausgeführt wird, verwenden Sie dieses neue Skript. Wenn es jedoch bereits ausgeführt wird, verwenden Sie das alte Skript, mit dem die neue Registerkarte erstellt wird.
Wenn dies funktioniert, können Sie möglicherweise die ps-Ausgabe in einem einzigen Skript regulär analysieren, um festzustellen, ob FF bereits auf dem Computer ausgeführt wird, und je nach Verfügbarkeit entweder den Schalter -new-tab oder -no-remote verwenden findet; Aber Sie möchten wahrscheinlich warten, bis diese Methode getestet wurde, da es sich um eine Menge Codierung für etwas handelt, das möglicherweise nicht funktioniert.
quelle
Wenn Sie sich XRemoteClient.cpp ansehen , sollten Sie Folgendes tun:
und:
Wenn Sie dann irgendwohin wollen, machen Sie so etwas wie
oder ich denke, Sie können sich vorstellen, was auf host2 zu tun ist.
Natürlich können Sie bessere Namen auswählen. Es sollte auch nicht viel ausmachen, wie Sie die Profile erstellen. Wichtig ist, dass Sie bei jedem Aufruf einen Profilnamen in der Befehlszeile angeben , wobei jede Instanz ihren eigenen Profilnamen hat.
Dies könnte sogar funktionieren .
quelle
Ich habe hier eine ziemlich elegante Lösung , wenn Sie noch brauchen. Im Moment laufen ungefähr 5 unabhängige Instanzen von Firefox und so viel ich will.
quelle