Debian'daki hizmetler nasıl çalışır ve bunları nasıl yönetebilirim?


79

Windows'ta, Windows üzerinden başlatılabilen tüm sistem hizmetlerini gördüğüm hizmetler yöneticisine sahibim, kullandığı kullanıcıyı kurdum, hak yönetimi var ve hizmetlere değişkenler ve diğer bazı bilgileri iletebilirim , Bunları adlandırabilirim ve bir programın çoğaltılmış servislerini oluşturabilirim. Bu yüzden Windows'ta bir ana yönetim aracım var.

Linux'ta nasıl aynısını yapabilirim? Başlangıçta "svnserve" i çalıştırmak için nasıl tetikleyebilirim veya hizmetleri özel bir bağlamda çalışacak şekilde nasıl yapılandırabilirim. Tüm "programlanmış" servisleri nasıl görebilirim?


9
Hangi dağıtım ve sürümünü kullanıyorsunuz? Hizmet yönetimi (hizmetler neredeyse her zaman Unix dünyasında 'daemonlar' olarak adlandırılır), kolay ve yarı standarttaydı. Bu günlerde işler daha çeşitli. Ve her zaman hoş değil. :) Ayrıca, bağlamdan kastın ne ?
Alexios

Öyle görünüyor ki systemd init sistem savaşını yavaşça kazanıyor. Debian, eski SysVinit'i hala kullanan son büyük oyundur ve şu anda hangi init sisteminin birlikte çalışacağını belirleme sürecindedir.
Patrick

1
Şu anda Debian (en son kararlı) ile çalışıyorum ve bağlamda yol değişkenleri veya belirli bir kullanıcı bağlamı demek istiyorum.
Erdinç Ay

1
Kullanmak sadece gerekiyorsa serverDebian at komutu, bkz unix.stackexchange.com/q/226089/130402
Peter Krauss

Yanıtlar:


124

Şu anda linux tarafından kullanılan 3 ana init sistemi bulunmaktadır. Birkaç yıl önce, sadece bir tane vardı, SysVinit. Ancak SysVinit, hizmete bağımlılık grafiği gibi yeteneklerde ciddi bir eksikliğe sahipti, bu nedenle şimdiye kadar çoğu dağıtımda kullanımdan kaldırıldı. Şu anda çoğu dağıtım sisteme geçiyor . Yine de başlangıç olmasına rağmen .

Ancak işte 3 init sisteminin her biri için sorunuzun cevabı:

 

sysvinit

Şu anda Debian ve RedHat tarafından kullanılan SysVinit. Yine de RedHat'ın (7) bir sonraki sürümü systemd kullanıyor olacak.

SysVinit servislerinin açılışta etkinleştirilmesinin tek yolu onları /etc/rc3.d(veya /etc/rc2.d) ' da bulmaktır . Tüm hizmetler içinde bulunabilir /etc/init.d. Bununla birlikte, dağıtımların genellikle bu dosyaları yönetmek için kendi araçlarına sahip olacağını ve bunun yerine bu aracın kullanılması gerektiğini unutmayın. (Fedora / RedHat serviceve chkconfigubuntu vardır update-rc.d)

Liste hizmetleri:

ls /etc/init.d/

Hizmeti başlat:

/etc/init.d/{SERVICENAME} start

veya

service {SERVICENAME} start

Hizmeti durdur:

/etc/init.d/{SERVICENAME} stop

veya

service {SERVICENAME} stop

Hizmeti etkinleştir:

cd /etc/rc3.d
ln -s ../init.d/{SERVICENAME} S95{SERVICENAME}

