ฉันต้องใช้กระบวนการหนึ่งก่อนที่จะเข้าสู่ระบบ วิธีการเรียกใช้บริการ ฉันจะให้บริการใน Linux ได้อย่างไร
ใน Ubuntu และ Fedora? บริการได้รับการปรับแต่งโพง
ฉันต้องใช้กระบวนการหนึ่งก่อนที่จะเข้าสู่ระบบ วิธีการเรียกใช้บริการ ฉันจะให้บริการใน Linux ได้อย่างไร
ใน Ubuntu และ Fedora? บริการได้รับการปรับแต่งโพง
คำตอบ:
ในการเรียกใช้บริการที่ไม่มีหรือก่อนเข้าสู่ระบบ (เช่น "ในการบู๊ต") คุณจะต้องสร้างสคริปต์เริ่มต้นและเพิ่มลงในลำดับการบู๊ต
สคริปต์บริการมีสามส่วน ได้แก่ เริ่มหยุดและเริ่มใหม่
โครงสร้างพื้นฐานของสคริปต์บริการคือ:
#!/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>
บริการจะถูกเพิ่มเข้าไปในกระบวนการบูทระบบและคุณจะไม่ต้องเริ่มต้นเองอีกครั้ง
ไชโย!
ขึ้นอยู่กับระบบ 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 ของคุณควรเริ่มเมื่อระบบเริ่มทำงาน
/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
และเปิดใช้งานบริการของคุณโดยใช้ มันจะเริ่มทุกบูตปกติ
แน่นอนว่ามีตัวเลือกการกำหนดค่าอีกสองสามรายการสำหรับระบบเริ่มต้นทั้งสองคุณสามารถตรวจสอบสิ่งเหล่านั้นได้ในเอกสารประกอบ
Tomcat เป็นบริการที่ค่อนข้างธรรมดาฉันขอแนะนำให้ดูสคริปต์เริ่มต้นที่ distro อยู่แล้ว โอกาสที่มันจะทำงานร่วมกับไบนารีที่กำหนดเองของคุณด้วยการปรับแต่งเล็กน้อยหรือไม่มีเลย
หากคุณมีcron
daemon ตะขอเวลา cron ที่กำหนดไว้ล่วงหน้าอย่างใดอย่างหนึ่งคือ@reboot
ซึ่งจะทำงานตามปกติเมื่อระบบเริ่มทำงาน เรียกใช้crontab -e
เพื่อแก้ไขcrontab
ไฟล์ของคุณและเพิ่มบรรทัด:
@reboot /your/command/here
สำหรับการรันสคริปต์หลังจากที่คอมพิวเตอร์เริ่มทำงาน แต่ก่อนที่ผู้ใช้จะเข้าสู่ระบบคุณสามารถแก้ไขสคริปต์ /etc/rc.local ซึ่งมีจุดประสงค์เพื่อแก้ไขงานนี้อย่างแน่นอน
คุณสามารถสร้างสคริปต์ที่ซับซ้อนยิ่งขึ้นซึ่งอนุญาตให้คุณเรียกใช้ภายใต้สิทธิ์ของผู้ใช้เฉพาะดังต่อไปนี้:
#!/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 เพื่อทำความเข้าใจว่ามันทำงานอย่างไร