Lệnh shutdown trong Linux — Tắt hoặc khởi động lại hệ thống

Bạn đã bao giờ rơi vào tình huống đang quản lý một hệ thống VPS quan trọng, cần phải bảo trì định kỳ hoặc cập nhật kernel nhưng lại lúng túng không biết làm sao để tắt máy một cách an toàn và đúng quy trình chưa nhỉ? Việc ngắt nguồn đột ngột có thể gây ra những rủi ro vô cùng nghiêm trọng cho dữ liệu của bạn đấy, đúng không?

Trong bài viết này, chúng ta sẽ cùng tìm hiểu shutdown là gì và nắm vững cách dùng shutdown để kiểm soát hệ thống một cách chuyên nghiệp nhất. shutdown Linux không chỉ đơn thuần là một lệnh tắt máy, mà nó còn là công cụ giúp bạn lập lịch thời gian cụ thể, giúp việc cách tắt máy server trở nên cực kỳ chủ động và an toàn. Dù bạn là người mới hay đang muốn nâng cao kỹ năng quản trị, việc hiểu rõ cách dùng shutdown sẽ giúp bạn tự tin hơn rất nhiều khi thao tác trên các hệ thống máy chủ thực tế.

Cần chuẩn bị gì trước khi dùng lệnh shutdown?

  • Quyền người dùng: Yêu cầu quyền root hoặc sử dụng sudo để thực thi lệnh.
  • Hệ điều hành hỗ trợ: Hỗ trợ hầu hết các bản phân phối Linux (Ubuntu, Debian, CentOS, RHEL, Arch Linux...) và macOS.

Cú pháp lệnh shutdown là gì?

Lệnh shutdown hỗ trợ nhiều dạng cú pháp khác nhau trên các hệ thống Linux để thực hiện việc tắt hoặc khởi động lại máy tính.

shutdown [OPTIONS] [TIME] [MESSAGE]
shutdown [OPTIONS] -c

Các tùy chọn của lệnh shutdown là gì?

Lệnh shutdown cung cấp các tùy chọn cho phép bạn kiểm soát hành vi tắt máy, khởi động lại, hủy lệnh đang chờ và gửi thông báo đến người dùng đang đăng nhập.

Tùy chọn ngắn Tùy chọn dài Mô tả
-h shutdown -h tắt nguồn hoặc halt hệ thống sau khi quá trình shutdown hoàn tất.
-P --poweroff shutdown --poweroff tắt nguồn máy hoàn toàn (power off). Đây là hành vi mặc định khi không chỉ định tùy chọn khác.
-r --reboot shutdown --reboot khởi động lại hệ thống thay vì tắt máy.
-H --halt shutdown --halt dừng hệ thống nhưng không tắt nguồn điện, chỉ halt CPU.
-k shutdown -k gửi thông báo cảnh báo đến tất cả người dùng nhưng không thực sự tắt máy.
-c shutdown -c hủy bỏ lệnh shutdown đang được lên lịch chờ thực thi.
-q --quiet shutdown --quiet giảm thiểu thông báo xuất ra trong quá trình thực thi lệnh.
--no-wall shutdown --no-wall ngăn không gửi thông báo wall message đến các người dùng đang đăng nhập.
-t shutdown -t chỉ định khoảng thời gian chờ (tính bằng giây) giữa các tín hiệu gửi đến tiến trình trước khi tắt máy.
-f shutdown -f bỏ qua bước kiểm tra fsck khi hệ thống khởi động lại ở lần tiếp theo.
-F shutdown -F buộc hệ thống chạy fsck để kiểm tra filesystem khi khởi động lại ở lần tiếp theo.
-n shutdown -n thực hiện tắt máy mà không gọi init, bỏ qua quy trình dừng dịch vụ thông thường.

xem thêm: System Monitoring and Management

Sử dụng lệnh shutdown trong các tình huống thực tế như thế nào?

Các ví dụ dưới đây mô phỏng các kịch bản quản trị hệ thống thường gặp khi cần điều khiển trạng thái tắt hoặc khởi động lại máy chủ.

shutdown ngay lập tức là gì? [Tắt máy ngay tức thì]

sudo shutdown now
[/System down, scheduled for now]

