Mam komputer z systemem Linux, na który regularnie loguję się za pośrednictwem ssh (putty) z systemu Windows. Korzystam z VcXsrv X-server na pulpicie Windows. Używam tego głównie do uruchomienia debuggera (ddd) i firefox, aby uzyskać dostęp do naszego internetowego systemu oceny kodu. Wygodne jest korzystanie z firefoxa dla Linuksa, dzięki czemu mogę uruchomić go ze skryptu. Zwykle uruchamiam to z „-new-tab”, aby nie tworzyć nowych okien.
Teraz mam nową aktualizację komputera z systemem Linux, który na razie pracuję obok starego. Zauważyłem dziwne zachowanie: kiedy uruchamiam nową sesję firefox, jeśli taka jest już uruchomiona na którejkolwiek maszynie, wtedy z niej korzysta.
To, co chciałbym móc zrobić, to nadal uruchamiać się jako nowa karta, ale tylko pod instancją firefox z bieżącego komputera, a nie z innej maszyny, która bywa wyświetlana na tym samym serwerze X.
Bawiłem się różnymi flagami, w tym -no-remote, -new instance, a także definiowaniem i używaniem konkretnych profili. Jednak nie byłem w stanie uzyskać pożądanego rezultatu. Albo dostaję zachowanie, które opisałem powyżej, albo pojawia się błąd, mówiąc: „Firefox już działa, ale nie odpowiada, proszę go zamknąć”.
EDYCJA: Poproszono mnie o edycję tego, aby podać kilka przykładów.
OK. W dalszej części będę odnosił się do M_OLD i M_NEW. Są to osobne maszyny z różnymi wersjami systemu Linux z różnymi wersjami Firefoksa (1.5 i 19). Łączę się z nimi za pośrednictwem klienta ssh o nazwie Putty i przesyłam X na serwer X na pulpicie Windows. W grę wchodzi tylko jeden serwer X.
Przykład 1:
Więc od mojej sesji szpachlowania do M_OLD uruchamiam:
firefox www.google.com &
i z mojej sesji szpachlowania M_NEW uruchamiam:
firefox www.imdb.com &
wtedy dostaję jedno okno Firefoksa 1.5 z dwiema zakładkami. Jeśli zrobię to samo w odwrotnej kolejności, otrzymam ten sam wynik, ale z firefoxem 19. Innymi słowy, jak opisano w komentarzu poniżej, pierwsze polecenie uruchamia instancję firefoxa, drugie po prostu informuje istniejące wystąpienie, aby otworzyło nową kartę. Nawet jeśli instancja znajduje się na innym komputerze, o ile jest to ten sam serwer X.
Jednak tego nie chcę. Chcę mieć osobne instancje dla osobnych maszyn. Więc:
Przykład 2:
Więc od mojej sesji szpachlowania do M_OLD uruchamiam:
firefox -no-remote www.google.com &
i z mojej sesji szpachlowania M_NEW uruchamiam:
firefox -no-remote www.imdb.com &
Teraz mam dwa osobne wystąpienia firefoxa. Jeśli jednak uruchomię M_NEW:
firefox -no-remote www.google.com &
Zdobędę
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.
a nawet jeśli spróbuję
firefox -no-remote -new-instance www.google.com &
Lub tylko
firefox -new-instance www.google.com &
wtedy nadal dostaję błąd.
Naprawdę chcę - i może nie być to możliwe - mieć osobną instancję dla każdej maszyny, ale jeśli nowy adres URL zostanie uruchomiony z tej maszyny, otworzy się nowa karta. Wygląda na to, że mogę mieć tylko jedno wystąpienie z nowymi kartami dla każdego adresu URL lub jedno wystąpienie na maszynę, ale tylko jedno na raz.
Mam nadzieję, że to jest jaśniejsze.
ssh -X
poprawnie podłączony do obu komputerów ?
--no-remote
biegasz. Czy możesz edytować swoje pytanie i powiedzieć nam, kiedy pojawi się komunikat „Firefox już działa”? Uruchomione firefox -no-remote
powinno uruchomić nową instancję firefox działającą na zdalnym komputerze, ale wyświetlaną na lokalnym serwerze X.
-p -no-remote
. Pozwala to rozpocząć od nowego profilu Fx. Zobacz Opcje wiersza poleceń . Aby połączyć się z istniejącym procesem Fx, możesz spróbować firefox https://www.mozilla.org
lubfirefox -remote "openURL(https://www.mozilla.org, new-tab)"