Nền Tảng Khởi Động, Điều Khiển Tiến Trình Và Lập Lịch Tác Vụ Trong Linux

Hệ thống khởi động là giai đoạn đầu tiên của một máy chủ Linux, bao gồm nhiều bước để tải nhân (kernel) và chuẩn bị môi trường làm việc trước khi người dùng đăng nhập. Dòng chảy khởi động thường trải qua các bước: Kiểm tra phần cứng, Bật bộ nhớ đệm, Menu Grub, Nạp Kernel và Khởi tạo Quy trình Init.

Khởi Tạo Quy Trình Init Và Cấp Độ Hoạt Động

Quy trình Init với PID cố định là 1 đóng vai trò trung tâm trong việc thiết lập trạng thái hệ thống. Nó đọc file cấu hình để xác định cách khởi động các dịch vụ nền tảng.

Kiểm tra các dòng hiệu lực trong file cấu hình:

awk '!/^#/ && !/^$/' /etc/inittab

Cấu trúc cơ bản bao gồm bốn thành phần:

  • ID: Mã định danh duy nhất, tối đa 4 ký tự.
  • Chế độ chạy (Runlevel): Xác định mục tiêu khởi động.
  • Thao tác (Action): Chỉ dẫn cho Init về cách xử lý (ví dụ: khởi động lại).
  • Tác vụ (Process): Đường dẫn lệnh hoặc tập lệnh thực thi.

Các giá trị phổ biến cho chế độ chạy bao gồm:

Mô tả
0Tắt máy hoàn toàn
1Chế độ người dùng đơn, dành cho bảo trì
3Đa người dùng giao diện dòng lệnh (Phổ biến cho Server)
6Tải lại hệ thống

Dùng /etc/rc.d/rc.sysinit để cài đặt môi trường cơ bản, các file trong thư mục /etc/rc.d/rcX.d sẽ quyết định dịch vụ nào khởi động tại mức đó. File bắt đầu bằng S viết tắt cho Start (khởi động), còn K nghĩa là Kill (ngừng).

Quản lý trạng thái dịch vụ (Ví dụ: SSH Daemon):

# service sshd status

Xem hiện tại đang ở cấp độ nào và chuyển đổi nếu cần:

# runlevel
N 3

# init 3

Thiết lập dịch vụ tự động khởi động bằng công cụ quản lý hệ thống:

# chkconfig --list sshd
# chkconfig --level 2345 sshd on

Giám Sát Và Kiểm Soát Tiến Trình

Giao diện dòng lệnh cung cấp nhiều công cụ để xem xét tài nguyên CPU và bộ nhớ.

Quan sát tĩnh: Sử dụng ps hiển thị snapshot hiện tại.

# ps -ef | head -n 5
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Jan01 ?        00:00:02 init

Quan sát động: top cập nhật liên tục trạng thái hệ thống theo thời gian thực.

Để tìm kiếm PID dựa trên tên người dùng hoặc tên tiến trình, sử dụng pgrep:

# pgrep -l "nginx"

Lấy thông tin cây phân cấp của các tiến trình giúp hiểu quan hệ cha con:

# ptree 1

Điều khiển luồng tiến trình

Một lệnh được chấp nhận có thể chạy ẩn (background) hoặc hiện (foreground).

  • Gửi về hậu cảnh: Thêm dấu & vào cuối câu lệnh.
  • Liệt kê tác vụ sau: jobs -l
  • Kéo ra tiền cảnh: fg %số_định_danh

Nếu cần chấm dứt quá trình không phản hồi, dùng tín hiệu KILL:

# kill -9 12345
# pkill -u admin_app

Lập Kế Hoạch Tác Vụ Tự Động Hóa

Lịch trình tác vụ chia làm hai loại chính: Thực thi đơn lần và lặp lại định kỳ.

Thực hiện单次 (At)

Dùng cho nhiệm vụ chỉ chạy một lần vào thời điểm cụ thể. Đảm bảo dịch vụ atd đang chạy.

# service atd status

Sắp xếp sao chép dữ liệu logs vào buổi đêm:

# at now + 30 minutes
at> cp /var/log/messages /tmp/alert_backup
at> ^D (Nhấn Ctrl+D để hoàn tất)

Liệt kê và xóa tác vụ chưa thực thi:

# atq # Xem danh sách
# atrm 1 # Xóa tác vụ ID số 1

Lập lịch tuần hoàn (Crontab)

Dùng để lên lịch tự động lặp lại, yêu cầu dịch vụ crond phải hoạt động.

# service crond status

Sử dụng tiện ích chỉnh sửa để thêm nội dung mới, cú pháp chi tiết cho từng phút, giờ, ngày tháng:

# crontab -e

Giải pháp ví dụ: Sao lưu dữ liệu web hàng ngày vào lúc 2 giờ sáng và dọn dẹp cache mỗi nửa giờ:

0 2 * * * tar czf /backup/www_daily.tar.gz /var/www/html
30 * * * * find /tmp/cache -type f -delete

Toàn bộ danh sách đã lên kế hoạch có thể xem lại:

# crontab -l

Thẻ: linux-administration init-system process-management crontab shell-utilities

Đăng vào ngày 20 tháng 5 lúc 18:48