Firefox, iki Linux makinesi, bir X sunucusu


10

Windows'dan ssh (macun) ile düzenli olarak oturum açtığım bir Linux makinem var. Windows masaüstümde VcXsrv X sunucusu çalıştırıyorum. Ben esas olarak web tabanlı kod inceleme sistemimize erişmek için bir hata ayıklayıcı (ddd) ve firefox çalıştırmak için kullanın. Linux firefox'u kullanmak uygundur, böylece bir komut dosyasından başlatabilirim. Normalde yeni pencereler oluşturmamak için bunu "-new-tab" ile başlatırım.

Şimdi şu an eskisinin yanında çalıştırdığım yeni bir Linux makinem var. Fark ettiğim şey tuhaf bir davranış: yeni bir firefox oturumu başlattığımda her iki makinede zaten çalışıyorsa, o zaman bunu kullanır.

Yapabileceğim şey hala yeni bir sekme olarak başlatılıyor, ancak aynı makinede görüntülenen farklı bir makineden gelen bir örnek değil, yalnızca geçerli makineden firefox örneği altında başlatılıyor.

-No-remote, -new-instance gibi çeşitli bayraklarla oynuyorum ve ayrıca belirli profilleri tanımlayıp kullanıyorum. Ancak istenen sonucu alamadım. Ya yukarıda açıkladığım davranışı alıyorum ya da "Firefox zaten çalışıyor ama yanıt vermiyor, lütfen kapatın" gibi bir hata mesajı alıyorum.

EDIT: Bazı örnekler vermek için bunu düzenlemem istendi.

TAMAM. Aşağıda M_OLD ve M_NEW'ye değineceğim. Bunlar, farklı Firefox sürümleriyle (1.5 ve 19) Linux'un farklı sürümlerini çalıştıran ayrı makinelerdir. Onlara hem Putty adında bir ssh istemcisi üzerinden bağlanıyorum hem de X'i Windows masaüstümdeki bir X sunucusuna yönlendiriyorum. Tek bir X sunucusu var.

Örnek 1:

Yani macun oturumumdan M_OLD'a koşuyorum:

firefox www.google.com &

ve benim M_NEW macun oturumumdan çalıştırıyorum:

firefox www.imdb.com &

sonra iki sekmeli bir firefox 1.5 penceresi alıyorum. Aynı işlemi tersine yaparsam aynı sonucu alırım ama firefox 19 ile. Örnek başka bir makinede olsa bile, aynı X sunucusu olduğu sürece.

Ancak bunu istemiyorum. Ayrı makineler için ayrı örneklere sahip olmak istiyorum. Yani:

Örnek 2:

Yani macun oturumumdan M_OLD'a koşuyorum:

firefox -no-remote www.google.com &

ve benim M_NEW macun oturumumdan çalıştırıyorum:

firefox -no-remote www.imdb.com &

Şimdi iki ayrı firefox örneğim var. Ancak daha sonra M_NEW üzerinde çalıştırmak:

firefox -no-remote www.google.com &

Alacağım

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.

ve denesem bile

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

ya da sadece

firefox -new-instance www.google.com &

hala hatayı alıyorum.

Gerçekten istediğim - ve mümkün olmayabilir - her makine için ayrı bir örneğe sahip olmaktır, ancak bu makineden yeni bir URL başlatılırsa yeni bir sekme açar. Görünüşe göre ya her URL için yeni sekmelere sahip tek bir örnek ya da makine başına bir örnek alabilirim, ama her seferinde yalnızca bir örnek alabilirim.

Umarım bu daha açıktır.


Açıklığa kavuşturabilir misiniz? Yeni Linux makinesi ne kadar alakalı? X'i Windows makinenize yönlendiriyorsunuz değil mi? Her iki Linux kutusuna da aynı anda mı bağlısınız? Lütfen her bir kutuya nasıl bağlandığınıza dair biraz daha ayrıntı verin.
terdon

Tamam, sorun ortaya çıktığında her iki makineye de ssh -Xdoğru bağlandınız mı?
terdon

Evet, X'i Windows makineme yönlendiriyorum. Evet, ikisine de bağlıyım. Yeni makine alakalı çünkü ben de ondan firefox başlatıyorum. Bununla birlikte, yeni bir firefox örneği başlatmak yerine, mevcut örnekte eski makineden başlatılan yeni bir sekme açar. Yeni firefox işlemi, firefox'un o X sunucusunda çalışıp çalışmadığını kontrol eder ve eğer öyleyse yeni bir sekme açmak için bir mesaj gönderir. Bu çok zeki ama istediğim şey değil. "Eski" ve "yeni", yalnızca firefox'un çok farklı sürümleri oldukları sürece geçerlidir. Mantıklı olmak?
PaulM

