Bagaimana saya bisa memulai beberapa sesi layar secara otomatis?

21

Saya mencoba membangun perintah yang diluncurkan screen, membuat empat sesi dengan nama berbeda, dan menjalankan empat perintah berbeda.

Saya tahu cara melakukannya secara manual:

1. screen
2. ./command1 args
3. CTRL-A :sessionname Session 1
4. CTRL-A C
5. (GOTO 2)

Bisakah saya melakukan ini dengan skrip bash atau sesuatu? Bagaimana saya melakukannya?

hughes
sumber

Jawaban:

15

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"akan memunculkan layar yang berjalan $COMMANDdi latar belakang.

Anda dapat melihat sesi aktif dengan screen -lsdan pasang kembali dengan screen -r "$SESSION_NAME".

Sesi mati dapat dibunuh dengan screen -wipe.

LawrenceC
sumber
Ini menyelesaikan pekerjaan!
hughes
1
Perintah ini menciptakan sesi layar baru untuk setiap perintah. Itu tidak dapat digunakan untuk membuat sesi layar tunggal yang berisi satu jendela untuk setiap perintah (seperti langkah manual dalam pertanyaan lakukan). Dengan demikian, itu tidak menjawab pertanyaan, dan .screenrcjawaban di bawah seharusnya diterima sebagai gantinya.
Mereka
apakah ada keuntungan nyata untuk multi-windows-satu-sesi jika semua yang Anda lakukan adalah ingin murah menjalankan sesuatu di latar belakang?
LawrenceC
29

Untuk memulai beberapa sesi secara otomatis, atur .screenrcfile, file konfigurasi untuk layar. Di dalamnya, Anda dapat membuat sesi, memulai program, mengubah direktori kerja dll. Saya menggunakannya untuk menginisialisasi sesi layar saya.

Contoh sederhana untuk file .screenrc:

# don't display the copyright page
startup_message off

# increase scrollback buffer size
defscrollback 10000

# create windows
screen -t TODO vim TODO.txt
chdir src
screen -t coding vim main.c
screen -t run 

The screenperintah di atas masing-masing membuat satu sesi layar. -tmenetapkan judul sesi; sisa baris adalah perintah untuk menjalankan dan parameternya.

Dengan demikian, baris pertama dan kedua screenmemulai sesi dan meluncurkan vimdi dalam. Yang ketiga baru saja memulai sesi dan menjatuhkan Anda pada prompt. chdirmengubah direktori kerja untuk semua sesi berikutnya.

Jika Anda ingin memiliki banyak .screenrcfile, cukup beri nama sesuai keinginan Anda, dan pilih satu dengan screen -c myscreenrc.

sleske
sumber
5

Anda dapat menggunakan opsi d, m, S bersama-sama:

screen -Sdm s1
screen -Sdm s2
screen -Sdm s3

S: Untuk membuat layar

d: lepaskan dari layar

m: Untuk menegakkan pembuatan layar, terlepas dari apakah layar dipanggil dari dalam layar lain atau tidak.

aliasav
sumber
3
Menarik, bahwa Anda dapat menulis seperti ini, bukan screen -dmS s1dll. Saya tidak tahu bahwa, ketika mengelompokkan opsi, opsi dengan argumen tidak harus menjadi yang terakhir.
Tomasz Gandor