Làm thế nào tôi có thể bắt đầu nhiều phiên màn hình tự động?


21

Tôi đang cố gắng xây dựng một lệnh khởi chạy screen, tạo bốn phiên với các tên khác nhau và chạy bốn lệnh khác nhau.

Tôi biết cách làm điều này bằng tay:

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

Tôi có thể làm điều này với một kịch bản bash hoặc một cái gì đó? Làm thế nào tôi sẽ làm như vậy?

Câu trả lời:


15

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"sẽ sinh ra một màn hình chạy $COMMANDtrong nền.

Bạn có thể xem các phiên hoạt động với screen -lsvà gắn lại với screen -r "$SESSION_NAME".

Phiên chết có thể bị giết với screen -wipe.


Nó hoàn thành công việc!
hughes

1
Lệnh này tạo một phiên màn hình mới cho mỗi lệnh. Nó không thể được sử dụng để tạo một phiên màn hình duy nhất chứa một cửa sổ cho mỗi lệnh (như các bước thủ công trong câu hỏi làm). Do đó, nó không trả lời câu hỏi và .screenrcthay vào đó , câu trả lời dưới đây nên được chấp nhận.
Tey '

Có bất kỳ lợi thế thực sự nào đối với nhiều cửa sổ một phiên không nếu tất cả những gì bạn làm là muốn giữ một cái gì đó chạy ở chế độ nền?
LawrenceC

29

Để tự động bắt đầu nhiều phiên, hãy thiết lập một .screenrctệp, một tệp cấu hình cho màn hình. Trong đó, bạn có thể tạo phiên, bắt đầu chương trình, thay đổi thư mục làm việc, v.v. Tôi sử dụng nó để khởi tạo phiên màn hình của mình.

Exampe đơn giản cho tệp .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 

Các screenlệnh trên mỗi tạo một phiên màn hình. -tđặt tiêu đề của phiên; phần còn lại của dòng là lệnh để chạy và các tham số của nó.

Do đó, dòng đầu tiên và thứ hai screenbắt đầu một phiên và khởi chạy vimbên trong. Cái thứ ba chỉ bắt đầu một phiên và đưa bạn đến một dấu nhắc. chdirthay đổi thư mục làm việc cho tất cả các phiên tiếp theo.

Nếu bạn muốn có nhiều .screenrctệp, chỉ cần đặt tên cho chúng theo bất kỳ cách nào bạn muốn và chọn một tệp có screen -c myscreenrc.


5

Bạn có thể sử dụng các tùy chọn d, m, S cùng nhau:

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

S: Để tạo màn hình

d: tách ra khỏi màn hình

m: Để thực thi việc tạo màn hình, bất kể màn hình có được gọi từ bên trong màn hình khác hay không.


3
Thật thú vị, rằng bạn có thể viết như thế này, thay vì screen -dmS s1v.v. Tôi không biết rằng, khi nhóm các tùy chọn, một đối số không cần phải là cuối cùng.
Tomasz Gandor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.