Bir smokin seansını kaydetmenin bir yolu var mı? Başka bir deyişle, bilgisayarı yeniden başlatırsam, oturumları her zaman kaybeder miyim?
*** System restart required ***
Bir smokin seansını kaydetmenin bir yolu var mı? Başka bir deyişle, bilgisayarı yeniden başlatırsam, oturumları her zaman kaybeder miyim?
*** System restart required ***
Yanıtlar:
Evet, bilgisayarınızı yeniden başlatırsanız oturumları kaybedersiniz. Oturumlar kaydedilemiyor. Ancak, komut dosyaları yazılabilir. Aslında en çok yapılan, bazı oturumları yeniden oluşturmak için komut dosyası oluşturmaktır. Örneğin, burada bir oturum oluşturmak için önemsiz bir kabuk komut dosyası:
#!/bin/zsh
SESSIONNAME="script"
tmux has-session -t $SESSIONNAME &> /dev/null
if [ $? != 0 ]
then
tmux new-session -s $SESSIONNAME -n script -d
tmux send-keys -t $SESSIONNAME "~/bin/script" C-m
fi
tmux attach -t $SESSIONNAME
İşte yaptığı şey. Öncelikle, tmux has-session ile zaten bu isimde bir oturum olup olmadığını kontrol eder (bu durumda, çok orijinal isim "script") . Dönüş kodunu kontrol eder. Bu adda devam eden bir oturum varsa, "if" döngüsünü atlar ve doğrudan oturuma eklendiği son satıra gider. Aksi takdirde, bir oturum oluşturur ve ona bazı anahtarlar gönderir (şimdilik sadece rastgele bir komut dosyası çalıştırıyor). Sonra "if" bloğundan çıkar ve ekler.
Bu çok önemsiz bir örnek. Eklemeden önce birden fazla pencere, bölme ve benzeri oluşturabilirsiniz.
Bu olacak değil de, istediğin çok aynı şey. Oturumda herhangi bir değişiklik yaparsanız, örneğin bir pencereyi yeniden adlandırır ve içinde yeni bir bölme yaratırsınız, yeniden başlatırsanız bu değişiklikler elbette kaydedilmeyecektir.
Her şeyi el ile yapmayı tercih etmeme rağmen, komut dosyası oturumları işlemini kolaylaştıran bazı araçlar var (daha çok yönlü olduğunu düşünüyorum). Bu araçlar Tmuxinator ve Teamocil'dir .
Ana bilgi kaynağım "Pragmatik Kitaplık" Tmux kitabıydı.
tmux send-keys ...
Çizginin amacı nedir ?
some command; if [ $? != 0 ]; then .....
olarak yazmaya (ve okumak için) daha kolaydır: if ! some command; then .....
.
Her biri için açık tmux seansları, pencereler ve mevcut çalışma dizinlerini sürdüren basit bir bash betiği yazdım .
Bunu manuel olarak veya periyodik olarak crondan söyleyin (çünkü unutabilirsiniz):
tmux-session save
Bu yazacak ~/.tmux-session
. Böyle yeniden başlattıktan sonra onları geri yükleyin:
tmux-session restore
Bunu birkaç yüz satırlık Perl betiğinden çok daha iyi buluyorum.
Tüm tmux ortamından tasarruf etmenizi ve daha sonra geri yüklemenizi sağlayan bir tmux eklentisi yazdım. Gerçekten ayrıntılı olmak için çaba sarf ediyor, böylece tmux'dan asla vazgeçmediğinizi hissediyorsunuz.
https://github.com/tmux-plugins/tmux-resurrect
Güncelleme: şimdi tmux ortamının otomatik arka plan tasarrufunu gerçekleştiren bir tmux-devamlılık eklentisi var. İsteğe bağlı olarak ayrıca * otomatik olarak * bilgisayar yeniden başlatıldıktan sonra tmux env dosyasını geri yükler.
tmuxinator , Ruby'de yazılmış ve tmux oturumlarını kolaylıkla oluşturmak ve yönetmek için kullanılabilecek bir araçtır. Daha sonra tmux oturumu olarak başlatılabilecek bir proje oluşturmak için kullanılabilir.
Burada bulunan bu kısmi çözümü göz önünde bulundurun
Yazar, tmux oturumunun durumunu bir sunucu yeniden başlattıktan sonra sürdürmek için tmux oturumunun geçmişini kaydeden bir işlev yaratır.
Oturumları yeniden oluşturmak için https://github.com/jimeh/tmuxifier’ı başarıyla kullanıyorum . Bu sadece git kullanarak, yakut olmadan kurulabilir.
Örnekler oldukça açıklayıcıdır, örneğin: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh