Bir komut dosyasında GNU ekranından çalıştırılıp çalıştırılmadığını söylemek mümkün müdür?


10

Uzak bir sunucuda zaman zaman manuel olarak başlatılan uzun bir işlemimiz var. Maalesef internet bağlantıları ölüyor, çekirdekler panikliyor ve işi bağlamak ve başlatmak için kullanılan ssh oturumu tarafından bir dizi başka zorlukla karşılaşılabilir.

Ekran, işlemin kesintiye uğramamasını sağlamak için mükemmel bir yol gibi görünüyor. Ancak, her zaman başlangıç ​​ekranını hatırlamak ve daha sonra işlemi başlatmak için komut dosyasını çalıştırmak için bir kişiye güvenerek olmasını bekleyen bir sorundur. Senaryo içinden ekrandan çağrılıp çağrılmadığını görmek için kontrol edebilirsiniz bir yolu var mı? İşlem devam ederse, komut dosyası kullanıcıya önce ekranı çalıştırmasını bildiren bir mesajla çıkacaktır.


Yanıtlar:


11

Bunun için bir ortam değişkeni var. Ekran içinde çalıştırılıyorsa, $TERMolacak screen. Bu kadar basit; üzerinde bir if yap. Örneğin,

if [ $TERM != 'screen' ]; then echo foo; else echo bar; fi

ekrandayken çubuğu yankılayacak; aksi halde foo.


2
screen-256colorKullanıcı 256 renk desteği yapılandırmışsa da olabilir .
mgorven

veya byobu kurulu sistemlerde ekran koruması. echo $ TERM screen-
bce

7

Ekranla çalışırken, komut dosyasını neden 'nohup' ile çalıştırmıyorsunuz? Bu, bağlantınız kesilirse çalışmaya devam etmesini de sağlayacaktır.

Varsayılan olarak bir dosyaya gönderilir, böylece isterseniz komut dosyası çıktısını izlemek için diğer araçları kullanabilirsiniz.


1
Nohup ile çalışmak, işlemin devam etmesini sağlamanın aynı sonucunu elde ederken, senaryoyu nohup ile çalıştırmayı unutan biriyle aynı sorunu yaşamayacağım mı? Veya bir komut dosyasında 'nohup' kullanıldığından emin olmanın bir yolu var mı yoksa orijinal komut dosyamı nohup ile çağıran bir sarıcı komut dosyası oluşturmam gerekiyor mu?
cclark

Evet. Padawans'ları (junior sysadmins) çocuklarımı sevdiğim gibi sevsem de, sık sık bu tür şeyleri unutuyorlar. Böylece her şey tamamlanır, böylece önemli komutların önekini yazmak için ne yazacaklarını hatırlamak zorunda kalmazlar.
Magellan
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.