Tạo nhiều màn hình trong một vòng lặp for để chạy các chương trình song song và gửi lệnh đến từng màn hình


2

Trước khi đánh dấu câu hỏi này là dư thừa, tôi đã đọc và thử mọi câu trả lời cho các câu hỏi tương tự nhưng không thành công

Tôi có vòng lặp này trong đó nó đi qua một cấu trúc thư mục và chạy một chương trình (mất vài phút để hoàn thành) trong mỗi thư mục con trong một màn hình riêng biệt. Tôi không muốn xem đầu ra của màn hình và muốn tất cả chúng thực thi chương trình ở chế độ nền song song. Cho đến nay tôi có

for ((i = 1; i <= noLines; i++))
do
# code to change path to point to next executable goes here

screen -d -m -S results_$i -X stuff $(./runSimulator.sh 1 5 results) $'\012'    

done

Điều xảy ra là mã thực thi trong màn hình hoạt động hiện tại và mã được tuần tự hóa trên cùng một màn hình. Tôi cần chạy nhiều phiên bản cùng một lúc trong các màn hình khác nhau. Bạn có thể giúp tôi không?

Tôi đã thử tất cả những thứ này và nó không hoạt động (lỗi (không tìm thấy socket) / không có gì xảy ra hoặc giống như trên)

  1. màn hình -d -m ./runSimulator.sh 1 5 kết quả $ '\ 012'
  2. màn hình -d -m -S results_ $ i -X screen $ (./ runSimulator.sh 1 5 kết quả) $ '\ 012'
  3. màn hình -d -m -S results_ $ i màn hình -S results_ $ i -X thứ $ (./ runSimulator.sh 1 5 kết quả) $ '\ 012'

Hãy giúp tôi


1
Lý do bạn đi là gì screen thay vì các công việc nền đơn giản với chuyển hướng stdout / stderr?
Eugen Rieck

tôi đang kết nối với một máy chủ từ xa và chạy chúng thông qua ssh. do đó tôi sử dụng màn hình
The Byzantine

1
Tại sao không chạy với nền được chuyển hướng vào / ra, hoàn thành ngay lập tức, sau đó sử dụng các IO được chuyển hướng của bạn (ví dụ: đến / từ FIFO) để tương tác với các phiên bản? Bạn có sử dụng bất cứ thứ gì lạ mắt trong i / o (chẳng hạn như ncurses), điều đó sẽ tạo ra vấn đề không?
Eugen Rieck

Trên thực tế tôi đã làm như bạn nói với tôi và nó làm việc rất đẹp. Cảm ơn người đàn ông. Tôi là một người mới trong linux và script.
The Byzantine

Vui mừng vì đã được giúp đỡ!
Eugen Rieck
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.