Hướng dẫn sử dụng screen trong linux, giữ các tiến trình chạy mặc dù kết nối bị tạm dừng

Hướng dẫn sử dụng screen trong linux, giữ các tiến trình chạy mặc dù kết nối bị tạm dừng

Tôi đoán tất cả các bạn đều biết điều này: bạn được kết nối với máy chủ của mình bằng SSH và ở giữa quá trình biên dịch một số phần mềm (ví dụ: kernel mới) hoặc thực hiện một số tác vụ khác mất nhiều thời gian và đột nhiên kết nối của bạn bị giảm do một số lý do và bạn mất công việc còn dang dở. Điều này có thể rất khó chịu, nhưng may mắn thay, có một tiện ích nhỏ gọi là “screen” cho phép bạn gắn lại phiên trước để bạn có thể hoàn thành nhiệm vụ của mình. Hướng dẫn ngắn này cho thấy làm thế nào để sử dụng màn hình cho mục đích này.

1 Cài đặt lệnh màn hình

Việc cài đặt màn hình rất dễ dàng. Trên Debian, hãy chạy:

apt-get install screen

Đối với Ubuntu, sử dụng lệnh với sudo:

sudo apt-get install screen

Và đối với Fedora, CentOS, SuSE và Mandriva cũng có các gói màn hình mà bạn có thể cài đặt với yum / yast / urpmi / …

Fedora và CentOS

yum install screen

2 Sử dụng lệnh screen

Với màn hình, bạn có thể tạo một hoặc nhiều phiên trong thiết bị đầu cuối SSH hiện tại của mình. Chỉ cần chạy

screen

Để bắt đầu nó hãy tạo ra một phiên screen hoặc cửa sổ (mặc dù bạn không thấy nó như vậy) trong thiết bị đầu cuối SSH hiện tại của bạn:

Nhấn Space hoặc Return để đến dấu nhắc lệnh:

Trông giống như thiết bị đầu cuối SSH bình thường của bạn, phải không?

Bây giờ tôi sẽ mô tả các lệnh màn hình quan trọng nhất mà bạn cần điều khiển màn hình . Các lệnh này bắt đầu bằng CTRL a để phân biệt chúng với các lệnh shell thông thường.

    • Ctrl a c  - Tạo một phiên màn hình mới để bạn có thể sử dụng nhiều phiên màn hình cùng một lúc.
    • Ctrl a n – chuyển sang sử dụng các n ext màn hình phiên (nếu bạn sử dụng nhiều hơn một).
    • Ctrl a p – Chuyển sang phiên màn hình p revious (nếu bạn sử dụng nhiều hơn một).
    • Ctrl a d – Tách một phiên màn hình (mà không giết các tiến trình trong đó – chúng tiếp tục).

Để đóng phiên màn hình trong đó tất cả các tác vụ đã kết thúc, bạn có thể nhập

exit

Bây giờ hãy chơi xung quanh với nó một chút. Trong cửa sổ màn hình của chúng tôi , chúng tôi chạy lệnh

top

Điều này sẽ trông như thế này:

Lệnh hàng đầu chạy trong màn hình

Bây giờ hãy tạo một phiên màn hình khác bằng cách gõ

Ctrl a c

Một phiên màn hình mới, trống sẽ mở ra và chúng tôi chạy ở đó

tail -f /var/log/mail.log

để có một cái nhìn liên tục vào nhật ký thư của chúng tôi:

Bây giờ bạn có thể duyệt hai phiên màn hình của mình bằng cách chạy

Ctrl a n

hoặc là

Ctrl a p

Để tách phiên màn hình và trở về thiết bị đầu cuối SSH thông thường của bạn, hãy nhập

Ctrl a d

Quay lại thiết bị đầu cuối SSH bình thường của bạn, bạn có thể chạy

screen -ls

để có danh sách các phiên màn hình hiện tại của bạn :

There are screens on:
        2477.pts-0.server1      (Detached)
        2522.pts-0.server1      (Detached)
2 Sockets in /var/run/screen/S-root.

Để kết nối lại với một trong những phiên này, hãy chạy

screen -r 2477.pts-0.server1

trong đó 2477.pts-0.server1 là tên của một trong các phiên từ đầu ra -ls màn hình .

Để thoát khỏi và hoàn thành một màn hình phiên, hoàn thành tất cả các nhiệm vụ hiện tại trong nó ( đầu có thể được hoàn thành bằng cách gõ q , tail -f /var/log/mail.log có thể được hoàn thành bằng cách gõ CTRL c ) và sau đó gõ

exit

Sau đó, bạn sẽ quay trở lại một phiên màn hình khác (nếu bạn sử dụng nhiều hơn một) hoặc với thiết bị đầu cuối SSH thông thường, nếu không có nhiều phiên màn hình được mở.

Nếu bạn muốn tìm hiểu thêm về screen , hãy chạy

man screen

3 Kết nối của tôi bị rớt – Tôi có thể làm gì?

Bây giờ, giả sử bạn biên dịch kernel trong phiên screen, một việc thường mất nhiều thời gian và đột nhiên kết nối của bạn bị rớt. Nhờ sàng lọc công việc của bạn không bị mất. Khi kết nối của bạn được sao lưu, hãy đăng nhập lại vào hệ thống của bạn bằng SSH và chạy

screen -ls

như được hiển thị trong chương 2. Từ kết quả, chọn một phiên (ví dụ 2477.pts-0.server1 ) và gắn lại vào đó:

screen -r 2477.pts-0.server1

Nếu bạn chọn đúng phiên, bạn sẽ thấy kernel của mình vẫn đang biên dịch (nếu nó chưa kết thúc trong thời gian đó) để bạn có thể tiếp tục công việc của mình.

Author Image
Hoàng Tùng

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *