เริ่มต้น Tomcat เมื่อเริ่มต้นด้วยสิทธิ์ระดับผู้ดูแล


23

ฉันต้องใช้กระบวนการหนึ่งก่อนที่จะเข้าสู่ระบบ วิธีการเรียกใช้บริการ ฉันจะให้บริการใน Linux ได้อย่างไร

ใน Ubuntu และ Fedora? บริการได้รับการปรับแต่งโพง


6
วิธีการเริ่มต้นบริการมีเงื่อนไขมากบน distro Linux โปรดบอกเราว่าคุณกำลังพยายามทำอะไร (และสิ่งที่ distro และอาจสภาพแวดล้อมเดสก์ทอป) เพราะตอนนี้ฉันคิดว่าคุณอาจไม่ได้คิดเกี่ยวกับปัญหาที่ถูกต้อง
xenoterracide

คำตอบ:


23

ในการเรียกใช้บริการที่ไม่มีหรือก่อนเข้าสู่ระบบ (เช่น "ในการบู๊ต") คุณจะต้องสร้างสคริปต์เริ่มต้นและเพิ่มลงในลำดับการบู๊ต
สคริปต์บริการมีสามส่วน ได้แก่ เริ่มหยุดและเริ่มใหม่
โครงสร้างพื้นฐานของสคริปต์บริการคือ:

#!/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  

เมื่อคุณปรับแต่งสคริปต์ตามที่คุณต้องการเพียงแค่วางลงใน /etc/init.d/
และเพิ่มลงในกระบวนการเริ่มต้นบริการระบบ (บน Fedora ฉันไม่ใช่ผู้ใช้ Ubuntu,> D):

chkconfig -add <ServiceName>  

บริการจะถูกเพิ่มเข้าไปในกระบวนการบูทระบบและคุณจะไม่ต้องเริ่มต้นเองอีกครั้ง

ไชโย!


2
โปรดทราบว่าในขณะที่เริ่มหยุดและรีสตาร์ทมักจะเพียงพอสำหรับสคริปต์ init แบบง่าย คุณอาจต้องการรวมการกระทำ 'สถานะ' ซึ่งทำได้ง่ายใน Debian และ distros อื่น ๆ ที่มี status_of_proc () ในแพ็คเกจ init- ฟังก์ชัน แพ็คเกจที่มีการจัดการที่ดีจะรวมถึงฟังก์ชั่นทั้งหมดที่จำเป็นโดย LSB ( refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/ ...... ) สคริปต์เริ่มต้นที่แจกจ่ายให้กับ Tomcat ใน Ubuntu ประกอบด้วยการกระทำเหล่านี้ทั้งหมดอาจเป็นเพียงการเดิมพันที่ใช้
Steven D

19

ขึ้นอยู่กับระบบ init คุณสร้างสคริปต์ init แตกต่างกัน Fedora ให้คุณพุ่งพรวดและ systemd ให้เลือกและแน่นอนว่าเข้ากันได้กับ SysV

พุ่งพรวด

  • สร้างไฟล์คำจำกัดความบริการเป็น /etc/init/custom-tomcat.conf
  • ใส่ใน:

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

และ Tomcat ของคุณควรเริ่มเมื่อระบบเริ่มทำงาน

Systemd

  • สร้างคำนิยามบริการ /etc/systemd/system/custom-tomcat.service
  • ใส่ใน:

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

systemctl enable custom-tomcat.serviceและเปิดใช้งานบริการของคุณโดยใช้ มันจะเริ่มทุกบูตปกติ

แน่นอนว่ามีตัวเลือกการกำหนดค่าอีกสองสามรายการสำหรับระบบเริ่มต้นทั้งสองคุณสามารถตรวจสอบสิ่งเหล่านั้นได้ในเอกสารประกอบ


7

Tomcat เป็นบริการที่ค่อนข้างธรรมดาฉันขอแนะนำให้ดูสคริปต์เริ่มต้นที่ distro อยู่แล้ว โอกาสที่มันจะทำงานร่วมกับไบนารีที่กำหนดเองของคุณด้วยการปรับแต่งเล็กน้อยหรือไม่มีเลย


6

หากคุณมีcrondaemon ตะขอเวลา cron ที่กำหนดไว้ล่วงหน้าอย่างใดอย่างหนึ่งคือ@rebootซึ่งจะทำงานตามปกติเมื่อระบบเริ่มทำงาน เรียกใช้crontab -eเพื่อแก้ไขcrontabไฟล์ของคุณและเพิ่มบรรทัด:

@reboot /your/command/here

สิ่งนี้ใช้ได้กับผู้เริ่มต้นทั้งหมดหรือเพียงแค่เริ่มต้นใหม่หรือไม่
WhyNotHugo

ใช้กับ fcron เท่านั้นไม่ใช่ vixie-cron หรือ AFAIK cron อื่น ๆ
Maciej Piechotka

@Maciej มันใช้ได้กับ vixie-cron แน่นอน นั่นคือสิ่งที่ฉันใช้
Michael Mrozek

@Hugo ที่เพิ่งเริ่มต้นทั้งหมด
Michael Mrozek

6

สำหรับการรันสคริปต์หลังจากที่คอมพิวเตอร์เริ่มทำงาน แต่ก่อนที่ผู้ใช้จะเข้าสู่ระบบคุณสามารถแก้ไขสคริปต์ /etc/rc.local ซึ่งมีจุดประสงค์เพื่อแก้ไขงานนี้อย่างแน่นอน


3

คุณสามารถสร้างสคริปต์ที่ซับซ้อนยิ่งขึ้นซึ่งอนุญาตให้คุณเรียกใช้ภายใต้สิทธิ์ของผู้ใช้เฉพาะดังต่อไปนี้:

#!/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

สคริปต์ไปที่ /etc/init.d/myservice และคุณเริ่มบริการโดยการดำเนินการ:

/etc/init.d/myservice start

อ่าน man page บน start-stop-daemon เพื่อทำความเข้าใจว่ามันทำงานอย่างไร


1

ใน Ubuntu หรือ Debian อย่างที่คุณสามารถใช้เพื่อเพิ่ม

update-rc.d your_service defaults

เพื่อลบ

update-rc.d -f your_service remove

บาย! \ o

เป็นสิ่งที่ดีที่จะใช้สถานะฟังก์ชั่นและการโหลดแรงเพื่อให้สอดคล้องกับLSB


วิธีที่จะทำให้ภูตของฉันปรากฏในservice --status-allรายการ?
Necktwi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.