( S95sırayı belirtmek için kullanılır. S01 S02'den önce başlayacaktır, vb.)

Hizmeti devre dışı bırak:

rm /etc/rc3.d/*{SERVICENAME}

 

systemd

Systemd kullanarak en dikkat çekici dağıtım Fedora'dır. Yine de diğerleri tarafından kullanılıyor. Ek olarak, Debian başlangıçta sisteme geçmeyi seçtiğinde, çoğu dağıtım için defacto başlangıç ​​sistemi haline gelecektir (ubuntu zaten systemd için start-up bırakacaklarını açıkladı).

Liste hizmetleri:

systemctl list-unit-files

Hizmeti başlat:

systemctl start {SERVICENAME}

Hizmeti durdur:

systemctl stop {SERVICENAME}

Hizmeti etkinleştir:

systemctl enable {SERVICENAME}

Hizmeti devre dışı bırak:

systemctl disable {SERVICENAME}

 

sonradan görme

Başlangıcı Ubuntu millet tarafından geliştirilmiştir. Ancak debian sisteme geçmeye karar verdikten sonra , Ubuntu start-up yapacaklarını açıkladı .

Başlatma, RHEL-6'da bulunduğu için RedHat tarafından da kısa bir süre kullanıldı, ancak yaygın olarak kullanılmadı.

Liste hizmetleri:

initctl list

Hizmeti başlat:

initctl start {SERVICENAME}

Hizmeti durdur:

initctl stop {SERVICENAME}

Hizmeti etkinleştir:

Maalesef 2 yol:

  1. /etc/default/{SERVICENAME}Satır içeren bir dosya olacaktır ENABLED=.... Bu çizgiyi olarak değiştirin ENABLED=1.

  2. Bir dosya olacak /etc/init/{SERVICENAME}.override. İçmediğinden start(veya tamamen olmadığından) emin olun manual.

Hizmeti devre dışı bırak:

echo manual > /etc/init/{SERVICENAME}.override

Not: Ayrıca Gentoo tarafından kullanılan 'OpenRC' init sistemi bulunmaktadır. Şu anda Gentoo, onu kullanan tek dağıtımdır ve kullanım için kabul edilmez veya başka herhangi bir dağıtım tarafından desteklenmez. Bu yüzden onun kullanımını kapsamıyorum (yine de benim fikrim varsa, ekleyebilirim).


OpenRC, SysVinit için bir soyutlama türüdür. Onun yerini almaz, ekler.
Spidey

Harika yazı! Sadece birkaç küçük düzeltme: RHEL 6.x (ve bu nedenle, CentOS 6.x ve türevlerin geri kalanı), Ubuntu gibi (başlangıçta hizmetlerin çoğu hala SysV scriptlerini kullanıyor olsa da), start-up kullanıyor. Ayrıca, "chkconfig" (RH) ve "update-rc.d" (Debian) 'ın rc? .D dizinlerine bağlantı eklemenin "resmi" yolu olduğunu da eklerdim.
rsuarez

RHEL6 olayında @rsuarez iyi bir nokta. Yine de pek kullanmıyor gibi gözüküyor. Sistemin çoğu hala eski SysVinit ile çalışıyor (RHEL6 sistemlerimden birinde 17 başlangıç, 89 SysVinit). Ve chkconfigve update-rc.dbahsedilmektedir. SysVinit :-)
Patrick

@Patrick 1 numarada hemfikir; "ayy!" # 2 :-) tarihinde
rsuarez

1
Kapsamlı cevap için teşekkürler, şimdi büyük resmi anladım. Şu anda Debian'ı (en son kararlı) kullanıyorum, burada Almanca konuşulan Avrupa'da en iyi önerilere sahip, ancak belki Redhat'ı deneyeceğim.
Erdinç Ay

9

Farklı dağıtımlar hizmetleri yönetmek için farklı mekanizmalar kullanır. Hizmetleri yönetme yazılımına , diğerlerinin başlatılmasından sorumlu olan ilk işlemin geleneksel adından sonra (işlem kimliği 1 ile birlikte) init adı verilir .

Debian init'in geleneksel SysVinit değişkenini kullanır . Bu sistemde, dizinde bir komut dosyası koleksiyonu vardır /etc/init(bu ve diğer konum SysVinit kullanan dağıtımlar arasında biraz değişebilir). Bu komut dosyaları doğrudan değil, dizinlerdeki sembolik bağlarla çağrılır /etc/rc?.d. Hizmetlerin ne zaman başlatılacağını belirleyen bu sembolik bağların varlığı ve adıdır. Daha fazla ayrıntı için, Debian Reference'taki init ile ilgili bölümü okuyun .

/etc/rc?.dHangi hizmetlerin zaten mevcut olduğunu görmek için bir göz atın . Noktadan önceki harf veya rakam çalışma seviyesidir; Adını başlayan girişleri Sargümanı ile yürütülür startçalışma seviyesi girerken ve adı ile başlar girişleri Kçalışma seviyesi çıkarken yürütülür. Normal çalışma seviyesi sırası: Önyükleme sırasında S (yani /etc/rcS.d/S*yürütülür), sonra 2 (yani /etc/rc2.d/S*yürütülür) Kapanma zamanında, /etc/rc2.d/K*yürütülür, daha sonra çalışma seviyesi 0'a (veya yeniden başlatma için 6'ya) geçer.

Özetle, yeni bir servis için bir başlangıç ​​betiği oluşturmak istiyorsanız:

  • Bir kabuk betiği yazın /etc/init.d. Bu komut biri olabilir bağımsız değişken kabul etmek zorundadır start, stop, force-reload, restart, ya da (isteğe bağlı) reloadya da status. Arasındaki fark reloadve restartolmasıdır restarteşdeğerdir stopardından startsüre reload(Servis destekliyorsa) bir şey durdurmadan yapılandırmasını yeniden yükler; force-reloaddoes reloadvarsa ve restartbaşka türlü. Örnekler için mevcut dosyalara ve Script'lerin Debian ile önyükleme sırasında çalışmasını sağlayın .
  • Run update-rc.dbaşlatmak ve hizmetinizi durdurmak için sembolik bağlantılar oluşturmak için. Servislerin çoğu 2, 3, 4 ve 5 numaralı çalışma seviyelerinde çalışır.

Svn erişimi sağlamak için Apache'yi ayarlamak ve HTTP veya HTTPS protokolünü kullanmak daha kolay olabilir. Bu, bir web tarayıcısında hızlı depo taramasına izin vermenin yan yararına sahiptir.


2

Geleneksel bir unix arkaplanından, hizmetler hakkında özel bir şey yoktur. Servisler sadece süreçtir, ancak iki istisna dışında: bir terminale ihtiyaçları yoktur ve önyüklemeye başlarlar. açılışta nasıl başlatıldıkları, init'e (sysv init, bsd init, starttart, systemd veya başka bir şey olabilir; init sayfasını kontrol edin) ve görev için mi yoksa init yapılandırması için bir sarıcı mı kullandığınıza bağlıdır. Sizi bir terminalden hizmet çalıştırmaktan alıkoyan hiçbir şey yoktur, aslında test amaçlı yaygındır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.