Firefox、Linuxマシン2台、Xサーバー1台


10

私は、Windowsからssh(putty)を介して定期的にログオンしているLinuxマシンを持っています。WindowsデスクトップでVcXsrv Xサーバーを実行しています。主にこれを使用して、デバッガー(ddd)とfirefoxを実行し、Webベースのコードレビューシステムにアクセスします。スクリプトから起動できるように、Linux Firefoxを使用すると便利です。私は通常、新しいウィンドウを作成し続けないように、「-new-tab」でこれを起動します。

さて、とりあえず古いLinuxマシンと一緒に実行している新しい更新Linuxマシンを手に入れました。私が気付いたのは、奇妙な動作です:どちらかのマシンで既に実行されている新しいFirefoxセッションを起動すると、それが使用されます。

私ができることは、新しいタブとして起動することですが、現在のマシンからのfirefoxのインスタンスの下でのみであり、同じXサーバー上に偶然表示されている別のマシンからのインスタンスではありません。

-no-remote、-new-instance、特定のプロファイルの定義と使用など、さまざまなフラグをいじっています。しかし、私は望ましい結果を得ることができませんでした。上記の動作が発生するか、「Firefoxはすでに実行されていますが応答していません。閉じてください」などのエラーが表示されます。

編集:私はこれをいくつかの例を提供するために編集するように求められました。

OK。以下では、M_OLDおよびM_NEWを参照します。これらは、異なるバージョンのLinuxと異なるバージョンのFirefox(1.5および19)を実行する個別のマシンです。Puttyと呼ばれるsshクライアントを介して両方に接続し、Windowsデスクトップ上のXサーバーにXを転送しています。関連するXサーバーは1つだけです。

例1:

だから私のパテセッションからM_OLDまで私は実行します:

firefox www.google.com &

私のM_NEWパテセッションから実行します。

firefox www.imdb.com &

次に、2つのタブを持つ1つのFirefox 1.5ウィンドウを取得します。同じことを逆に行うと、同じ結果が得られますが、firefox 19を使用します。つまり、以下のコメントで説明されているように、最初のコマンドはfirefoxのインスタンスを起動し、2番目のコマンドは既存のインスタンスに新しいタブを開くように指示するだけです。インスタンスが別のマシン上にある場合でも、同じXサーバーである限り。

しかし、私はこれを望んでいません。別々のマシンに別々のインスタンスが欲しいです。そう:

例2:

だから私のパテセッションからM_OLDまで私は実行します:

firefox -no-remote www.google.com &

私のM_NEWパテセッションから実行します。

firefox -no-remote www.imdb.com &

これで、firefoxの2つの個別のインスタンスができました。ただし、M_NEWで実行した場合:

firefox -no-remote www.google.com &

あげる

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.

そして私が試しても

firefox -no-remote -new-instance www.google.com &

あるいは単に

firefox -new-instance www.google.com &

それでもエラーが発生します。

私が本当に欲しいのは-そしてそれは不可能かもしれません-マシンごとに個別のインスタンスを持つことですが、そのマシンから新しいURLが起動された場合、新しいタブが開きます。URLごとに新しいタブを持つインスタンスが1つだけあるか、マシンごとに1つのインスタンスしか持てないようですが、一度に1つしかありません。

うまくいけば、それはより明確です。


明確にしてもらえますか?新しいLinuxマシンはどのように関連していますか?XをWindowsマシンに転送していますか?両方のLinuxボックスに同時に接続していますか?各ボックスへの接続方法について詳しく説明してください。
terdon 2013年

OK、それで問題が発生すると、両方のマシンにssh -X正しく接続されていますか?
terdon 2013年

はい、XをWindowsマシンに転送しています。はい、両方に接続しています。新しいマシンは、Firefoxも起動するので適切です。ただし、Firefoxの新しいインスタンスを起動する代わりに、既存のインスタンス(古いマシンから起動されたもの)に新しいタブを開きます。これは、新しいFirefoxプロセスがそのXサーバーでFirefoxが実行されているかどうかを確認し、実行されている場合は新しいタブを開くためのメッセージを送信するかのようです。これは非常に賢いですが、私が望むものではありません。「古い」と「新しい」は、Firefoxの非常に異なるバージョンである場合にのみ関連します。理にかなっていますか?
PaulM 2013年

