Quản lý nhiều phiên làm việc trong Linux

penguin working on linux

Khi làm việc với giao diện dòng lệnh, các bạn có gặp phải trường hợp phải đợi một lệnh thực thi xong thì mới được thực thi lệnh tiếp theo. Trong bài viết này, mình sẽ trình bày 3 chương trình mà mình dùng để quản lý phiên làm việc trên giao diện dòng lệnh: screen, tmux và vim.

Vấn đề

Giả sử, bạn ssh vào máy chủ Ubuntu và nhập lệnh: sudo apt update && sudo apt upgrade để cập nhật các phần mềm. Nhưng bạn cũng muốn tranh thủ khoảng thời gian này để cấu hình Ngix, hoặc chỉnh sửa vài lỗi nhỏ trên website.

Làm sao để vừa có thể cập nhật mà cũng vừa có thể làm những công việc khác trên giao diện dòng lệnh bây giờ?

Có vài cách để giải quyết điều này, chẳng hạn như: tạo một ssh mới đến máy chủ, dùng Ctrl+z và jobs…

Trong bài viết này, mình sẽ giới thiệu các công cụ dùng để quản lý các phiên làm việc (session) này. Ba công cụ mà mình sẽ dùng là: screen, tmux và vim.

Ngoài 3 công cụ trên thì còn nhiều công cụ khác, như: Byobu, tab-rs… Lý do mình liệt kê 3 công cụ này là vì độ phổ biến và các tính năng đặc biệt của chúng.

GNU Screen

GNU Screen là multiplexer lâu đời trên hệ điều hành Linux. Với screen, bạn có thể tạo và quản lý nhiều phiên làm việc trên một terminal duy nhất.

So với tmux thì screen có vẻ ít tính năng hơn. Nhưng điều khiến mình vẫn dùng screen đó là cho phép tương tác với một số thiết bị qua Serial. Chẳng hạn như kết nối vào RELP của MicroPython trên ESP trong bài viết “Lập trình ESP bằng MicroPython”.

Tmux

Tmux là một multiplexer mà mình thường dùng nhất. Nó cung cấp nhiều tính năng để quản lý các phiên làm việc hiệu quả. Chẳng hạn như keybinding kiểu vim, mở một terminal mới theo chiều dọc, chiều ngang hoặc một cửa sổ mới như screen, sao chép nội dung trên terminal (thích hợp khi terminal không hỗ trợ chuột). Và tmux cũng có một thanh trạng thái (status bar) để dễ dàng quản lý hơn.

Vim

Đây không phải là tính năng chính của vim, tính năng chính của vim là soạn thảo văn bản. Nhưng bằng một số thao tác, chúng ta có thể dùng vim gần giống như một multiplexer.

Đương nhiên là nó sẽ hơi khó dùng hơn screen và tmux. Nhất là các bạn không quen với trình soạn thảo vim. Và phiên bản của vim phải từ 8.0 trở lên.

Trong trường hợp hệ điều hành không cài đặt multiplexer nào, bạn có thể dùng vim để thay thế.

Hơi sai chủ đề, nhưng mình hay dùng cách này với Git Bash trên Windows. Git Bash cung cấp các công cụ khá đầy đủ để dùng, nhưng tiếc là không có screen hay tmux. Và muốn cài được thì bạn phải dùng thêm MinGW hoặc MSYS.

MinGW cung cấp một trình biên dịch (compiler) để bạn có thể build một số chương trình từ mã nguồn. Trong khi MSYS cung cấp một kho phần mềm repo softwares để chúng ta tải về.

Trình tự mình mở terminal trong vim như sau:

  • Mở vim.
  • Nhập lệnh terminal để chia màn hình và mở chế độ terminal trong vùng mới chia: :terminal
  • Chuyển terminal sang tab mới cho dễ quản lý bằng phím tắt <C-w>T (bấm ctrl+w sau đó bấm T).
  • Tương tự như vậy, bạn có thể tạo ra nhiều terminal mới.
  • Để chuyển giữa các tab, dùng phím tắt <C-w>NgT.

Kết

Phía trên chỉ là một cách trong số nhiều cách để làm việc với cli. Ngoài quản lý nhiều phiên làm việc, tmux và screen còn giúp bạn dễ dàng quản lý các tác vụ ngầm (background) từ nhiều phiên làm việc khác (session).

Related posts

Tự động dịch tài liệu với Google Translate

Hướng dẫn cấu hình headless Raspberry Pi

Tạo hình nền gradient bằng ImageMagick (tiếp theo)