Saya benar-benar baru di dunia linux, jadi maaf untuk kesalahan yang saya katakan.
Saya mencoba menjalankan DB Mongo pada mesin Debian 8.5. Ketika saya menginstal paket (pre built from percona.com), saya perhatikan file-file berikut:
/etc/init.d/mongod (1)
/lib/systemd/system/mongod.service (2)
Tentang /etc/init.d/mongod
Saya mengerti bahwa ini disebut (selama terdaftar melalui update-rc.d
) pada saat boot / di negara sistem tertentu lainnya (tidak ingin mendapatkan teknis tentang ini, saya menyerap banyak informasi dan ini tampaknya kurang penting).
Ini sangat baik untuk saya. Script melakukan banyak inisialisasi dan akhirnya meluncurkan daemon mongo. Tampaknya memiliki "pemicu" untuk memulai, menghentikan, memulai kembali, dll dan sejauh yang saya mengerti saya dapat memicu mereka dengansudo service mongod <action>
.
Tentang /lib/systemd/system/mongod.service
File ini tampaknya melakukan hal yang sama (mis. Jalankan mongo), tetapi dengan konfigurasi yang lebih sedikit, hanya satu baris dalam parameter 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
Sejauh yang saya mengerti ini bisa dipicu dengan sudo systemctl start mongod
.
Saya tidak mengerti apakah ini dipanggil saat boot atau tidak.
Saya tidak mengerti mengapa kebutuhan untuk dua file 'layanan' ini, dan bagaimana saya bisa menghilangkan satu (mungkin yang ada di / lib / systemd, karena jauh lebih sederhana).
Saya tidak mengerti apakah ada hubungan di antara keduanya.
Saya telah membaca yang
systemctl
berfungsi padainit.d
skrip juga, dan dalam hal ini saya tidak mengerti yang mana dari dua file yang akan dipicu olehsystemctl mongod start
.
Saya pikir ada beberapa redundansi dan saya harus memilih hanya satu dari dua cara. Dan saya ingin memastikan itu
- dipanggil saat boot
- dapat dipanggil dengan perintah (suka
service
atausystemctl
).
Bisakah Anda membantu saya menjernihkan pikiran? Dengan bantuan beberapa komentar saya mungkin dapat fokus dan mempersempit pertanyaan.
sumber
systemctl disable mongod
:; kemudian berganti nama menjadi mongod.service menjadi mongod-backup.service; kemudiansystemctl daemon-reload
. Apakah Anda pikir ini benar? Saya telah membaca Anda tidak boleh memodifikasi file di / lib / systemd / system /, tetapi tanpa mengganti nama, systemctl terus mengabaikan skrip init.d.mongod
. Ada juga kemungkinan Anda harus menghapus beberapa dependensi yang ketat, tetapi saya tidak akan berpikir begitu. Cara aman untuk memodifikasi layanan yang terpengaruh adalah menyalinnya/etc/systemd/system/
dan memodifikasi salinannya.