Tiến trình Daemon (Daemon Process) trong lập trình mạng và an ninh
Daemon là tiến trình ứng dụng chạy nền, không được kiểm soát trực tiếp bởi người dùng. Tiến trình này khởi động cùng hệ thống và kết thúc khi hệ thống tắt. Thường có tiến trình init làm tiến trình cha.
Tiến trình daemon trong lập trình mạng là gì?
Một tiến trình ứng dụng chạy trong nền và không bị kiểm soát trực tiếp bởi người dùng được gọi là daemon. Ngay khi hệ thống khởi động, tiến trình này bắt đầu, và khi hệ thống dừng, nó kết thúc. Tiến trình daemon thường có tiến trình init làm tiến trình cha.
Công dụng của tiến trình daemon
Mục đích của tiến trình daemon là cung cấp dịch vụ chạy nền mà không cần tương tác người dùng. Ví dụ: daemon có thể quan sát hoạt động mạng và ghi nhật ký các truyền thông đáng ngờ chạy ngầm.
Daemon và tiến trình (process) khác nhau như thế nào?
Daemon là tiến trình nền chạy mà không có giao diện người dùng. Khi sự kiện xác định xảy ra hoặc vào thời điểm định sẵn, chúng thực hiện hành động nhất định.
Cách khởi động tiến trình daemon trong Linux
PrevHomeNextHow to use RPM CommandsUpPost-Install
Cách tạo tiến trình daemon
- Sau khi fork hoàn tất, tiến trình cha kết thúc.
- Tạo phiên bản mới với setsid.
- Bỏ qua hoặc xử lý tín hiệu thích hợp.
- Khởi động lại tiến trình cha lần nữa để tiến trình dẫn đầu phiên không xuất hiện lại.
- Thay đổi thư mục làm việc của daemon.
Cách giao tiếp với tiến trình daemon
Sử dụng TCP socket là cách tốt nhất giao tiếp với daemon qua telnet. Tương tác client-server cũng có thể dùng Remote Procedure Call (RPC). Giao thức JSON là một trong nhiều loại giao thức tin nhắn có thể dùng cùng lúc.
Tiến trình daemon là gì?
Daemon ứng dụng phản hồi yêu cầu dịch vụ trong nền. Thuật ngữ bắt nguồn từ Unix, nhưng hầu hết hệ điều hành đều dùng daemon. Trên Unix, daemon thường có hậu tố "d". Ví dụ: inetd, httpd, nfsd, sshd, named, lpd.
Khác biệt daemon và tiến trình
Khác biệt chính: daemon có init làm tiến trình cha, khởi động lúc boot trong hệ thống *Nix.
Tại sao cần tiến trình daemon?
Hệ điều hành đa nhiệm dùng daemon (phát âm /ˈdiːmən/ hoặc /ˈdeɪmən/) để chạy chương trình nền thay vì dưới kiểm soát trực tiếp của người dùng. Lập lịch cron job cũng dùng daemon như cron.
Công dụng daemon trong Linux
Daemon chạy nền là chương trình Linux/UNIX quản lý nhiều tiến trình. Tên kết thúc bằng 'd' gần như phổ biến cho daemon. Ví dụ: httpd (daemon Apache), sshd (daemon truy cập SSH từ xa). Daemon thường khởi động khi boot Linux.
Cách chạy tiến trình daemon
- Tạo tiến trình mới từ tiến trình cha.
- Thay đổi mặt nạ chế độ tệp (umask).
- Ghi nhật ký nếu cần.
- Tạo SID (session identifier).
- Thay đổi thư mục làm việc hiện tại sang vị trí an toàn.
- Đóng các descriptor tệp tiêu chuẩn.
- Nhập mã daemon thực tế.
Khác biệt daemon và tiến trình nền (background process)
"Tiến trình nền" chạy độc lập với người dùng. Daemon cung cấp dịch vụ hệ thống, có thể truy cập bởi nhiều người dùng/nhiệm vụ cùng lúc. Root user hoặc root shell khởi động daemon, và root user cũng có thể dừng chúng.
Tại sao tiến trình gọi là daemon?
Thuật ngữ do lập trình viên Project MAC tại MIT tạo ra. "Maxwell's demon" (quỷ Maxwell) trong thí nghiệm tư duy là một sinh vật tưởng tượng phân tử liên tục trong nền. Unix dùng thuật ngữ tương tự.
Tất cả tiến trình đều là daemon không?
Daemon nói chung có thể là bất kỳ tiến trình nền nào, bất kể có tiến trình init liên quan hay không. Bằng cách fork và thoát (ở 'nửa cha' của fork) trong nền, nó chạy như một task. Cách này cho phép cha của daemon (shell hoặc tiến trình khởi động) nhận thông báo thoát và tiếp tục công việc bình thường.
Cách dừng tiến trình daemon
Lệnh gradle --stop dùng để dừng rõ ràng các tiến trình Daemon đang chạy. Khi thực thi, tất cả tiến trình Daemon khởi động với cùng phiên bản Gradle sẽ bị chấm dứt.