Daemon là xuất phát từ thời Unix, nhưng thuật ngữ kỳ lạ này vẫn còn được sử dụng cho đến ngày nay. Thuật ngữ này đồng nghĩa với khái niệm "service", một tác vụ chạy liên tục, thường không có sự tương tác của người dùng.
Daemon là các quá trình chạy nền và không tương tác. Nó không chịu tác động của tương tác người dùng hay bất cứ hoạt động nhấn phím nào. Không có thiết bị đầu cuối kiểm soát các tiến trình này.
Có một số ví dụ phổ biến về daemon và ngay cả khi bạn không cần biết chính xác cách hoạt động, thì ít nhất bạn cũng có thể xác định được chúng.
Daemon là gì?
Daemon hoặc Disk And Execution MONitor là một chương trình chạy như một tiến trình nền chứ không phải là một tiến trình tương tác. Daemon phổ biến trong các công cụ mạng và những tác vụ quản trị hệ thống. Bạn có thể kiểm soát một số daemon bằng cách gửi tín hiệu cho chúng.
Daemon là một tiến trình chạy trong nền không cần tương tác
Daemons hoạt động như thế nào?
Trên các hệ thống Unix, thuật ngữ daemon thường được sử dụng thay thế cho thuật ngữ tiến trình nền. Nói cách khác, đó là một quá trình đã được tách ra khỏi bất kỳ shell nào và tiếp tục chạy không cần tương tác. Một daemon đích thực cũng phải tự gán nó là con của tiến trình init đặc biệt có số ID đặc biệt là 1.
Các tác vụ điển hình khác liên quan đến việc cô lập daemon bao gồm:
- Sandbox bằng cách loại bỏ các biến không cần thiết khỏi môi trường của nó.
- Đặt thư mục root (/) làm thư mục hoạt động hiện tại của tiến trình.
- Chuyển hướng mô tả file cho đầu vào, đầu ra và lỗi sang file nhật ký hoặc /dev/null.
- Các hệ thống khác, chẳng hạn như Windows và macOS, cũng sử dụng daemon. Trong trường hợp của Windows, các service là tương đương gần nhất với daemon.
Một số daemon thường gặp là gì?
Cron (crond)
Cron (crond) là một daemon thực thi các chương trình khác theo lịch trình. Hầu hết các hệ thống Unix đều cấu hình nó để chạy tự động khi khởi động. Nó sẽ “thức dậy” một lần mỗi phút, kiểm tra các file cấu hình và thực thi bất kỳ lệnh nào được thiết lập để chạy trong phút đó. Cron đủ thông minh để phản ứng với các thay đổi đối với file crontab. Bạn không cần phải tự khởi động lại nó.
httpd
Các web server, chẳng hạn như httpd của Apache, thường chạy dưới dạng daemon - chữ d là viết tắt của daemon. Daemon Apache xử lý các yêu cầu đến bằng cách tạo một nhóm những tiến trình con để chia sẻ tải. Bạn có thể sử dụng một chương trình trợ giúp, chẳng hạn như apachectl, để kiểm soát dễ dàng hơn chính daemon httpd.
sshd
Cuối cùng, sshd là một ví dụ phổ biến khác của daemon, lần này là một tiến trình nền xử lý các kết nối SSH. Một lần nữa, nó thường bắt đầu từ khi khởi động và vẫn chạy vô thời hạn, dựa vào các tín hiệu cho một số hoạt động nhất định. Ví dụ, tín hiệu SIGHUP khiến sshd tự thực thi lại và load lại file cấu hình khi thực hiện việc này.
Sự khác biệt kỹ thuật giữa daemon, dịch vụ và quy trình là gì?
Dịch vụ (service)
Trong Windows, trình nền được gọi là dịch vụ.
Nếu bạn đang tự hỏi tại sao * NIX có một lệnh có tên là dịch vụ , thì nó chỉ được sử dụng để chạy các tập lệnh init (viết tắt cho việc khởi tạo scriptrunlevel ).
Một dịch vụ là một chương trình mà đáp ứng các yêu cầu từ các chương trình khác qua một số cơ chế giao tiếp liên quá trình (thường là qua mạng). Một dịch vụ là những gì một máy chủ cung cấp. Ví dụ, dịch vụ ánh xạ cổng NFS được cung cấp dưới dạng dịch vụ portmap riêng, được triển khai dưới dạng portmapd
daemon.
Một dịch vụ không nhất thiết phải là một daemon. Một ứng dụng người dùng có giao diện GUI có thể có một dịch vụ được tích hợp trong đó: ví dụ: ứng dụng chia sẻ tệp. Một ví dụ khác là dịch vụ X Window, là bất cứ thứ gì ngoại trừ tác vụ nền: nó chiếm lấy màn hình, bàn phím và thiết bị trỏ của bạn. Đây là một dịch vụ vì nó đáp ứng các yêu cầu từ các ứng dụng (để tạo và thao tác với Windows), thậm chí có thể đáp ứng bất kỳ nơi nào khác trên mạng. Nhưng dịch vụ X cũng đáp ứng mọi cử động gõ phím và chuột của bạn.
Quy trình (process)
Quy trình (process )là một chương trình đang chạy. Tại một thời điểm cụ thể, nó có thể là đang chạy, ngủ hoặc zombie (quá trình đã hoàn thành, nhưng chờ "parent process" của nó nhận giá trị trả về).
Một process là một hoặc nhiều luồng thực thi cùng với bộ tài nguyên được chia sẻ của chúng, trong đó quan trọng nhất là không gian địa chỉ và mô tả tệp mở. Một quá trình tạo ra một môi trường cho các luồng thực thi này trông giống như chúng có toàn bộ máy: đó là một máy ảo.
Bên trong một process, tài nguyên của các process khác và của hạt nhân là vô hình và không thể truy cập trực tiếp. Ví dụ, không có cách nào để tham khảo các tệp đang mở của một process khác, hoặc không gian bộ nhớ của chúng; như thể những thứ đó thậm chí không tồn tại (ảo).
Process và mối quan hệ của nó với kernel và các tiến trình khác, có lẽ tạo thành sự trừu tượng hóa quan trọng nhất trong các hệ điều hành giống như Unix. Các tài nguyên của hệ thống được phân chia thành các quy trình và gần như mọi thứ được hiểu là xảy ra bên trong quy trình này hay quy trình khác.
Tổng hợp