Debian'da başlatma ve kapatma için bir komut dosyası nasıl eklenir?


12

başlık hemen hemen özetliyor.

Debian işletim sisteminin başlatma ve kapatma sırasına sunucu uygulamamın startup.sh ve shutdown.sh dosyasını nasıl eklerim?

Yanıtlar:


15

Debian'da hizmet ve uygulama önyükleme ve kapatma komut dosyaları yerleştirilmelidir /etc/init.d/.

Debian, /etc/init.d/skeletonuygulamanız için zevkinize göre değiştirebileceğiniz örnek bir komut dosyası sağlar.

Yerleştirildikten sonra arayın:

# update-rc.d YOURAPP defaults

Debian'ın /etc/rc?.d/sizin için simgeleri eklemesini sağlamak için.

Bir menü veya grafik arayüzü tercih ediyorsanız sysv-rc-confveya ksysvpaketine bakın.


4

Komut dosyanızı çıkış 0 yazan satırdan önce /etc/rc.local adresinden çağırabilirsiniz.

Uygulamanızı kapatmaya gelince, /etc/rc0.d dosyasına bir komut dosyası koymanızı öneririm . Büyük bir K harfi ve ardından bu komut dosyalarının çalıştırılma sırasını belirten 2 basamaklı bir sayı ve ardından bir ad ile adlandırmanız gerekir. "Stop" parametresiyle çağrılır, ancak bunu basit bir stop komut dosyası için yok sayabilirsiniz.


Zaten /etc/rcX.d ile uğraşmak zorunda kaldığınızda neden rc.local ile uğraşıyorsunuz?
womble

rc.local, basit başlangıç ​​öğeleri için uygun bir yerdir - başlatma / durdurma parametreleri vb. ile uğraşmanıza gerek yoktur. Ancak bir işlemi kapatma yeteneği yoktur. Rc0.d şeyler bir hack biraz.
Brent

3

Başlangıçta için bir göz bu .

Kapatma için, bir bağlantı oluşturun / komut dosyanızı /etc/rcX.d klasörlerinden birine kopyalayın; burada X, yürütülmesini istediğiniz çalışma düzeyidir. 0 Debian için kapatma çalışma seviyesi olduğuna inanıyorum.


Bu ihtiyacım olan kapatma bilgisidir. Bunun için teşekkürler, squillman.
harperville

1

En kolay varolan komut dosyalarını değiştirmek, sistemimde çalışır, sesler için kullanılır :)

  • başlatma, değiştirme /etc/init.d/rc.local, sh dosyanızı dosyanın sonuna ekleyin, önce: ("ekran" girişinden hemen önce çalıştırır)
  • kapatma, değiştirme /etc/init.d/halt, sh'nizi dosyanın başlangıcına, ilk yorumlardan hemen sonra ekleyin (bu komut dosyası tarafından çağrılan gerçek kapatma komutundan önce yürütülür)
  • yeniden başlatma, kapatma ile aynı, ancak /etc/init.d/reboot

1

Debian Jessie'den bu yana, eski initprogram yerini aldı systemd!

Kendine bir bak. Koşun ls -l /sbin/initve neye işaret ettiğini görün. Bugünlerde daha yeni ve daha iyi bir başlatma programı olan systemd( /sbin/init -> /lib/systemd/systemd) işaret ediyor .


Yani BURADA SEÇİLEN VE DİĞER CEVAPLAR YAPILDI !!!


* Hala System-V araçlarıyla komut dosyalarını eski şekilde yükleyebilseniz de, genel olarak konuşmak iyi bir fikir değildir.

man systemd.service diyor:*

Belirli bir ad altında bir hizmet istenir ancak birim yapılandırma dosyası bulunmazsa, systemd aynı ada sahip bir SysV başlangıç ​​komut dosyası arar ... ve bu komut dosyasından dinamik olarak bir hizmet birimi oluşturur. Bu, SysV ile uyumluluk için kullanışlıdır. Bu uyumluluğun oldukça kapsamlı olduğunu ancak% 100 olmadığını unutmayın.


Daha yeni Debian sistemleri için (örn. Jessie, Stretch, Buster, vb.)

