Cara menjalankan perintah kedua di sesi layar yang sama

12

Saya memulai perintah pertama di layar seperti ini:

screen -d -m -S testen -t lalala watch df -h

yang memberi saya sesi layar berjalan di latar belakang dan saya dapat menyambung kembali di lain waktu.

Bagaimana saya bisa menjalankan perintah kedua di jendela baru di sesi layar yang sama?

TTM
sumber

Jawaban:

11

Mulai sesi layar bernama ( -S) dengan jendela bernama ( -t) beradaptasi dengan ukuran terminal ( -A) dalam mode terlepas ( -d -m):

screen -S mySessionName -t myWinName0 -A -d -m

Mulai jendela bernama lain ( -t) di sesi layar yang sama ( -S):

screen -S mySessionName -X screen -t myWinName2

Masukkan beberapa perintah ( -X stuff $'cmds') ke dalam jendela bernama pertama ( -p) di sesi ( -S):

screen -S mySessionName -p myWinName0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'

Masukkan beberapa perintah ( -X stuff $'cmds') ke dalam jendela bernama kedua ( -p) di sesi ( -S):

screen -S mySessionName -p myWinName1 -X stuff $'echo myWinName1\necho cmd1\necho cmd2\n'

Daftar sesi layar dan pasang kembali untuk melihat apa yang terjadi:

screen -ls
screen -r mySessionName

Catatan: Linefeed ( \n) mensimulasikan penekanan Enter. Anda bisa menggunakan titik koma untuk memisahkan perintah juga.

pos
sumber
Anda tidak perlu melakukan bit "barang". screen -S sessionName -t windowName1 -Adm <command> && screen -S sessionName -X screen -t windowName2 -Adm <command2>
Lotus
4

Layar bagian dalam:

  • Ctrl-A, cuntuk membuka jendela shell baru
  • Ctrl-A, :screen newcmduntuk dijalankannewcmd

Di luar:

screen -X testen "screen newcmd"
pengguna1686
sumber
hai grawity , saya tahu ini, tetapi saya ingin melakukannya dari skrip init. pada dasarnya saya ingin memulai 2 perintah di windows terpisah di sesi layar yang sama. sampai jumpa
1
@ Bob: Lihat contoh # 3, "Layar luar", dalam jawaban ini.
user1686
hai grawity, screen -S testen -X 'screen echo "hi"'tidak bekerja.
Saya juga tidak bisa mendapatkan metode -X untuk bekerja. Fwiw, layar saya -v mengatakan "Versi layar 4.00.03 (FAU) 23-Okt-06"
Lauri Lehtinen
4

Mencoba pendekatan di atas, tetapi perintah kedua tidak dijalankan di jendela kedua. Saya sedikit menyesuaikan contoh dengan menggunakan nomor jendela, bukan nama jendela:

  1. buat sesi

    screen -S mySessionName -t 0 -A -d -m
    
  2. buat jendela kedua

    screen -S mySessionName -X screen -t 1
    
  3. kirim perintah ke jendela pertama

    screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  4. kirim perintah ke jendela kedua

    screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  5. sekarang periksa apakah perintah telah dijalankan pada jendela pertama

    screen -R mySessionName -p 0
    
  6. sekarang periksa apakah perintah telah dijalankan pada jendela kedua

    screen -R mySessionName -p 1
    

Diuji dengan Layar 4.00.03 (CENTOS 6.3 x64).

Bas van Beek BVBMedia
sumber
1

Anda dapat mengatur .screenrc alternatif melalui -cargumen. Dalam screenrc baru ini, Anda dapat mengatur beberapa perintah untuk memulai ketika sesi layar diinisialisasi.

Pada akhir .screenrc alternatif ini menempatkan perintah berikut:

screen 1 cmd1 args
screen 2 cmd2 args

Anda tidak perlu mengatur file konfigurasi alternatif jika Anda hanya berencana untuk menjalankan satu jenis sesi layar dan menjalankan perintah default selalu baik-baik saja.

Aula Darren
sumber