Tôi hoàn toàn mới với thế giới linux, vì vậy xin lỗi vì bất cứ điều gì sai tôi có thể nói.
Tôi đang cố chạy Mongo DB trên máy Debian 8.5. Khi tôi cài đặt gói (được xây dựng trước từ percona.com), tôi đã nhận thấy các tệp sau:
/etc/init.d/mongod (1)
/lib/systemd/system/mongod.service (2)
Giới thiệu /etc/init.d/mongod
Tôi hiểu rằng cái này được gọi (miễn là nó được đăng ký qua update-rc.d
) khi khởi động / ở các trạng thái hệ thống cụ thể khác (không muốn có kỹ thuật về vấn đề này, tôi đang tiếp thu nhiều thông tin và điều này có vẻ ít quan trọng hơn).
Điều này là hoàn toàn tốt cho tôi. Kịch bản thực hiện rất nhiều khởi tạo và cuối cùng khởi chạy trình nền mongo. Dường như nó đã kích hoạt các ứng dụng khác để khởi động, dừng, khởi động lại, v.v. và theo như tôi hiểu thì tôi có thể kích hoạt những thứ đó với sudo service mongod <action>
.
Giới thiệu về /lib/systemd/system/mongod.service
Tệp này dường như làm điều tương tự (ví dụ chạy mongo), nhưng với cấu hình ít hơn, chỉ có một dòng trong tham số ExecStart:
[Unit]
Description=MongoDB (High-performance, schema-free document-oriented database)
After=time-sync.target network.target
[Service]
Type=forking
User=mongod
Group=mongod
PermissionsStartOnly=true
EnvironmentFile=/etc/default/mongod
ExecStart=/usr/bin/env bash -c "/usr/bin/mongod $OPTIONS > ${STDOUT} 2> ${STDERR}"
PIDFile=/var/run/mongod.pid
[Install]
WantedBy=multi-user.target
Theo tôi hiểu điều này có thể được kích hoạt với sudo systemctl start mongod
.
Tôi không hiểu nếu điều này được gọi lúc khởi động hay không.
Tôi không hiểu tại sao cần có hai trong số các tệp 'dịch vụ' này và làm cách nào tôi có thể thoát khỏi một (có thể là tệp trong / lib / systemd, vì nó đơn giản hơn nhiều).
Tôi không hiểu nếu có bất kỳ mối quan hệ giữa hai.
Tôi cũng đã đọc nó
systemctl
hoạt động trêninit.d
các tập lệnh và trong trường hợp này tôi không hiểu tập tin nào trong hai tập tin sẽ được kích hoạtsystemctl mongod start
.
Tôi nghĩ rằng có một số dư thừa và tôi nên chọn chỉ một trong hai cách. Và tôi muốn chắc chắn rằng nó là
- gọi lúc khởi động
- có thể gọi bằng lệnh (như
service
hoặcsystemctl
).
Bạn có thể giúp tôi giải tỏa tâm trí của tôi? Với sự giúp đỡ của một số ý kiến, tôi có thể tập trung và thu hẹp câu hỏi.
systemctl disable mongod
; sau đó đổi tên mongod.service thành mongod-backup.service; sau đósystemctl daemon-reload
. Bạn có nghĩ rằng điều này là chính xác? Tôi đã đọc bạn không nên sửa đổi các tệp trong / lib / systemd / system /, nhưng không đổi tên, systemctl tiếp tục bỏ qua tập lệnh init.d.