Runlevel trong Linux là một khái niệm dùng để xác định trạng thái hoạt động của hệ thống ở một thời điểm nhất định. Mỗi runlevel sẽ quy định tập hợp các dịch vụ, tiến trình nào được phép chạy hoặc bị dừng trên hệ thống Linux. Trong bài viết này, mình sẽ cùng bạn tìm hiểu rõ về các cấp bậc và cách sử dụng runlevel chi tiết.
Những điểm chính
- Định nghĩa: Hiểu rõ
runlevellà trạng thái hoạt động của hệ thống, quy định các dịch vụ nào được phép chạy. - Phân tích 7 chế độ cấp bậc: Nắm vững ý nghĩa và mục đích sử dụng của từng
runlevel, từ tắt máy (0), chế độ bảo trì (1), đến chế độ dòng lệnh (3) và đồ họa (5). - Hướng dẫn kiểm tra Runlevel: Biết cách sử dụng các lệnh
runlevelvàwho -rđể nhanh chóng xác định trạng thái hoạt động hiện tại của hệ thống. - Cách thay đổi runlevel: Thành thạo các lệnh
initvàtelinitđể chuyển đổi giữa cácrunlevelmột cách linh hoạt, phục vụ cho các nhu cầu quản trị khác nhau. - Cách cài đặt mặc định: Học cách sử dụng
systemctl set-defaultđể thiết lậprunlevelkhởi động mặc định, tối ưu hóa hệ thống cho môi trường máy chủ hoặc máy tính để bàn. - Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan trực tiếp đến runlevel trong Linux.
Runlevel là gì?
Runlevel là thuật ngữ kỹ thuật dùng để chỉ trạng thái vận hành được thiết lập sẵn trên các hệ điều hành dựa trên Unix và Linux. Hệ thống sử dụng một số nguyên đơn giản từ 0 đến 6 để định danh cho mỗi trạng thái này. Mỗi cấp độ sẽ quy định chính xác những dịch vụ hoặc chương trình nào được phép khởi chạy và những dịch vụ nào phải dừng lại sau khi hệ điều hành hoàn tất quá trình khởi động. Trong kiến trúc khởi động truyền thống, runlevel chính là trạng thái của tiến trình init – tiến trình cha của mọi tiến trình khác trên hệ thống.

Phân tích 7 chế độ cấp bậc trong runlevel
1. Các trạng thái vận hành cố định (Runlevels 0, 1, 6)
| Runlevel | Tên gọi và chức năng | Mục đích sử dụng chi tiết |
|---|---|---|
| 0 | System Halt (Tắt hệ thống) | Đây là trạng thái dừng hoàn toàn và hệ thống chấm dứt mọi tiến trình và ngắt nguồn điện an toàn. Bạn không bao giờ thiết lập runlevel 0 làm mặc định, nếu không máy chủ sẽ tự tắt ngay sau khi khởi động. |
| 1 | Single-user mode (Chế độ đơn người dùng) | Thường được ký hiệu là s hoặc S, hệ thống khởi động tối thiểu: Không mạng, không tiến trình nền, chỉ cho phép root đăng nhập. Đây là môi trường lý tưởng để bảo trì, sửa lỗi, khôi phục mật khẩu root hoặc sửa file hệ thống. |
| 6 | Reboot (Khởi động lại) | Kích hoạt quy trình tái khởi động, hệ thống dừng dịch vụ, ghi dữ liệu xuống đĩa (sync) và gửi tín hiệu restart tới phần cứng. |
2. Các trạng thái khác tùy thuộc bản phân phối (Runlevels 2, 3, 4, 5)
| Runlevel | Mô tả và chức năng | Đặc điểm kỹ thuật và ứng dụng |
|---|---|---|
| 2 | Multi-user mode (No NFS) | Đây là chế độ đa người dùng nhưng không hỗ trợ NFS. Trên RHEL/CentOS, chế độ này ít khi được dùng làm mặc định. |
| 3 | Multi-user mode (CLI) | Là chế độ tiêu chuẩn cho Server/VPS, hoạt động đa người dùng, có mạng, nhưng chỉ dùng giao diện dòng lệnh (CLI). Việc không tải giao diện đồ họa (GUI) giúp tiết kiệm RAM và CPU, mang lại hiệu suất tối đa cho ứng dụng. |
| 4 | User-definable | Runlevel 4 thường để trống cho quản trị viên tự định nghĩa, thực tế rất ít được sử dụng. |
| 5 | Multi-user mode (GUI) | Tương tự runlevel 3 nhưng runlevel 5 kích hoạt được giao diện đồ họa. Đây là chế độ mặc định cho desktop. |
Hướng dẫn kiểm tra runlevel trên Linux
Bạn có thể kiểm tra runlevel hiện tại trên Linux bằng hai lệnh đơn giản sau:
runlevel
who -r Hai lệnh sẽ giúp bạn dễ dàng nắm bắt trạng thái vận hành hiện tại của hệ thống và xử lý các tình huống cấu hình hoặc khắc phục sự cố liên quan đến runlevel.

