Bazı uygulamayı ekran oturumu içinde ama bir komut dosyasından başlatmak istiyorum.
Komut dosyası olmadan, sadece ekranı başlatır, sonra crtl-ac ile N pencerelerini açar ve her pencerede programları çalıştırırdım.
Aşağıdakileri denedim
screen -d -m -S test
screen -S test -X exec tail -f /var/log/messages
screen -S test -X screen
screen -S test -X exec tail -f /var/log/xinetd.log
Ama taktığımda oturum kuyruğu çalışmıyor. Oturumu hemen sonra screen -d -m -S startup
ekler screen -S startup -X exec tail -f /var/log/messages
ve başka bir terminalden çalıştırırsam çalışır.
Bir şey mi kaçırdım ?
Düzenleme AlexD cevap sonrası:
Yarım çalışma çözümü
screen -d -m -S test tail -f /var/log/messages
screen -S test -X screen tail -f /var/log/xinetd.log
Yürütme sırasında komutla ekran komutunu (-X'den sonraki) zincirleme çalışıyor olabilir çünkü muhtemelen ekran ayrıldığında geçerli bir pencere olmadığında exec geçerli bir pencerenin tanımlanmasını bekler. Bu ipuçları için AlexD'ye teşekkürler .
Ancak garip bir yan etkisi var: program durduğunda (ekran oturumunu eklerseniz ve kuyruğu crtl-c yaparsanız veya kuyruğu öldürürseniz) ekran penceresi kapanır.
Bu nedenle, davranış Crtl-A c ile aynı değildir ve komutu çalıştırın
Başka bir yan etki de 2 komutu zincirleyememenizdir.
screen
Her zaman o aracın normal bir özelliktir :) çalıştırmak ..Bu yüzden eğer - komut biter başlatıldı zaman sona ererscreen top
, çıktığınızdatop
,screen
çok çıkılacak