Tôi đang viết một quy trình daemon cho một hệ thống Debian C
sử dụng Ổ cắm tên miền Unix .
Nếu thư mục làm việc của tiến trình daemon là thư mục gốc, có thư mục thành ngữ nào để đặt ổ cắm trên hệ thống tệp không?
Tôi đang viết một quy trình daemon cho một hệ thống Debian C
sử dụng Ổ cắm tên miền Unix .
Nếu thư mục làm việc của tiến trình daemon là thư mục gốc, có thư mục thành ngữ nào để đặt ổ cắm trên hệ thống tệp không?
Câu trả lời:
Chúng thường được tìm thấy trong /tmp
hoặc một thư mục con của chúng. Lưu ý rằng tất cả mọi thứ trong /tmp
là tùy thuộc vào tẩy xoá lúc tắt máy - không phải là nó nhất thiết phải được xoá hoàn toàn, chỉ cần xét rằng nó có thể , vì vậy nếu bạn sử dụng, kiểm tra nếu bạn phải tạo thư mục con của bạn mỗi lần. Bạn sẽ muốn sử dụng thư mục con nếu bạn muốn hạn chế quyền truy cập thông qua các quyền, vì /tmp
có thể đọc được trên thế giới.
/run
và /var/run
(có thể được liên kết với nhau) được sử dụng theo cách tương tự, nhưng chúng thường được gắn dưới dạng hệ thống tập tin tmpfs - có nghĩa là chúng được tạo khi khởi động và nằm trong bộ nhớ , không phải trên đĩa (vì vậy không sử dụng như một nơi để kết xuất số lượng lớn dữ liệu). Đối với một ổ cắm thời gian chạy, nó có lẽ là một lựa chọn tốt.
Lưu ý rằng /run
, và tất cả các thư mục khác được đề cập ở đây ngoại trừ /tmp
, chỉ có thể ghi được bằng root. Đối với quy trình hệ thống, điều này là tốt, nhưng nếu ứng dụng có thể được chạy bởi người dùng không có đặc quyền, bạn có thể muốn sử dụng /tmp
hoặc tạo thư mục cố định ở đâu đó và đặt quyền trên đó hoặc sử dụng vị trí trong $ HOME của người dùng.
Có thể tạo một thư mục trong /usr/share
(hoặc /usr/local/share
) trong khi cài đặt. Các thư mục và nội dung không có khả năng gặt hái trên các bốt như chúng sẽ ở trong /tmp
hoặc /run
. Tuy nhiên, như jordanm chỉ ra trong các bình luận, /usr
có thể được gắn chỉ đọc và hướng dẫn phân cấp hệ thống tập tin linux phản ánh điều này . Tất nhiên, nó không thể chỉ đọc khi ứng dụng của bạn được cài đặt, vì vậy nếu bạn cảm thấy thoải mái khi tạo một ổ cắm ở đó thì bạn có thể để nó lại và sử dụng nó sau (bạn vẫn có thể ghi vào ổ cắm mặc dù tập tin chỉ đọc).
Nếu bạn muốn một nơi nào đó bền bỉ trên các đôi giày không được gắn ở chế độ chỉ đọc, thì đó /etc
là một cách đặt cược khá an toàn, vì điều này thường được sử dụng cho các cấu hình trên toàn hệ thống và cấu hình lại. OTOH, có thể có các hệ thống trong đó thiết bị nằm dưới toàn bộ hệ thống tập tin gốc ở chế độ chỉ đọc (ví dụ: hệ thống nhúng), với / tmp và / chạy trên thiết bị khác (có thể: tmpfs trong bộ nhớ). Vì vậy, hai chiến lược mạnh mẽ nhất dường như là:
Cài đặt ổ cắm đến một vị trí cố định khi ứng dụng được cài đặt.
Tạo một thư mục trong /run
hoặc /var/run
tại thời gian chạy và đặt ổ cắm ở đó.
Làm điều tương tự chỉ trong /tmp
.
Ưu điểm của cái đầu tiên là không có vấn đề gì, một khi ứng dụng được cài đặt, bạn sẽ có một ổ cắm để sử dụng. Ưu điểm của cái thứ hai là nó có thể thuận lợi hơn cho việc lập trình lành mạnh. Ưu điểm của thứ ba là nó không yêu cầu đặc quyền siêu người dùng. Sẽ dễ dàng để chuyển từ thực hiện này sang thực hiện khác nếu bạn thay đổi tâm trí của bạn sau này.
Cuối cùng, khi BatchyX đưa ra, ít nhất bạn nên cung cấp tùy chọn cấu hình cho việc này, tùy thuộc vào lựa chọn mặc định của bạn.
/run
hoặc /var/run
cũng thường được sử dụng cho các quá trình root.
/tmp
. Tôi sẽ chỉnh sửa nó trong.
/usr
có thể được gắn dưới dạng chỉ đọc. Các tập tin không bao giờ nên được tạo ở đó trong thời gian chạy. Các đề xuất khác là tốt.
/tmp/.APPNAME/.APPSOCK
vì daemon không cần dữ liệu liên tục.
/tmp
và /run
, là chỉ root mới có quyền ghi /run
.