Yönetici haklarıyla başlangıçta tomcat'ı başlatın


23

Sisteme giriş yapmadan önce bir işlem çalıştırmam gerekiyor. Hizmetler gibi nasıl çalıştırılır? Linux'ta nasıl servis yapabilirim?

Ubuntu ve Fedora'da mı? Hizmet özelleştirilmiş


6
Hizmetlerin nasıl başlatılacağı Linux dağıtımında çok şartlıdır. Lütfen bize neyi başarmaya çalıştığınızı söyleyin (ve ne dağınık ve belki de Masaüstü Ortamı), çünkü şu anda muhtemelen doğru olanı düşünmediğinizi düşünüyorum.
— xenoterracide 12:10

Yanıtlar:


23

Bir hizmeti sisteme giriş yapmadan veya giriş yapmadan önce çalıştırmak için (yani "önyüklemede"), bir başlangıç ​​betiği oluşturmanız ve önyükleme sırasına eklemeniz gerekir.
Hizmet betiğinin üç bölümü vardır: Başlat, durdur ve yeniden başlat.
Bir servis betiğinin temel yapısı:

#!/bin/bash
#
RETVAL=0;

start() {
echo “Starting <Service>”
}

stop() {
echo “Stopping <Service>”
}

restart() {
stop
start
}

case “$1″ in
start)
  start
;;
stop)
  stop
;;
restart)
  restart
;;
*)

echo $”Usage: $0 {start|stop|restart}”
exit 1
esac

exit $RETVAL  

Komut dosyasını istediğiniz gibi ayarladıktan sonra, /etc/init.d/ içine koymanız yeterlidir,
ve bunu sistem hizmeti başlatma işlemine ekleyin (Fedora'da, Ubuntu kullanıcısı değilim> D):

chkconfig -add <ServiceName>  

Sistem önyükleme işlemine servis eklenecek ve manuel olarak yeniden başlatmanız gerekmeyecek.

Şerefe!


2
Başlatma, durdurma ve yeniden başlatma sırasında genellikle basit başlangıç ​​komut dosyaları için yeterli olduğuna dikkat edin. Muhtemelen Debian'da ve init-fonksiyon paketinde status_of_proc () içeren diğer dağıtımlarda kolay olan bir 'status' eylemi eklemek de isteyebilirsiniz. İyi yönetilen paketler, LSB'nin gerektirdiği tüm işlevleri içerecektir ( refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/… ). Ubuntu'da tomcat ile dağıtılan init betiği bu işlemlerin tümünü içeriyor, muhtemelen bunu kullanmaktan bahse giriyor.
— Steven D

19

İnit sistemine bağlı olarak, init betiğini farklı şekilde yaratırsınız. Fedora size başlangıç ​​ve sistem seçimi ve tabii ki SysV uyumluluğu sunar.

sonradan görme

  • hizmet tanımı dosyası oluştur /etc/init/custom-tomcat.conf
  • içine koymak:

    start on stopped rc RUNLEVEL=3
    respawn
    exec /path/to/your/tomcat --and --parameters
    

Ve Tomcat'ınız sistemin başlatılmasıyla başlamalıdır.

systemd

  • hizmet tanımı oluştur /etc/systemd/system/custom-tomcat.service
  • içine koymak:

    [Service]
    ExecStart=/path/to/your/tomcat --and --parameters
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

ve kullanarak hizmetinizi etkinleştirin systemctl enable custom-tomcat.service. Her normal açılışta başlayacaktır.

Elbette her iki init sistemi için de birkaç konfigürasyon seçeneği var, bunları dokümanlarında kontrol edebilirsiniz.


7

Tomcat oldukça yaygın bir hizmettir, dağıtımın sağladığı init betiğine bakmanızı öneririm. Muhtemelen tweaking ile az veya hiç, özelleştirilmiş ikili ile çalışır.


6

Bir crondaemonunuz varsa , önceden tanımlanmış cron zaman kancalarından biri @reboot, sistem başladığında doğal olarak çalışandır. Dosyanızı crontab -edüzenlemek için çalıştırın crontabve bir satır ekleyin:

@reboot /your/command/here

Bu, tüm yeni girişimler için geçerli mi, yoksa sadece yeniden başlatılıyor mu?
— WhyNotHugo

SADECE fcron için geçerlidir - vixie-cron veya diğer herhangi bir cron AFAIK için geçerli değildir.
— Maciej Piechotka

@ Maciej Kesinlikle vixie-cron için çalışıyor;
— Kullandığım

@Hugo Tüm başlangıçlar
— Michael

6

Bilgisayar başlatıldıktan sonra ancak bir kullanıcı oturum açmadan önce yalnızca bir komut dosyasını çalıştırmak için, /etc/rc.local komut dosyasını tam olarak bu görevi çözmesi için düzenleyebilirsiniz.


3

Aşağıdaki gibi, belirli bir kullanıcının izinleri altında çalışmanıza izin veren daha karmaşık bir komut dosyası yapabilirsiniz:

#!/bin/sh
NAME=myservice
DESC="My Service"
USERGROUP="myservice:myservice"

#Helper functions
start() {
        start-stop-daemon --start --quiet --background --make-pidfile \
                --pidfile /var/run/$NAME.pid --chuid $USERGROUP \
                --exec /usr/local/bin/myservice
}

stop() {
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
                --exec myservice --retry 30
}

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        stop
        echo "$NAME."
        ;;
  restart)
        echo -n "Restarting $DESC: "
        #set +e
        stop
        #set -e
        #sleep 1
        start

        echo "$NAME."
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart}" >&2
        exit 1
        ;;
esac

exit 0

Komut dosyası /etc/init.d/myservice dizinine girerek servisi yürütün:

/etc/init.d/myservice start

Nasıl çalıştığını anlamak için start-stop-daemon'daki man sayfasını okuyun.


1

Ubuntu veya Debian'da istediğiniz gibi kullanabilirsiniz.

update-rc.d your_service defaults

ayırmak

update-rc.d -f your_service remove

Hoşçakal! \O

fonksiyonların durumunu uygulamak güzel ve LSB uyumlu olması için zorla yeniden yükle


daemonumun service --status-alllistede görünmesi nasıl yapılır ?
— Necktwi
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.