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.