Di Windows saya memiliki manajer layanan, di mana saya melihat semua layanan sistem, yang dapat dimulai melalui Windows itu sendiri, saya mengatur pengguna yang digunakannya, manajemen hak ada di sana, dan saya bisa meneruskan variabel dan beberapa informasi lain ke layanan , Saya dapat memberi nama mereka, dan saya dapat membuat layanan duplikat dari satu program dan sebagainya. Jadi saya punya alat manajemen utama di Windows.
Bagaimana saya bisa melakukan hal yang sama di Linux? Bagaimana saya dapat memicu untuk menjalankan "svnserve" saat startup, atau bagaimana saya bisa mengkonfigurasi layanan agar berjalan dalam konteks khusus. Bagaimana saya bisa melihat semua layanan "terprogram"?
server
perintah di Debian, lihat unix.stackexchange.com/q/226089/130402Jawaban:
Saat ini ada 3 sistem init utama yang digunakan oleh linux. Beberapa tahun yang lalu, hanya ada satu, SysVinit. Tetapi SysVinit secara serius kurang dalam kemampuan seperti grafik ketergantungan layanan, sehingga sudah ditinggalkan di sebagian besar distro sekarang. Saat ini sebagian besar distro beralih ke systemd . Padahal ada juga pemula .
Tapi inilah jawaban untuk pertanyaan Anda untuk masing-masing dari 3 sistem init:
SysVinit
SysVinit saat ini digunakan oleh Debian dan RedHat. Padahal versi RedHat berikutnya (7) akan menggunakan systemd.
Cara universal untuk mengaktifkan layanan SysVinit saat boot adalah dengan menghubungkannya di
/etc/rc3.d
(atau/etc/rc2.d
). Semua layanan dapat ditemukan di/etc/init.d
. Perhatikan bahwa distro akan sering memiliki alat sendiri untuk mengelola file-file ini, dan alat itu yang seharusnya digunakan. (Fedora / RedHat memilikiservice
danchkconfig
, ubuntu memilikiupdate-rc.d
)Daftar layanan:
Memulai layanan:
atau
Hentikan layanan:
atau
Aktifkan layanan:
(
S95
digunakan untuk menentukan pesanan. S01 akan mulai sebelum S02, dll)Nonaktifkan layanan:
Systemd
Distribusi paling terkenal menggunakan systemd adalah Fedora. Padahal ini digunakan oleh banyak orang lain. Selain itu, dengan Debian memilih untuk pergi dengan systemd overstart, itu akan menjadi sistem pemula yang defacto untuk sebagian besar distribusi (ubuntu telah mengumumkan mereka akan menjatuhkan pemula untuk systemd).
Daftar layanan:
Memulai layanan:
Hentikan layanan:
Aktifkan layanan:
Nonaktifkan layanan:
Pemula
Pemula dikembangkan oleh orang-orang Ubuntu. Tetapi setelah debian memutuskan untuk pergi dengan systemd , Ubuntu mengumumkan bahwa mereka akan drop up pemula .
Pemula juga secara singkat digunakan oleh RedHat, karena hadir di RHEL-6, tetapi tidak umum digunakan.
Daftar layanan:
Memulai layanan:
Hentikan layanan:
Aktifkan layanan:
2 cara sayangnya:
Akan ada file
/etc/default/{SERVICENAME}
yang berisi satu barisENABLED=...
. Ubah baris ini menjadiENABLED=1
.Akan ada file
/etc/init/{SERVICENAME}.override
. Pastikan itu berisistart
(atau tidak ada sama sekali), tidakmanual
.Nonaktifkan layanan:
Catatan: Ada juga sistem init 'OpenRC' yang digunakan oleh Gentoo. Saat ini Gentoo adalah satu-satunya distro yang menggunakannya, dan tidak sedang dipertimbangkan untuk digunakan, atau didukung oleh distro lainnya. Jadi saya tidak membahas penggunaan itu (meskipun jika pendapat saya lakukan, saya bisa menambahkannya).
sumber
chkconfig
danupdate-rc.d
disebutkan. Lihat paragraf kedua di bawah SysVinit :-)Distribusi yang berbeda menggunakan mekanisme yang berbeda untuk mengelola layanan. Perangkat lunak untuk mengelola layanan disebut init , setelah nama tradisional untuk proses pertama (dengan ID proses 1) yang bertugas memulai yang lain.
Debian menggunakan varian init tradisional SysVinit . Di bawah sistem ini, ada kumpulan skrip di direktori
/etc/init
(ini dan lokasi lain mungkin sedikit berbeda antara distribusi yang menggunakan SysVinit). Script ini tidak dipanggil secara langsung, tetapi melalui tautan simbolik di direktori/etc/rc?.d
. Keberadaan dan nama tautan simbolik inilah yang menentukan kapan layanan dimulai. Untuk lebih jelasnya, baca bab init di Referensi Debian .Lihat
/etc/rc?.d
untuk melihat layanan apa yang sudah ada. Huruf atau digit sebelum titik adalah runlevel; entri yang namanya dimulaiS
dieksekusi dengan argumenstart
ketika memasuki runlevel, dan entri yang namanya dimulai denganK
dijalankan ketika meninggalkan runlevel. Urutan runlevel normal adalah: S saat boot (jadi/etc/rcS.d/S*
dieksekusi), lalu 2 (jadi/etc/rc2.d/S*
dieksekusi). Pada saat shutdown,/etc/rc2.d/K*
dieksekusi, kemudian runlevel beralih ke 0 (atau 6 untuk reboot).Singkatnya, jika Anda ingin membuat skrip startup untuk layanan baru:
/etc/init.d
. Script ini harus menerima satu argumen yang mungkinstart
,stop
,force-reload
,restart
, atau (opsional)reload
ataustatus
. Perbedaan antarareload
danrestart
apakah iturestart
setara denganstop
diikuti olehstart
saatreload
memuat ulang konfigurasi tanpa menghentikan apa pun (jika layanan mendukungnya);force-reload
tidakreload
jika tersedia danrestart
sebaliknya. Lihat file yang ada dan Membuat skrip berjalan saat boot dengan Debian untuk contohnya.update-rc.d
untuk membuat tautan simbolis untuk memulai dan menghentikan layanan Anda. Sebagian besar layanan berjalan di runlevel 2, 3, 4 dan 5.Perhatikan bahwa untuk memberikan akses svn, mungkin lebih mudah untuk mengatur Apache dan menggunakan protokol HTTP atau HTTPS. Ini memiliki keuntungan tambahan yaitu memungkinkan penjelajahan repositori cepat melalui browser web.
sumber
Dari latar belakang tradisional unix, tidak ada yang istimewa tentang layanan. Layanan hanya proses, tetapi dengan dua pengecualian: mereka tidak membutuhkan terminal dan mereka memulai saat boot. bagaimana mereka memulai saat boot tergantung pada init (yang bisa berupa sysv init, bsd init, pemula, systemd atau yang lainnya; periksa halaman manual untuk init) dan apakah Anda menggunakan pembungkus untuk tugas atau untuk konfigurasi init. Tidak ada yang menghentikan Anda dari menjalankan layanan dari terminal, pada kenyataannya itu umum untuk tujuan pengujian.
sumber