Düşündüğünden daha kolay. (-:

İşte önyükleme veya kapatma programlarını yüklemek için yeni ve tercih edilen yöntem.

İle systemdsize öncelikle bir oluşturmak istiyorum birim dosyası . Birim dosyası kod değil, çoğunlukla bildirimlerdir.

Ardından bu birimi etkinleştirmek veya başlatmak için systemctlkomutu kullanırsınız .

systemdörneğin, kritik bir programın çökmesi veya başka bir şekilde öldürülmesi durumunda otomatik olarak yeniden başlatılmasını kolaylaştırır. Ayrıca, programınız nerede ve ne zaman varsayılan olarak sizin tarafınızdan ekstra bir çalışma olmadan kapatır.


systemdBurada öğrenmeye başlayın :

Debian itibaren ve başka yerlerde ve vs ve vb .


Başlamak için man sayfaları:

man systemd.unit - Genel olarak birim dosyaları hakkında
man systemd.service - Daimons ve tek çalışma programları gibi hizmet birimi dosyaları hakkında.

man systemctl - Komut satırı kullanıcı arayüzü
man journalctl- Systemd'in ne yaptığını görün

man systemd - Init programının kendisi hakkında


Ayrıca başka türdeki birim dosyaları da vardır;

man systemd.target - gruplar ve ortak senkronize edilmiş hedefler için.

Yukarıdaki temel bilgileri sindirdikten sonra, man -k systemdilgili diğer man sayfalarını bulmak için ile kazın .



Ne yaparsanız yapın, Debian'da bunlardan hiçbirini kullanmayın :

  • update-rc.d - System-V stili başlangıç ​​komut dosyası bağlantılarını yükleme ve kaldırma
  • sysv-rc-conf - SysV gibi init komut dosyası bağlantıları için çalışma düzeyi yapılandırması
  • runlevel - Önceki ve mevcut SysV çalışma seviyesini yazdır
  • BUM- B oot U p M anager - bir grafik çalışma seviyesi düzenleyici
  • systemadm- Sistem sistemi ve servis yöneticisi için grafiksel ön uç
    (BTW, yazar bana e-posta ile şimdi çok bozuk olduğunu söyledi.)


BİR ÖRNEK:

Bu birim dosyası, önyükleme yaptığımda NoIP.com arka plan programını başlatır ve kapattığımda kapatır.

Bu cini, zaman zaman, benim DDNS (güncellemek için benim mevcut IP adresini gönderir D inamik DNS ( D OMain N ame S o geçecek yerde böylece bilgisayarıma benim alan adı işaret tutarak erver)) sağlayıcısının veri tabanı.

Bu birim dosyaları sistemimde şu ayarlar dosyasında bulunur: /etc/systemd/system/noip2.service

Birim dosyasında neler var:

#   Comments can only go at the beginning of the line!

[Unit]
Description=Start the NoIP IP update daemon.  This runs every 30 minutes and reports our current IP to NoIP.com to update Love2d.ddns.net.
Documentation=https://no-ip.com/
Documentation=file:///nobak/Installers/NoIP/noip-2.1.9-1/README.FIRST


[Service]
# 'forking' because process returns after starting daemon (traditional unix daemon).
Type=forking

# This program runs and returns, leaving the running daemon
ExecStart=/usr/local/bin/noip2

# Be in no hurry to start this.  Max nice is +19.
Nice=15

# If it dies for any reason, then restart it
Restart=always


[Install]
# Installs a hook to use this unit file when the system boots or shuts down
WantedBy=multi-user.target

Bir birim dosyasını manuel olarak çalıştırın (örn. Test için):

  • başlangıç ile $ sudo systemctl start noip2.
  • yeniden birlikte $ sudo systemctl restart noip2.
  • dur ile $ sudo systemctl stop noip2.

Sistemi başlatırken veya kapatırken otomatik olarak bir birim dosyası çalıştıracak şekilde yapılandırın :

  • ile kullanmaya başlayın$ sudo systemctl enable noip2 .
  • kullanarak sona ile $ sudo systemctl disable noip2.

Günlüğü görüntüle

  • $ sudo journalctl -u noip2
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.