Daemon trong Linux là gì ?

427

Daemon trong Linux là gì ?Cuongquach.com | Hẳn khi bạn đọc nhiều tài liệu tiếng anh về Linux cơ bản, sẽ thấy thuật ngữ ‘daemon‘ xuất hiện khá nhiều khi cài đặt chương trình hay dịch vụ nào đó. Hãy cùng CuongQuach xem thử định nghĩa về Daemon trong Linux xem như thế nào nhé.

daemon-trong-linux-la-gi
daemon-trong-linux-la-gi

Daemon là gì trong Linux?

Daemon là một loại chương trình trên các hệ điều hành Like-Unix hoạt động ẩn trong background không cần sự kiểm soát bởi user. Daemon sẽ được kích hoạt bởi một sự kiện hoặc điều kiện nào đó xảy ra cụ thể.

Một daemon khi chạy nền (background) liên tục sẽ phục vụ cho việc trả lời các yêu cầu cho các dịch vụ. Thuật ngữ bắt nguồn từ Unix, nhưng hầu hết các hệ điều hành đều sử dụng tiến trình background dưới dạng này hay dạng khác. Trong Unix, tên của daemon thường kết thúc bằng “d“. Một số ví dụ bao gồm inetd, httpd, nfsd, sshd, có tên và lpd.

Một số đặc điểm về daemon như sau :

  • Daemon không thể bị gián đoạn và chỉ hoạt động khi chúng nhận được đầu vào. Có nhiều dịch vụ hệ thống được thực hiện bởi daemon, cụ thể là dịch vụ mạng, in ấn, v.v.
  • Tách ra khỏi quá trình cha mẹ.
  • Tách khỏi thiết bị đầu cuối kiểm soát.
  • chdir đến / để tách liên kết khỏi thư mục.
  • Umask 0 để bỏ qua bất cứ quyền mà tiến trình có thể đã thừa hưởng.
  • Đóng filedescriptors của bạn và mở lại những cái cụ thể theo ý thích của bạn.
  • Một lý do chính đáng khác để biến chương trình thành daemon là nó sẽ tiếp tục chạy ngay cả khi bạn đăng xuất. Bạn có thể tách chức năng khỏi việc bạn đã đăng nhập hay chưa. Khi bạn chạy nó, nó sẽ tiếp tục chạy cho đến khi nó bị giết một cách rõ ràng hoặc một lỗi khiến nó bị sập.
  • Bạn có thể xem các tập tin tồn tại hoặc không tồn tại hoặc các ổ đĩa được gắn hoặc không được gắn hoặc bất kỳ số thứ nào khác, sử dụng inotify hoặc các phương tiện khác để kiểm tra những gì đang diễn ra.
  • Giám sát một hệ thống là một lý do tốt để sử dụng một daemon. Cron có thể chạy các quy trình mỗi phút – nhưng nếu bạn cần độ chi tiết chặt chẽ hơn thế, thì cron không thể giúp được. Một daemon có thể. Với một daemon, bạn có thể thiết lập bất cứ lúc nào bạn muốn trong “vòng lặp chính” của mình.

Daemon thường được khởi tạo là process (tiến trình). Một tiến trình sẽ thực thi (hay hoạt động) một chương trình với các chức năng cụ thể của chương trình đó. Một tiến trình thì được quản lý bởi Kernel (phần core của hệ điều hành) và được gán bởi một PID (process identification number) duy nhất.

Có ba loại process trong Linux: interactive, batch, daemon.

  • Các interactive process sẽ chạy tương tác với người dùng tại giao diện dòng lệnh (chế độ all-text) như trên terminal ssh hoặc console.
  • Batch process được gửi vào hàng đợi thực thi tiến trình trong tương lai theo lịch và không liên kết tương tác với các dòng lệnh. Loại tiến trình này phù hợp để chạy các tác vụ lặp lại nhiều lần khi sử dụng hệ thống ở mức thấp.
  • Daemon được hệ thống xác định với bất kỳ process nào có process parent PID là 1, hay còn được gọi là process init. Init luôn là quá trình đầu tiên khởi động khi máy chủ khởi động và tồn tại trên máy chủ cho đến khi máy chủ tắt đi. Init chấp nhận bất kỳ process nào có parent process bị kill mà không cần quan tâm chờ trạng thái của child process. Vì vậy phương thức phổ biến để khởi chạy một daemon liên quan đến forking (tức là chia) một hoặc 2 và làm cho các process cũ, các parent process, grandparent process bị kill đi, trong khi các child (hoặc grandchild) process vẫn thực hiện các chức năng bình thường của nó.

Một số daemon được khởi chạy thông qua các script init của System V hoặc hệ thống quản lý Systemd, là các script (chương trình ngắn) được chạy tự động khi hệ thống khởi động. Chúng có thể tồn tại trong suốt thời gian của session hoặc được khởi tạo lại sau một khoảng thời gian.

Ngoài việc được khởi động bởi hệ điều hành và các chương trình ứng dụng, một số daemon được khởi động thủ công. Ví dụ các lệnh khởi tạo các deamon như mysqld, apache, nginx… Trong nhiều hệ thống Like-Unix hiện nay, bao gồm cả Linux, mỗi daemon có một script riêng (nó là một chương trình ngắn) để có thể dừng, khởi động lại hoặc đơn giản là kiểm tra trạng thái của nó.

Thuật ngữ daemon có nguồn gốc từ các daemon trong thuần thoại Hy Lạp, đó là những sinh vật siêu nhiên được xếp hạng giữa các vị thần và những con người, sở hữu kiến thức uyên thâm và quyền lực. Socrates từng nói rằng có một daemon đưa ra cảnh báo và lời khuyên nhưng không bao giờ ép buộc anh theo dõi nó.

Từ daemon được sử dụng lần đầu tiên trong dự án MAC (sau này trở thành phòng lab MIT) sử dụng IBM 7094 vào năm 1963. Cách dùng từ ngữ này được lấy cảm hứng từ các daemon trong vật lý và nhiệt động lực học của Maxwell, đã giúp phân loại các phân tử có tốc độ khác nhau và thuật ngữ này cũng được mô tả quá trình hoạt động không ngừng nghỉ của các process trong hệ thống dưới background. Sau này, nó còn được diễn giãi với cách dùng từ viết tắt của Disk And Execution Monitor.

Bài viết giải thích về daemon của Cuongquach đến đây là hoàn tất rồi, cảm ơn các bạn đã theo dõi nhé. Nếu có thắc mắc nào khác đừng ngại bình luận để mình biết nha.

Nguồn: https://cuongquach.com/

LEAVE A REPLY