Lệnh thực hiện dừng toàn bộ các tiến trình và tắt hệ thống ngay tại thời điểm thực thi. Trong thực tế, lệnh này thường được dùng khi quản trị viên cần xử lý khẩn cấp các sự cố phần cứng hoặc yêu cầu dừng máy ngay lập tức.

shutdown -r là gì? [Khởi động lại hệ thống]

sudo shutdown -r +5 "System rebooting in 5 minutes for maintenance"
[Broadcast message: System rebooting in 5 minutes for maintenance]

Lệnh lập lịch khởi động lại máy chủ sau 5 phút kèm theo một thông báo gửi tới tất cả người dùng đang đăng nhập. Trên môi trường production, việc sử dụng tham số thời gian và thông báo giúp người dùng khác chủ động lưu trữ dữ liệu trước khi hệ thống ngắt kết nối.

shutdown -c là gì? [Hủy lệnh tắt máy đã lập lịch]

sudo shutdown -c
[Buttton: Shutdown cancelled]

Lệnh dùng để hủy bỏ các tác vụ shutdown hoặc reboot đã được lên lịch trước đó nhưng chưa thực thi. Trong các tình huống thao tác nhầm hoặc cần trì hoãn việc bảo trì đột xuất, lệnh này giúp ngăn chặn việc hệ thống bị tắt ngoài ý muốn.

shutdown với thời gian cụ thể là gì? [Hẹn giờ tắt máy theo mốc thời gian]

sudo shutdown 23:30
[Broadcast message: System will go down at 23:30]

Lệnh yêu cầu hệ thống tự động tắt vào một thời điểm chính xác trong ngày. Đây là phương pháp tối ưu cho các công việc bảo trì định kỳ vào khung giờ thấp điểm để giảm thiểu ảnh hưởng đến người dùng cuối.

Tại sao không thể sử dụng lệnh shutdown trên Linux?

Trong quá trình quản trị hệ thống, người dùng thường gặp các trở ngại khi thực hiện lệnh shutdown do thiếu quyền hạn hoặc xung đột tiến trình.

Lỗi thiếu quyền hạn người dùng (Permission denied)

$ shutdown now
Must be root

OR

Must have superuser privileges

Lệnh shutdown yêu cầu quyền quản trị cao nhất để can thiệp vào tiến trình đóng hệ thống.

Lỗi không có quyền truy cập vào tty (Not in a terminal)

$ shutdown now
shutdown: not in a terminal

Lỗi này xảy ra khi người dùng thực hiện lệnh thông qua một script hoặc một kết nối không phải là terminal tương tác trực tiếp.

Lỗi xung đột khi đã có lịch trình shutdown trước đó

$ shutdown 15:00
Failed to cancel existing shutdown

Hệ thống sẽ báo lỗi nếu bạn cố gắng thiết lập một mốc thời gian mới khi một tiến trình shutdown đã được lập lịch sẵn mà chưa được hủy bỏ.

Lỗi tiến trình đang chặn việc tắt máy (System is busy)

$ shutdown now
Failed to unmount /home
Device or resource busy

Lệnh shutdown không thể hoàn tất nếu có các tiến trình hoặc người dùng khác đang truy cập trực tiếp vào các phân vùng mount trên hệ thống.

Quy trình bảo trì và tắt hệ thống server bằng lệnh shutdown trong thực tế?

Trong kịch bản bảo trì định kỳ hoặc nâng cấp phần cứng máy chủ, lệnh shutdown được sử dụng như một phần của quy trình đóng các tiến trình đang chạy và ngắt kết nối người dùng an toàn.

Bước 1: Kiểm tra danh sách người dùng đang đăng nhập

who
user1     tty1         2023-10-27 08:00
admin      pts/0        2023-10-27 09:15

Lệnh này cho phép bạn xác định các phiên làm việc đang hoạt động để thông báo cho người dùng trước khi tiến hành tắt máy.

Bước 2: Lập lịch thông báo và tắt hệ thống

sudo shutdown +10 "Hệ thống sẽ tắt để bảo trì trong 10 phút nữa. Vui lòng lưu lại công việc."
Broadcast message from root@server via /dev/pts/0 (pts/0):
 The system is going down for system maintenance in 10 minutes!

Lệnh này cho phép bạn đặt lịch tắt máy sau một khoảng thời gian nhất định kèm theo thông báo gửi đến tất cả các terminal đang kết nối.

Bước 3: Hủy lệnh tắt máy đã lập lịch

