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ã | Mô tả |
|---|---|
| 0 | Tắt máy hoàn toàn |
| 1 | Chế độ 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) |
| 6 | Tả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