1
Açıkladığınız şey normaldir ( sürprizime bulduğum gibi ), --no-remoteyine de koşarken nasıl sabit olmadığını anlamıyorum . Eğer Could düzenlemek soru ve "Firefox zaten çalışıyor" mesajı aldığında bize? Koşu firefox -no-remote gerektiğini uzak makinede yeni bir firefox örneği yayınlanmaya başlayacak ancak yerel X sunucusu üzerinde görüntülenen.
terdon

1
Ben de -p örneğin eklemek gerekebilir düşünüyorum -p -no-remote. Bu, yeni bir Fx profiliyle başlamayı sağlar. Bkz. Komut satırı seçenekleri . Varolan Fx sürecine bağlanmak için deneyebilirsin firefox https://www.mozilla.orgveyafirefox -remote "openURL(https://www.mozilla.org, new-tab)"
vWil

Yanıtlar:


1

Farklı Firefox örneklerinin (örn. İle oluşturulmuş --no-remote) ayrı profilleri olmalıdır.

Seçenek 1: Firefox çalıştıran her sistem için bir tane olmak üzere iki (veya daha fazla) profil oluşturun. Misal

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

Şimdi firefox'u başlatın ve başlangıçta bir profil seçin

firefox --no-remote -P localuser

veya

firefox --no-remote -P host1

Seçenek 2: Başlangıçta "tek kullanımlık" bir profil oluşturmak için dinamik bir çözüm oluşturun, örneğin:

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

Daha sonra geçici profili kaldırmak için adımlar eklemek isteyebilirsiniz (Kaldırılacak dizin, çıktıyı /tmp/.mozprofile.$TEMPPROFILE içindeki /tmp/.mozprofile.$TEMPPROFILE komutunda saklanan CreateProfile komutundan ayrıştırarak bulunabilir.


bunu zaten denedim - bkz. "örnek 2"
PaulM

Ah evet, doğru - farklı örnekler farklı profiller kullanmak zorundadır.
Johan

Önerdiğiniz ilk "seçenek" hiçbir anlam ifade etmiyordu, bu yüzden cevabınızdan kaldırılmasını önerdim.
SamB

Rağmen, aslında, olmadan çalışabilir -no-remote...
SamB

0

Tamam ... bunun işe yarayıp yaramayacağını bilmiyorum, ama deneyeceğim ilk şey:

Her makinede yeni bir sekme oluşturmaya çalışmayan ikinci bir komut dosyası oluşturursanız, yalnızca yeni bir örnek oluşturmaya ne dersiniz? Şu anda bu makinede çalışan FF'niz yoksa, bu yeni komut dosyasını kullanırsınız, ancak zaten çalışıyorsa, yeni sekmeyi oluşturan eski komut dosyasını kullanırsınız.

Bu işe yararsa, FF'nin makinede zaten çalışıp çalışmadığını görmek için ps çıktısının tek bir komut dosyasında regex ayrıştırma işlemi yapabilir ve ne olduğuna bağlı olarak -new-tab anahtarını veya -no-remote'ı kullanabilirsiniz. bulur; ama muhtemelen bu yöntem test edilene kadar beklemek istersiniz, çünkü işe yaramayabilecek bir şey için adil bir kodlama miktarıdır ....


kulağa işe yarayabilir gibi geliyor - ama bundan vazgeçtim. M_OLD yakında hizmet dışı bırakılacak.
PaulM

0

Baktığımızda XRemoteClient.cpp , yapmaya gerektiğini düşünüyorum:

user@host1$ firefox -CreateProfile profile1

ve:

user@host2$ firefox -CreateProfile profile2

Sonra, bir yere gitmek istediğinizde,

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

veya, sanırım host2'de ne yapacağınızı tahmin edebilirsiniz.

Açıkçası, daha iyi isimler seçebilirsiniz. Profilleri nasıl oluşturduğunuz da önemli değil. Önemli olan, her başlattığınızda komut satırında bir profil adı belirtmektir , burada her örneğin kendi profil adı vardır.

Bu kudreti dahi eser .


0

Hala ihtiyacınız varsa oldukça zarif bir çözümüm var . Şimdilik 5 bağımsız firefox örneğim var ve istediğim kadar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.