Cách thay đổi runlevel trên Linux
Nếu bạn muốn hệ thống chuyển sang runlevel 3 (đa người dùng, không có giao diện đồ họa), bạn nhập lệnh:
sudo init 3Lệnh này sẽ chuyển hệ thống sang chế độ vận hành phù hợp cho server hoặc môi trường sử dụng giao diện dòng lệnh. Nếu bạn muốn chuyển hệ thống từ runlevel 3 sang runlevel 5 (đa người dùng với giao diện đồ họa), bạn sử dụng lệnh:
sudo telinit 5Lệnh này sẽ kích hoạt chế độ giao diện đồ họa, thường dùng cho desktop hoặc workstation.
Cách cài đặt mặc định runlevel
- Nếu bạn muốn chọn runlevel mặc định là 5 (đa người dùng sử dụng giao diện đồ họa), hãy nhập:
sudo systemctl set-default graphical.targetLệnh này sẽ cấu hình hệ thống khởi động với mục tiêu là desktop hoặc môi trường đồ họa mỗi khi bật máy.
- Nếu bạn muốn chuyển mặc định sang runlevel 3 (đa người dùng, chỉ giao diện dòng lệnh), hãy nhập:
sudo systemctl set-default multi-user.targetLệnh này sẽ đảm bảo hệ thống khởi động ở chế độ CLI, phù hợp cho server hoặc máy chủ làm việc với dòng lệnh.
Câu hỏi thường gặp
Khi nào nên dùng runlevel 1?
Runlevel 1 phù hợp cho các tác vụ bảo trì quan trọng như sửa file hệ thống, khôi phục mật khẩu root hoặc khắc phục lỗi nghiêm trọng. Ở chế độ này chỉ có root đăng nhập, không mạng và không dịch vụ nền nên hạn chế tối đa rủi ro xung đột hay truy cập trái phép.
Vì sao không nên đặt runlevel 0 làm mặc định khi khởi động?
Runlevel 0 là trạng thái tắt hẳn hệ thống: mọi tiến trình bị dừng, dữ liệu được ghi xuống đĩa rồi tắt nguồn. Nếu đặt runlevel 0 làm mặc định, hệ điều hành sẽ tự tắt ngay sau khi khởi động xong, khiến máy không thể sử dụng bình thường và gây gián đoạn dịch vụ.
Lý do server/VPS thường dùng runlevel 3 thay vì 5 là gì?
Runlevel 3 chỉ chạy chế độ đa người dùng với giao diện dòng lệnh, không tải GUI nên tiết kiệm RAM, CPU và giảm bề mặt tấn công. Với server, tài nguyên cần ưu tiên cho dịch vụ nên chạy ở runlevel 3 giúp hiệu suất và độ ổn định cao hơn runlevel 5.
Sự khác nhau giữa lệnh init và telinit khi đổi runlevel là gì?
Cả hai lệnh đều dùng để yêu cầu hệ thống chuyển sang runlevel khác. init là lệnh gốc gắn với tiến trình init, còn telinit là một front-end giao tiếp với init để gửi yêu cầu thay đổi. Trên nhiều hệ thống, telinit chỉ là symlink tới init nên hành vi thực tế gần như tương đương nhau.
Hiểu rõ runlevel giúp bạn nắm được cách Linux quản lý trạng thái hoạt động của hệ thống, từ đó kiểm soát quá trình khởi động, tắt máy hay chuyển đổi chế độ vận hành một cách chủ động và an toàn. Khi biết cách kiểm tra, thay đổi và áp dụng runlevel phù hợp, bạn có thể xử lý sự cố nhanh hơn, tối ưu tài nguyên và quản trị hệ thống hiệu quả hơn. Hy vọng qua bài viết này, bạn đã có nền tảng vững chắc để làm việc với runlevel và sẵn sàng áp dụng vào thực tế quản trị Linux hằng ngày.




