Tóm tắt: Trong hướng dẫn này, chúng ta sẽ thảo luận về một số ví dụ hữu ích về lệnh screen Linux. Trước khi kết thúc hướng dẫn này, người dùng sẽ có thể làm việc với nhiều phiên đầu cuối vỏ sử dụng cùng một cửa sổ terminal Linux duy nhất.
Là người dùng Linux, chúng ta thường cần làm việc với các nhiệm vụ kéo dài, chẳng hạn như tải xuống hoặc sao chép các file lớn, thực hiện các truy vấn cơ sở dữ liệu tốn thời gian, vv. Đôi khi những tác vụ quan trọng này bị chấm dứt đột ngột do hết thời gian phiên.
Để giảm thiểu những tình huống như vậy, chúng ta có thể sử dụng lệnh screen, đây là một chương trình phần mềm toàn màn hình được sử dụng để multiplexes một console vật lý giữa một số quy trình (thường là các shell tương tác). Nó cung cấp cho người dùng mở nhiều phiên terminal riêng biệt trong một bảng quản lý cửa sổ terminal duy nhất.
Ứng dụng screen rất hữu ích nếu bạn đang làm việc với nhiều chương trình từ giao diện dòng lệnh và tách biệt các chương trình khỏi shell terminal. Nó cũng cho phép bạn chia sẻ các phiên làm việc của mình với người dùng khác và tách/kết nối phiên terminal.
Trong hướng dẫn này, chúng ta sẽ thảo luận về cách cài đặt, cấu hình và sử dụng lệnh screen trên hệ thống Linux. Trong suốt hướng dẫn này, chúng ta sẽ hiểu về cách sử dụng và lợi ích của lệnh screen bằng các ví dụ thực tế.
Cài đặt lệnh Screen Linux
Trên Ubuntu Server Edition của tôi, lệnh screen được cài đặt sẵn. Tuy nhiên, Linux Mint không có lệnh screen được cài đặt sẵn, vì vậy tôi cần cài đặt nó bằng lệnh apt-get trước khi sử dụng.
Vui lòng tuân theo quy trình cài đặt của bản phân phối bạn để cài đặt screen.
$ sudo apt-get install screen [On Debian, Ubuntu and Mint]
$ sudo yum install screen [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a sys-apps/screen [On Gentoo Linux]
$ sudo apk add screen [On Alpine Linux]
$ sudo pacman -S screen [On Arch Linux]
$ sudo zypper install screen [On OpenSUSE]
Bây giờ, hãy xác nhận rằng lệnh đã được cài đặt thành công:
$ screen --version
Screen version 4.8.00 (GNU) 05-Feb-20
Thực tế, lệnh screen là một chương trình multiplexer giao diện dòng lệnh rất tốt trong Linux, được ẩn bên trong hàng trăm lệnh Linux.
Hãy bắt đầu xem cách sử dụng lệnh screen trong Linux với các ví dụ sau đây.
Cú pháp lệnh Screen
Cú pháp của lệnh screen như sau
$ screen [OPTIONS] [ CMD [ ARGS ] ]
Trong cú pháp trên, chúng ta có thể thấy rằng tất cả các tham số là tùy chọn và chúng được biểu thị bằng cặp ngoặc vuông ([])
.
20 ví dụ thực tiễn của lệnh screen Linux
1. Bắt đầu Screen lần đầu tiên
Chỉ cần gõ lệnh screen vào dòng lệnh. Sau đó, screen sẽ hiển thị một giao diện giống như màn hình dòng lệnh.
$ screen
2. Hiển thị tham số Screen
Khi bạn nhập vào lệnh screen, bạn có thể làm tất cả công việc của mình như bạn đang ở môi trường dòng lệnh bình thường. Nhưng vì screen là một ứng dụng, nên nó có các lệnh hoặc tham số.
Gõ “Ctrl-A” và “?” mà không có dấu ngoặc kép. Bạn sẽ thấy tất cả các lệnh hoặc tham số trên màn hình.
Để thoát khỏi màn hình trợ giúp, bạn có thể nhấn phím “space-bar” hoặc “Enter“. (Xin lưu ý rằng tất cả các lối tắt sử dụng “Ctrl-A” được thực hiện mà không có dấu ngoặc kép).
3. Cách liệt kê tất cả cửa sổ đang mở
Trong ví dụ trước, chúng ta đã khởi tạo một phiên gõ lệnh mới bằng lệnh screen. Bây giờ hãy sử dụng tổ hợp phím ctrl-a + "
để liệt kê tất cả các cửa sổ đang mở trong phiên gõ lệnh màn hình hiện tại:
Trong đầu ra trên, chúng ta có thể thấy số và tên của cửa sổ. Cột đầu tiên đại diện cho số cửa sổ và nó bắt đầu từ số không.
Cột tiếp theo đại diện cho tên của cửa sổ và định dạng mặc định của nó là @:
.
4. Cách Chấm Dứt Phiên Màn hình
Chúng ta có thể chấm dứt phiên cửa sổ đang hoạt động bằng các tổ hợp phím ctrl-a + k
. Lưu ý rằng, hành động này sẽ ngắt và để dừng thực hiện lệnh từ cửa sổ ảo hiện tại.
Trong đầu ra trên, chúng ta có thể thấy lệnh screen đang chờ xác nhận từ người dùng. Nó hiển thị thông báo cảnh báo ở góc dưới bên trái.
Tương tự như các lệnh Linux khác, chúng ta có thể sử dụng 'y'
để tiếp tục hoặc 'n'
để hủy thao tác.
5. Cách Bắt đầu Một Phiên Màn hình với Tên
Lệnh screen cho phép chúng ta tạo một phiên với tên do người dùng định nghĩa, điều này rất hữu ích khi có nhiều phiên có sẵn.
Vì vậy, hãy sử dụng tùy chọn -S
của lệnh để tạo một phiên có tên:
$ screen -S demo-screen
Trong lệnh trên, demo-screen là tên phiên.
6. Tách phiên Terminal với Screen
Một trong những ưu điểm của screen là bạn có thể tách nó ra. Sau đó, bạn có thể khôi phục lại mà không mất bất kỳ gì bạn đã thực hiện trên màn hình. Dưới đây là kịch bản mẫu:
Bạn đang ở giữa SSH trên máy chủ của bạn. Hãy nói rằng bạn đang tải xuống một bản vá 400MB cho hệ thống của bạn bằng lệnh wget.
Quá trình tải xuống ước tính mất 2 giờ. Nếu bạn ngắt kết nối SSH hoặc đột nhiên mất kết nối vô tình, thì quá trình tải xuống sẽ dừng lại. Bạn phải bắt đầu từ đầu. Để tránh điều đó, chúng ta có thể sử dụng một màn hình và tách nó ra.
Xem lệnh này. Đầu tiên, bạn phải nhập màn hình.
$ screen
Sau đó, bạn có thể tiến hành quá trình tải xuống. Ví dụ, trên Linux Mint của tôi, tôi đang nâng cấp gói dpkg sử dụng lệnh apt.
$ sudo apt install dpkg
Kết quả mẫu
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
dpkg
1 upgraded, 0 newly installed, 0 to remove and 1146 not upgraded.
Need to get 2,583 kB of archives.
After this operation, 127 kB of additional disk space will be used.
Get:1 http://debian.linuxmint.com/latest/
testing/main dpkg i386 1.16.10 [2,583 kB]
47% [1 dpkg 1,625 kB/2,583 kB 47%] 14,7 kB/s
Trong khi quá trình tải xuống đang diễn ra, bạn có thể nhấn “Ctrl-A
” và “d
”. Bạn sẽ không thấy gì khi bạn nhấn những nút đó. Đầu ra sẽ như thế này:
[detached from 5561.pts-0.mint]
pungki@mint ~ $
7. Kết nối lại phiên Terminal với Screen
Sau khi bạn tách màn hình, hãy nói rằng bạn đang ngắt kết nối với SSH và về nhà. Ở nhà, bạn bắt đầu kết nối SSH lại máy chủ và bạn muốn xem quá trình tải của mình trong quá trình tải xuống. Để làm điều đó, bạn cần khôi phục màn hình. Bạn có thể chạy lệnh này:
pungki@mint ~ $ screen -r
Và bạn sẽ thấy rằng quá trình bạn bỏ lại đang chạy.
Khi bạn có nhiều hơn một phiên màn hình, bạn cần nhập ID phiên màn hình screen. Sử dụng screen -ls để xem có bao nhiêu màn hình có sẵn.
pungki@mint ~ $ screen -ls
Kết quả mẫu
pungki@mint ~ $ screen -ls
There are screens on:
7849.pts-0.mint (10/06/2021 01:50:45 PM) (Detached)
5561.pts-0.mint (10/06/2021 11:12:05 AM) (Detached)
2 Sockets in /var/run/screen/S-pungki
Nếu bạn muốn khôi phục màn hình 7849.pts-0.mint, sau đó gõ lệnh này.
pungki@mint ~ $ screen -r 7849
8. Sử dụng Nhiều Cửa sổ Màn hình
Khi bạn cần nhiều hơn 1 màn hình để làm công việc của bạn, có thể không. Bạn có thể chạy nhiều cửa sổ màn hình cùng một lúc. Có 2 (hai) cách để làm điều đó.
Trước tiên, bạn có thể tách màn hình đầu tiên và chạy một màn hình khác trên terminal thực tế. Thứ hai, bạn làm một màn hình lồng vào như được hiển thị.
Để tạo cửa sổ mới, sử dụng tổ hợp phím ctrl-a + c
hai lần để tạo hai cửa sổ mới. Tiếp theo, hãy sử dụng tổ hợp phím ctrl-a + "
để liệt kê tất cả các cửa sổ đang hoạt động:
Trong đầu ra trên, chúng ta có thể thấy bây giờ có ba cửa sổ.
9. Cách đổi tên cửa sổ Màn hình
Trong ví dụ trước, chúng ta đã tạo hai cửa sổ mới. Tuy nhiên, tên mặc định của chúng không cung cấp bất kỳ chi tiết nào về chúng. Trong các trường hợp như vậy, chúng ta có thể gán một số tên có ý nghĩa cho chúng.
Chúng ta có thể sử dụng tổ hợp phím ctrl-a + A
để đổi tên phiên hiện tại của cửa sổ. Tổ hợp phím này yêu cầu người dùng đặt tiêu đề cho cửa sổ:
10. Chuyển đổi Giữa Cửa sổ Terminal Màn hình
Trong ví dụ trước, chúng ta đã tạo nhiều cửa sổ. Bây giờ hãy xem cách chuyển đổi giữa chúng.
Trước tiên, hãy liệt kê tất cả các cửa sổ đang hoạt động bằng tổ hợp phím ctrl-a + "
. Tiếp theo, sử dụng các phím mũi tên lên hoặc xuống để chọn cửa sổ thích hợp. Cuối cùng, nhấn phím Enter để chuyển đến cửa sổ đã chọn.
Trong ví dụ này, chúng ta đã chọn cửa sổ với tiêu đề - db-query.
11. Cách Di chuyển đến Cửa sổ Màn hình tiếp theo
Chúng ta có thể sử dụng tổ hợp phím ctrl-a + n
để di chuyển đến cửa sổ tiếp theo. Hãy hiểu điều này qua một ví dụ.
Đầu tiên, chuyển đến cửa sổ đầu tiên và xác minh nó bằng tổ hợp phím ctrl-a + "
:
Bây giờ, hãy sử dụng tổ hợp phím ctrl-a + n
hai lần để chuyển đến cửa sổ thứ ba và sử dụng tổ hợp phím ctrl-a + "
để xác nhận điều này.
Trong đầu ra trên, chúng ta có thể thấy bây giờ chúng ta đang ở trên cửa sổ thứ ba.
12. Cách Chuyển đến Cửa sổ Màn hình Trước đó
Tương tự, chúng ta có thể sử dụng tổ hợp phím ctrl-a + p
để chuyển đến cửa sổ trước đó.
Hiện tại, chúng ta đang ở trên cửa sổ thứ ba. Vì vậy, hãy sử dụng tổ hợp phím ctrl-a + p
hai lần và xác nhận rằng chúng ta lại ở trên cửa sổ đầu tiên:
Trong đầu ra trên, chúng ta có thể thấy bây giờ chúng ta quay lại cửa sổ đầu tiên.
13. Cách Chuyển đổi Giữa Cửa sổ Hiện tại và Cửa sổ Trước đó
Đôi khi, chúng ta chỉ muốn chuyển đổi giữa hai cửa sổ. Trong những trường hợp như vậy, chúng ta có thể sử dụng tổ hợp phím ctrl-a + ctrl-a
.
Để hiểu điều này, trước tiên chuyển đến cửa sổ đầu tiên:
Tiếp theo, chuyển đến cửa sổ cuối cùng:
Cuối cùng, sử dụng tổ hợp phím ctrl-a + ctrl-a
để nhảy đến cửa sổ đầu tiên một lần nữa.
14. Cách Đi đến Cửa sổ Màn hình Cụ thể
Trong các ví dụ trước, chúng ta đã xem mọi cách để chuyển đổi giữa các cửa sổ. Tuy nhiên, đôi khi chúng ta muốn nhảy đến một cửa sổ cụ thể. Trong những tình huống như vậy, chúng ta có thể sử dụng số cửa sổ.
Trước tiên, hãy sử dụng tổ hợp phím ctrl-a + "
để tìm số cửa sổ:
Trong đầu ra trên, cột đầu tiên đại diện cho số cửa sổ. Chú ý rằng, screen bắt đầu đánh số từ không.
Bây giờ, hãy sử dụng tổ hợp phím ctrl-a + 2
để nhảy đến cửa sổ thứ ba và xác minh rằng chúng ta đang ở trong cửa sổ đúng:
15. Cách Chia một Cửa sổ Màn hình theo Chiều Ngang
Tương tự như các cửa sổ thông thường, chúng ta cũng có thể chia màn hình. Chúng ta có thể sử dụng tổ hợp phím ctrl-a + S
để chia cửa sổ theo chiều ngang.
Bây giờ, chúng ta có thể sử dụng tổ hợp phím ctrl-a + tab
để nhảy giữa các khu vực.
Cuối cùng, chúng ta có thể sử dụng tổ hợp phím ctrl-a + X
để xóa khu vực hiện tại. Lưu ý rằng, ở đây chúng ta phải sử dụng ký tự X viết hoa.
16. Cách Chia một Cửa sổ Màn hình theo Chiều Dọc
Tương tự, chúng ta có thể sử dụng tổ hợp phím ctrl-a + |
để chia cửa sổ hiện tại theo chiều dọc:
Ngoài ra, chúng ta cũng có thể sử dụng tổ hợp phím ctrl-a + tab
để chuyển đổi giữa các khu vực và tổ hợp phím ctrl-a + X
để đóng khu vực hiện tại.
17. Bật Chức năng Ghi nhật ký Màn hình trên Linux
Đôi khi quan trọng ghi nhớ những gì bạn đã làm trong khi bạn đang trong giao diện dòng lệnh. Hãy nói rằng bạn là một Quản trị viên Linux quản lý nhiều máy chủ Linux.
Với chức năng đăng nhập screen này, bạn không cần phải ghi lại từng lệnh bạn đã thực hiện. Để kích hoạt chức năng ghi màn hình, chỉ cần nhấn “Ctrl-A
” và “H
”. (Vui lòng cẩn thận, chúng tôi sử dụng các chữ in hoa ‘H
’. Sử dụng chữ thường ‘h
’ sẽ chỉ tạo ảnh chụp màn hình của màn hình khác trong tệp khác có tên hardcopy).
Ở góc dưới bên trái màn hình, sẽ có thông báo cho bạn biết như: Creating logfile “screenlog.0”. Bạn sẽ tìm thấy một tệp screenlog.0 trong thư mục home của bạn.
Tính năng này sẽ ghi lại tất cả những gì bạn làm trong khi bạn đang ở trong cửa sổ screen. Để đóng lại màn hình ghi nhật ký hoạt động, nhấn “Ctrl-A
” và “H
” một lần nữa.
Một cách khác để kích hoạt chức năng ghi nhật ký, bạn có thể thêm thông số “-L
” khi chạy lần đầu tiên màn hình. Lệnh sẽ như sau.
pungki@mint ~ $ screen -L
18. Khóa Màn hình Terminal Linux
Màn hình cũng có một lối tắn để khóa màn hình. Bạn có thể nhấn phím tắt “Ctrl-A
” và “x
” để khóa màn hình. Điều này rất hữu ích nếu bạn muốn khóa màn hình của mình nhanh chóng. Đây là kết quả mẫu của màn hình khóa sau khi bạn nhấn phím tắt.
Screen used by Pungki Arianto on mint.
Password:
Bạn có thể sử dụng mật khẩu Linux của mình để mở khóa.
19. Thêm Mật khẩu vào Phiên Màn hình
Vì lý do bảo mật, bạn có thể đặt mật khẩu cho phiên màn hình của bạn. Hãy tưởng tượng một môi trường có mật khẩu. Mật khẩu sẽ được yêu cầu mỗi khi bạn cố gắng ghép vai phiên màn hình. Mật khẩu này khác với cơ chế Khoa màn hình ở trên.
Để bảo vệ màn hình bằng mật khẩu, bạn có thể chỉnh sửa tệp “$HOME/.screenrc”. Nếu tệp không tồn tại, bạn có thể tạo nó bằng tay. Cú pháp sẽ như sau.
password crypt_password
Để tạo ra mật khẩu mã hóa trên đó, bạn có thể sử dụng lệnh mkpasswd trên Linux. Dưới đây là lệnh với mật khẩu pungki123.
pungki@mint ~ $ mkpasswd pungki123
l2BIBzvIeQNOs
mkpasswd sẽ tạo một mật khẩu băm như được hiển thị ở trên. Sau khi bạn nhận được mật khẩu băm, bạn có thể sao chép nó vào tệp “.screenrc” của bạn và lưu nó. Vì vậy, tệp “.screenrc” sẽ như sau.
password l2BIBzvIeQNOs
Lần tới bạn chạy screen và tách nó, một cửa sổ sẽ yêu cầu mật khẩu khi bạn cố gắng ghép vai vào đó, như đã được thể hiện dưới đây:
pungki@mint ~ $ screen -r 5741
Screen password:
Nhập mật khẩu của bạn, đó là “pungki123” và màn hình sẽ đính kèm trở lại.
Sau khi bạn thực hiện mật khẩu màn hình này và nhấn “ Ctrl-A” và “ x“ thì kết quả sẽ như thế này.
Screen used by Pungki Arianto on mint.
Password:
Screen password:
Mật khẩu sẽ được hỏi bạn hai lần. Mật khẩu đầu tiên là mật khẩu Linux của bạn và mật khẩu thứ hai là mật khẩu bạn nhập vào tệp .screenrc của mình.
20. Rời khỏi phiên cuối màn hình
Có 2 (hai) cách để rời khỏi màn hình. Đầu tiên, chúng ta sử dụng “ Ctrl-A
” và “ d
” để tách màn hình. Thứ hai, chúng ta có thể sử dụng lệnh exit để kết thúc màn hình. Bạn cũng có thể sử dụng “ Ctrl-A
” và “ K
” để tắt màn hình.
Bảng screen command:
Lệnh |
Mô tả |
screen -S <session_name> |
Bắt đầu một phiên mới với tên phiên. |
screen -ls |
Liệt kê các phiên/màn hình đang chạy. |
screen -x |
Đính kèm vào một phiên đang chạy. |
screen -r <session_name> |
Đính kèm vào phiên đang chạy có tên. |
screen -d <session_name> |
Tách một phiên đang chạy. |
Ctrl-a c |
Tạo cửa sổ mới. |
Ctrl-a Ctrl-a |
Thay đổi sang cửa sổ hoạt động được truy cập lần cuối. |
Ctrl-a <number> |
Thay đổi cửa sổ theo số. |
Ctrl-a ' <number or title> |
Thay đổi cửa sổ theo số hoặc tên. |
Ctrl-a n or Ctrl-a <space> |
Thay đổi sang cửa sổ tiếp theo trong danh sách. |
Ctrl-a p or Ctrl-a <backspace> |
Thay đổi về cửa sổ trước đó trong danh sách. |
Ctrl-a " |
Xem danh sách cửa sổ. |
Ctrl-a w |
Hiển thị thanh cửa sổ. |
Ctrl-a k |
Tắt cửa sổ hiện tại. |
Ctrl-a \ |
Đóng tất cả các cửa sổ. |
Ctrl-a A |
Đổi tên cửa sổ hiện tại. |
Ctrl-a S |
Chia màn hình theo chiều ngang. |
Ctrl-a | or Ctrl-a V |
Chia màn hình theo chiều dọc. |
Ctrl-a tab |
Chuyển đến vùng hiển thị tiếp theo. |
Ctrl-a X |
Xóa vùng hiện tại. |
Ctrl-a Q |
Xóa tất cả các vùng trừ vùng hiện tại. |
Ctrl-a H |
Cho phép đăng nhập vào phiên màn hình. |
Ctrl-a x |
Hiển thị khóa (bảo vệ bằng mật khẩu). |
Đó là một số cách sử dụng lệnh screen Linux hàng ngày. Vẫn còn rất nhiều tính năng bên trong lệnh màn hình. Bạn có thể xem trang man sreen để biết thêm chi tiết.