Làm cách nào để bắt đầu màn hình với nhiều phần tách trực tiếp từ dòng lệnh?


12

Tôi đang sử dụng screensau khi tôi đã đăng nhập vào sshmáy chủ của mình. Đến bây giờ, tôi thiết lập các phần tách trong cửa sổ màn hình của mình bằng tay và chạy các lệnh bằng tay như trong ảnh chụp màn hình sau:

nhập mô tả hình ảnh ở đây

  • Phần trên cùng nên chạy tail -n 1 -f /home/server/log/access.log.
  • Phần dưới bên phải sẽ chạy htop
  • Phía dưới bên trái chỉ đơn giản là một dấu nhắc lệnh

Có cách nào để thực hiện điều đó thông qua các lệnh / script, vì vậy tôi không phải làm lại nó mỗi lần bằng tay?



@muru Điều này khá trả lời cho phần làm thế nào để bắt đầu các màn hình riêng biệt, không phải là phần làm thế nào để chúng được đặt hàng trực tiếp như trên được hiển thị.
Videonauth

Mọi thứ có thể được thực hiện bằng các phím tắt trong màn hình đều có thể được thực hiện bằng các lệnh trong .screenrc. Đối với sự sắp xếp này chúng ta có các splitlệnh .
muru

Câu trả lời:


15

Đối với trường hợp cụ thể sắp xếp cửa sổ, có một lệnh màn hình để lưu chúng vào một tệp : layout dump. Từ man screen:

layout dump [filename]

Write to a file the order of splits made in the current layout. This is
useful to recreate the order of  your  regions  used  in  your  current
layout.  Only  the  current  layout is recorded. While the order of the
regions are recorded, the sizes of  those  regions  and  which  windows
correspond  to  which regions are not. If no filename is specified, the
default is layout-dump, saved in the directory that the screen  process
was  started in. If the file already exists, layout dump will append to
that file. As an example:

           C-a : layout dump /home/user/.screenrc

will save or append the layout to the user's .screenrc file.

Vì vậy, một khi bạn thực hiện sắp xếp bằng tay, nhấn Ctrla:, sau đó gõ layout dump /path/to/some/file. Bố cục sẽ được lưu vào /path/to/some/filevà sau đó bạn có thể khôi phục nó trong một phiên mới với:

screen -c /path/to/some/file

+1 cái đẹp; Các split -vdường như không có giấy tờ :) đây là lý do tại sao tôi đã đấu tranh.
Videonauth

@Videonauth nó thực sự được ghi lại trong phần keybindings mặc định. C-a | (split -v) Split the current region vertically into two new ones.
Sergiy Kolodyazhnyy

Vâng, có vẻ như nó chỉ được đề cập trong trang, bên cạnh C-a |, nhưng không có trong tài liệu GNU
muru

Tìm thấy một hành vi kỳ lạ mà bạn có thể muốn đề cập: Nếu bạn nhập ví dụ layout dump ~/layoutquy trình sẽ thất bại, nó cần phải đầy đủ đường dẫn (nghĩa là /home/$USER/layout)
Videonauth

@Videonauth kể từ khi mở rộng dấu ngã thường được thực hiện bởi trình bao, không có gì đáng ngạc nhiên nếu một lệnh đã cho không hỗ trợ nội bộ. Một số làm, hầu hết không.
muru

10

Tôi đã đưa ra những điều sau đây để tạo đầu ra hiển thị trong câu hỏi của mình và làm theo câu trả lời xuất sắc của @ muru . Sử dụng layout dumpđã cho tôi như sau:

split
focus
split -v
focus

Lưu ý: ~Mở rộng Tilde ( ) không hoạt động layout dumpvì vậy thay vì ~/layout.dmpví dụ bạn sẽ cần sử dụng /home/<username>/layout.dmp.

Từ đó tôi đã tạo ra như sau .screenrc

# create the top screen
chdir /home/server/log
screen -t "Apache Log" tail -n 1 -f access.log
# split the screen and focus onto the new created space
split
focus
#create the bash
chdir /home/server/log
screen
# split vertically and focus onto the new area
split -v
focus
# create the htop screen
screen -t "Htop" htop
# focus twice to end up with the bash area active
focus
focus

Bây giờ tôi chỉ cần gõ screenvà bắt đầu bố trí mong muốn của tôi. Tôi để nó ở đây làm ví dụ cho những ai đang thắc mắc, nhưng đừng quên bình chọn câu trả lời của @ muru, vì anh ấy là người khiến tôi có thể giải quyết vấn đề này.

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.