sudo shutdown -c
Broadcast message from root@server via /dev/pts/0 (pts/0):
 Shutdown cancelled.

Trong trường hợp phát sinh sự cố đột xuất cần tiếp tục vận hành, lệnh này cho phép bạn hủy bỏ tiến trình tắt máy đã được thiết lập trước đó.

Bước 4: Kiểm tra trạng thái hoạt động của hệ thống sau khi khởi động lại

uptime
 10:30:05 up 15 min,  1:23,  1 user,  load average: 0.01, 0.05, 0.00

Sau khi hệ thống đã khởi động lại xong, lệnh này giúp xác nhận thời gian uptime để đảm bảo máy chủ đã hoạt động ổn định trở lại.

Việc sử dụng lệnh shutdown trên VPS yêu cầu sự chính xác về mặt thời gian để tránh gián đoạn các tiến trình chạy ngầm. Trong các trường hợp thiết lập cron job, việc sử dụng shutdown với tham số thời gian không xác định có thể gây dừng hệ thống ngoài ý muốn. Lệnh shutdown -h now cho phép thực hiện tắt máy ngay lập tức, trong khi shutdown -r now được dùng để khởi động lại VPS. Khi quản trị VPS, việc thiếu quyền root dẫn đến lỗi Permission denied, yêu cầu phải bổ sung sudo trước lệnh. Một sai sót phổ biến là gửi tín hiệu tắt máy khi các dịch vụ database chưa kịp đóng hoàn toàn, dẫn đến nguy cơ hỏng dữ liệu. Người dùng cần kiểm tra danh sách người dùng đang đăng nhập qua lệnh who trước khi thực hiện lệnh shutdown để đảm bảo không gây ảnh hưởng đến các phiên làm việc khác.

Những câu hỏi thường gặp về lệnh shutdown?

Dưới đây là các tình huống thực tế mà người dùng thường gặp phải khi thao tác tắt hoặc khởi động lại hệ thống bằng lệnh shutdown.

Làm thế nào để tắt máy ngay lập tức?

Để dừng hệ thống ngay lập tức mà không cần chờ đợi thời gian đếm ngược, bạn sử dụng tham số now.

sudo shutdown now
[System is powering down]

Làm thế nào để khởi động lại máy tính thay vì tắt máy?

Thay vì sử dụng tùy chọn tắt máy mặc định, bạn sử dụng tham số -r (reboot) để yêu cầu hệ thống khởi động lại.

sudo shutdown -r now
[System is rebooting]

Làm thế nào để lập lịch tắt máy sau một khoảng thời gian nhất định?

Bạn có thể chỉ định thời gian tắt máy theo số phút tính từ thời điểm hiện tại.

sudo shutdown +10
[Shutdown scheduled for 10 minutes from now]

Làm thế nào để hủy một lệnh shutdown đã lập lịch trước đó?

sudo shutdown -c
[Shutdown cancelled]

Làm thế nào để tắt máy vào một thời điểm cụ thể trong ngày?

Bạn có thể sử dụng định dạng HH:MM (giờ:phút) để lập lịch tắt máy vào một mốc thời gian cố định.

sudo shutdown 23:30
[Shutdown scheduled for 23:30]

Làm thế nào để gửi thông báo cho tất cả người dùng đang đăng nhập trước khi tắt máy?

Tham số -c cho phép bạn gửi một tin nhắn tùy chỉnh đến các terminal đang hoạt động để cảnh báo người dùng.

sudo shutdown +5 "Hệ thống sẽ bảo trì và tắt máy sau 5 phút nữa."
[Broadcast message: System is going down for maintenance in 5 minutes]

Lệnh shutdown là công cụ mạnh mẽ giúp bạn quản lý việc tắt hoặc khởi động lại hệ thống Linux một cách an toàn và có kiểm soát. Bạn có thể sử dụng tham số -h để tắt máy hoàn toàn hoặc dùng tham số -r để khởi động lại hệ thống khi cần cập nhật phần mềm, đúng không nhỉ? Việc làm chủ các tham số này sẽ giúp bạn kiểm soát thời gian hệ thống dừng hoạt động vô cùng linh hoạt, tránh mọi rủi ro mất dữ liệu không đáng có. Hy vọng những chia sẻ này sẽ giúp bạn tự tin hơn khi quản trị máy chủ. Chúc bạn thành công!