วิธีเริ่มต้นการควบคุมอัตโนมัติบน Linux (Ubuntu)


38

Supervisord ไม่ได้มาพร้อมกับสคริปต์เริ่มต้นหรือไม่ได้ระบุว่าจะเริ่มต้นอย่างไรโดยอัตโนมัติเช่น หลังจากรีบูตเครื่อง ฉันได้ลองใช้สคริปต์ /etc/init.d ที่สนับสนุนโดยผู้ใช้บางคน แต่พวกเขาทั้งหมดล้มเหลว

สิ่งที่จะเป็นทางออกที่ต้องการ?


คุณหมายถึง "ล้มเหลว" อย่างไร BTW; ดูเหมือนว่าคำถามนี้จะอยู่ในเซิร์ฟเวอร์ผิด
erenon

เดเบียนเสถียรมีสคริปต์เริ่มทำงานดังนั้นฉันเดาว่าคำถามนี้ล้าสมัยแล้ว

คำตอบ:


40

อันที่จริงผมพบหนึ่งที่ทำงานที่นี่http://gist.github.com/176149 วิธีติดตั้ง:

sudo curl https://gist.github.com/howthebodyworks/176149/raw/88d0d68c4af22a7474ad1d011659ea2d27e35b8d/supervisord.sh > /etc/init.d/supervisord

เพื่อเรียกใช้

sudo chmod +x /etc/init.d/supervisord

และหากต้องการกำหนดเวลาโดยอัตโนมัติให้ทำ

sudo update-rc.d supervisord defaults

ตรวจสอบให้แน่ใจว่า pid ที่ถูกต้องใน /etc/supervisord.conf ซึ่งถูกแมปใน /etc/init.d/supervisord

example: pidfile=/var/run/supervisord.pid

หยุดและเริ่มทำงานอย่างถูกต้อง

service supervisord stop
service supervisord start

นี่คือเดเบียนเฉพาะหรือไม่ ไม่มี /lib/init/vars.sh และ update-rc.d บนกล่อง
Centos6.5

1
เราจะรู้ได้อย่างไรว่า supervisord.conf ไปที่ใด / เราควรวาง supervisord.conf ไว้ที่ไหน?
Weiwei

1
ฉันพบว่ามันง่ายกว่ามากที่จะติดตั้ง supervisord จาก Debian squeeze repo - การทำ aptitude install supervisord รวมถึงการตั้งค่าที่ถูกต้องของไฟล์ /etc/init.d พร้อมลิงค์และทำให้ไฟล์ config ใน /etc/supervisor/supervisord.conf
RichVel

2
@RichVel นั่นเป็นเวอร์ชันอัลฟ่าที่มีข้อบกพร่องมากมายในนั้น บางทีพวกเขาส่วนใหญ่ไม่ส่งผลกระทบต่อระบบของคุณ แต่คุณไม่สามารถมั่นใจได้และไม่มีรุ่นล่าสุดสามารถกัดคุณในช่วงเวลาใดก็ได้ ตรวจสอบแหล่งที่มา repo และคุณจะเห็นว่ามีมากกว่า 320 commits ระหว่างรุ่น 3.0a8 และ 3.0b2 github.com/Supervisor/supervisor/compare/3.0a8...3.0b2
glarrain

1
@glarrain - ขอบคุณสำหรับการเชื่อมโยงหัวขึ้นและการเปรียบเทียบ ... ไม่ทราบว่า - น่ารำคาญที่แพ็คเก็ตเดเบียนเอารุ่นอัลฟ่า แน่นอนว่าจุดเสถียรของเดเบียนคือใช้รุ่นที่ได้รับการพิสูจน์แล้วเท่านั้น ...
RichVel

13

ฉันสร้างสคริปต์ upstart สำหรับ ubuntu 9.10

ตัวอย่างเช่นฉันติดตั้งผู้ดูแลในสภาพแวดล้อมเสมือนจริงจากนั้นเริ่มและควบคุมผู้ดูแลจากการพุ่งพรวด

สร้างไฟล์ข้อความ /etc/init/supervisord.conf

เนื้อหาคือ:

description     "supervisord"

start on runlevel [345]
stop on runlevel [!345]

expect fork
respawn

exec /misc/home/bkc/Python_Environments/java2/supervisord/bin/supervisord -c /misc/home/bkc/Python_Environments/java2/supervisord/work/supervisord.conf

มันจะเริ่มต้นโดยอัตโนมัติเมื่อบูต หากต้องการเริ่มต้นด้วยตนเองหลังจากสร้างไฟล์. conf ให้ใช้

sudo เริ่ม supervisord

หากต้องการหยุดบริการด้วยตนเองให้ใช้

sudo stop supervisord


2
ขอบคุณ! นี่คือหนึ่งซับ: curl -L https://gist.github.com/raw/1213031/929e578faae2ad3bcb29b03d116bcb09e1932221/sup‌​ervisord.conf > /etc/init/supervisord.conf && start supervisord(คุณจะต้อง root)
charlax

3
ตรวจสอบสาระสำคัญของผู้เดินสมุทรทุกครั้งก่อนเรียกใช้ อันนี้ใช้ได้ แต่ฉันแค่อยากจะเพิ่มเคล็ดลับที่
Cory Walker

12

