Komut dosyasını bir ekranda çalıştır


25

Ayrı bir ekranda bir bash betiği çalıştırmak istiyorum. Komut programı birkaç kez çağırır ve bu programların her biri beklemek çok uzun sürer. İlk düşüncem, basitçe bir ekran açmak ve daha sonra komut dosyasını çağırmaktı, ancak ctrl-a dsenaryo çalışırken ayıramayacağımı görüyorum . Bu yüzden biraz araştırma yaptım ve bu talimatı shebang'ın yerine koymak üzere buldum :

#!/usr/bin/screen -d -m -S screenName /bin/bash

Ancak bu da işe yaramıyor (seçenekler tanınmıyor). Baska öneri?

PS Bu şimdi screen -dmS name ./script.shbenim açımdan muhtemelen amaçlarım için işe yarayacak, ama yine de bunu senaryoya nasıl dahil edeceğimi merak ediyorum. Teşekkür ederim.

Yanıtlar:


28

Shebang bazı UNix çalışabilir gördüğüm çizgi varyantları, ancak Linux üzerinde. Linux'un shebang çizgileri sınırlıdır: sadece bir seçeneğiniz olabilir. Tüm dize -d -m -S screenName /bin/bash, screenfarklı kelimeler olarak iletilmek yerine, tek bir seçenek olarak geçirilir.

Bir komut dosyasını ekran içinde çalıştırmak ve birden fazla dosyayla karıştırmak veya alıntı yapmak istemiyorsanız, komut dosyasını zaten ekranın içinde değilse ekranı çağıran bir kabuk komut dosyası yapabilirsiniz.

#!/bin/sh
if [ -z "$STY" ]; then exec screen -dm -S screenName /bin/bash "$0"; fi
do_stuff
more_stuff

İyi çalışıyor, "$0"burada ne var?
Fabich

4
@Lordofdark Bu komut dosyası adı. Senaryo, screenhangi /bin/bashsenaryoyu yeniden çağırır hangisini çağırır.
Gilles 'SO- kötülük' dur

16

Ekrandaki adam sayfalarına göre:

  • screen -d -m Ekranı bağımsız modda başlat. Bu yeni bir oturum oluşturur, ancak buna eklenmez. Bu sistem başlatma komut dosyaları için kullanışlıdır.
  • -S sessionname Yeni oturumun adını oturum adı olarak ayarlayın.

Öyleyse verdiğiniz emri çalıştırdığımda: screen -dmS name ./script.sh

Ekran, ad adlı bir pencereyi başlatır ve otomatik olarak bu script.sh dosyasını çalıştırır. Durumu görmek için oraya geri dönmek için yazmanız yeterlidir:screen -r test

Şimdi Ubuntu 14.04 ile komutlar biraz farklıdır. Deneyin:

screen -d -m -S test

Şimdi betiği çalıştırmak için, bunu yapmak için kendi config dosyasına gitmeniz gerekir:

sudo vim /etc/screenrc

Bir kez orada, aşağı doğru kaydırın ve göreceksiniz:

# Example of automatically running some programs in windows on screen startup.
#
#   The following will open top in the first window, an ssh session to monkey
#   in the next window, and then open mutt and tail in windows 8 and 9
#   respectively.
#
# screen top
# screen -t monkey ssh monkey
# screen -t mail 8 mutt
# screen -t daemon 9 tail -f /var/log/daemon.log

Çalıştırılacak komut dosyası adını eklemeniz gerekecek ve ekrandan ihtiyacınız olan her şeyi yapmanıza izin veren bölümdür.


Her nasılsa, bu komut ( screen -dmS ...) gerçekten de olsa, benim için çalışmıyor. Çalıştırdım ve sonra screen -lssoket bulunamadı. Düşünceler?
bongbang

Hangi dağıtımı kullanıyorsun?
ryekayo

NAME = "Ubuntu" VERSION = "14.04.1 LTS, Güvenilir Tahr" sanırım. Sanal bir makine.
bongbang

Gimme im sadece 14.04 ubuntu da benim makinede ekranını kullanmayı deneyin hasta çalışmayı bırakarak ve çünkü biraz
ryekayo

@bongbang - ekranın hangi versiyonuna sahipsin?
slm

3

Bu biraz eski ama bunu yapmak için bulabildiğim birkaç konudan biri. Oynadıktan sonra ubuntu 14 ile bağımsız modda bu çalışmayı elde etmenin tek yolu arount.

screen -d -m -t nameofwindow sh nameoflaunch.sh

Fırlatma, geçerli java komutlarını ve sunucu sürümünü içeren yukarıdaki ikinci kısım olacaktır. Vanilyalıyım.

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.