1
あなたが説明しているのは正常です(私が驚いことに気付いたように)--no-remote。ただし、それを実行しても修正されないのはわかりません。質問を編集して、「Firefox already running」メッセージが表示されたらお知らせください。実行すると、リモートマシンで実行されているがローカルXサーバーに表示されている新しいfirefoxインスタンスfirefox -no-remote 開始されます。
terdon 2013年

1
-pも追加する必要があると思います-p -no-remote。これにより、新しいFxプロファイルで開始できます。コマンドラインオプションを参照してください。既存のFxのプロセスに接続するには、あなたは試みることができるfirefox https://www.mozilla.orgfirefox -remote "openURL(https://www.mozilla.org, new-tab)"
VWIL

回答:


1

個別のFirefoxインスタンス(たとえばで作成されたもの--no-remote)は、個別のプロファイルを持っている必要があります。

オプション1:Firefoxを実行しているシステムごとに1つずつ、2つ(またはそれ以上)のプロファイルを作成します。例

firefox --no-remote -CreateProfile localuser
firefox --no-remote -CreateProfile host2

次に、Firefoxを起動し、起動時にプロファイルを選択します

firefox --no-remote -P localuser

または

firefox --no-remote -P host1

オプション2:動的ソリューションを設定して、起動時に「使い捨て」のプロファイルを作成します。

TEMPPROFILE=$(date +%Y%m%d%H%M%S)
firefox --no-remote -CreateProfile $TEMPPROFILE 2>/tmp/.mozprofile.$TEMPPROFILE
firefox --no-remote -P $TEMPPROFILE

後で一時プロファイルを削除する手順を追加することもできます(削除するディレクトリは、上記のコマンドで/tmp/.mozprofile.$TEMPPROFILEに保存されているCreateProfileコマンドの出力を解析することで確認できます。


すでにそれを試しました-「例2」を参照してください
PaulM

はい、そうです。インスタンスごとに異なるプロファイルを使用する必要があります。
ヨハン

あなたが提案した最初の「オプション」はまったく意味がなかったので、私はそれをあなたの答えから削除することを提案しました。
SamB 2014年

しかし、実際には-no-remote... なしでも機能する可能性があります
SamB

0

わかりました...これが機能するかどうかはわかりませんが、最初に試してみます。

新しいマシンを作成するのではなく、新しいインスタンスを作成するだけで、各マシンに2つ目のスクリプトを作成する場合はどうでしょうか。そのマシンでFFが現在実行されていない場合は、この新しいスクリプトを使用しますが、既に実行されている場合は、新しいタブを作成する古いスクリプトを使用します。

これが機能する場合、単一のスクリプトでps出力の正規表現解析を実行して、FFがマシンですでに実行されているかどうかを確認し、それに応じて-new-tabスイッチまたは-no-remoteを使用できます。見つける; しかし、おそらくこの方法がテストされるまで待つ必要があります。これは、機能しない可能性のあるものに対するかなりの量のコーディングであるためです。


それはうまくいくかもしれません-しかし、私はこれをあきらめました。M_OLDは間もなく廃止されます。
PaulM 2014年

0

XRemoteClient.cppを見て、次のようにする必要があると思います。

user@host1$ firefox -CreateProfile profile1

そして:

user@host2$ firefox -CreateProfile profile2

次に、どこかに行きたいときは、

user@host1$ firefox -P profile1 -new-tab http://example.com

または、まあ、私はあなたがhost2で何をすべきかを推測できると思います。

もちろん、もっと良い名前を選ぶことができます。また、プロファイルの作成方法もそれほど重要ではありません。重要なことは、起動するたびにコマンドラインでプロファイル名指定することです。この場合、各インスタンスには独自のプロファイル名があります。

これでうまくいくかもしれません


0

それでも必要な場合は、ここに非常にエレガントな解決策があります。今のところ、Firefoxの5つの独立したインスタンスが実行されており、好きなだけ実行できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.