นี่คือสิ่งที่ฉันใช้กับ RHEL 5.4 และ CentOS 5.5

ฉันไม่แน่ใจว่ามันขึ้นอยู่กับการตั้งค่าบางอย่างใน supervisord.conf ของฉัน แต่ดูเหมือนว่าจะทำงานได้ดี

คุณต้องรันคำสั่งต่อไปนี้หลังจากติดตั้ง

chkconfig --add supervisord

[/etc/rc.d/init.d/supervisord]

#!/bin/sh
#
# /etc/rc.d/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a
# number of processes on UNIX-like operating
# systems.
#
# chkconfig: - 64 36
# description: Supervisor Server
# processname: supervisord

# Source init functions
. /etc/rc.d/init.d/functions

prog="supervisord"

prefix="/usr/"
exec_prefix="${prefix}"
prog_bin="${exec_prefix}/bin/supervisord"
PIDFILE="/var/run/$prog.pid"

start()
{
        echo -n $"Starting $prog: "
        daemon $prog_bin --pidfile $PIDFILE
        [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
        echo
}

stop()
{
        echo -n $"Shutting down $prog: "
        [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
        echo
}

case "$1" in

  start)
    start
  ;;

  stop)
    stop
  ;;

  status)
        status $prog
  ;;

  restart)
    stop
    start
  ;;

  *)
    echo "Usage: $0 {start|stop|restart|status}"
  ;;

esac

จะเพิ่มเฉพาะที่คุณต้องเพิ่มสิทธิ์ + x ก่อนที่คุณจะลองใช้งาน: chmod + x /etc/init.d/supervisord
JiminyCricket

อย่าลืมว่าหลังจากใช้งานchkconfig --add supervisordคุณต้องเปิดใช้งานสำหรับระดับการวิ่งที่แตกต่างกันผ่านทางchkconfig supervisord --level 345 on
Corey Ballou

5

มีสคริปต์ Debian / Ubuntu ใน repo เป็นผู้บังคับบัญชา GitHub อย่างเป็นทางการ:

https://github.com/Supervisor/initscripts/blob/master/debian-norrgard


ขออภัย SVN ไม่อยู่ที่นั่นอีกต่อไป มีสถานที่อื่นไหม?
Alister Bulman

4
ใช่ - ทุกอย่างถูกย้ายไปที่ GitHub: github.com/Supervisor/initscripts
fish2000

2

สิ่งนี้ใช้ได้กับฉันใน Ubuntu 10.04.3 LTS นอกจากนี้ดูเหมือนว่าจะทำงานใน 8.04:

เพิ่มรายการต่อไปนี้เพื่อ /etc/init.d/supervisord

#! /bin/bash -e

SUPERVISORD=/usr/local/bin/supervisord
PIDFILE=/tmp/supervisord.pid
OPTS="-c /etc/supervisord.conf"

test -x $SUPERVISORD || exit 0

. /lib/lsb/init-functions

export PATH="${PATH:+$PATH:}/usr/local/bin:/usr/sbin:/sbin"

case "$1" in
  start)
    log_begin_msg "Starting Supervisor daemon manager..."
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $SUPERVISORD -- $OPTS || log_end_msg 1
    log_end_msg 0
    ;;
  stop)
    log_begin_msg "Stopping Supervisor daemon manager..."
    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE || log_end_msg 1
    log_end_msg 0
    ;;

  restart|reload|force-reload)
    log_begin_msg "Restarting Supervisor daemon manager..."
    start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $SUPERVISORD -- $OPTS || log_end_msg 1
    log_end_msg 0
    ;;

  *)
    log_success_msg "Usage: /etc/init.d/supervisor
{start|stop|reload|force-reload|restart}"
    exit 1
esac

exit 0

จากนั้นเรียกใช้:

sudo chmod +x /etc/init.d/supervisord
sudo update-rc.d supervisord defaults

sudo service supervisord start

ไม่มีคำตอบอื่นใดที่เหมาะกับฉัน


1

ฉันเพิ่มบรรทัดนี้ใน /etc/init.d/supervisord เพื่อแก้ไขการประมวลผลอาร์กิวเมนต์ "หยุด":

do_stop()
{
    /usr/local/bin/supervisorctl stop all
    /usr/local/bin/supervisorctl shutdown
    # Return
    ...

และมันใช้งานได้ดีสำหรับฉัน


1

ตอนนี้ดูเหมือนว่าหัวหน้างานจะอยู่ในที่เก็บของ apt ดังนั้นจึงไม่จำเป็นต้องมีไฟล์ init ด้วยมือเพียง:

sudo apt-get install supervisor

คุณอาจต้องการล้าง (และสำรองข้อมูล) ไฟล์เก่าของคุณก่อนการติดตั้ง


คุณต้องระวังว่า "แพ็คเกจเหล่านี้บางตัวอาจช้ากว่าเวอร์ชั่นวางจำหน่ายอย่างเป็นทางการตัวอย่างเช่น Ubuntu 12.04 (วางจำหน่ายในเดือนเมษายน 2555) เสนอแพ็คเกจที่ใช้ Supervisor 3.0a8 (เปิดตัวในเดือนมกราคม 2010)" (จากเอกสารของ Supervisord supervisord.org/ … )
ทำให้สับสน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.