สคริปต์ upstart: เรียกใช้งานหลังจากเครือข่ายขึ้นไป


23

ฉันกำลังทำงานเกี่ยวกับการย้ายการตั้งค่าเซิร์ฟเวอร์ปัจจุบันของฉันไปยังฮาร์ดแวร์รุ่นใหม่และการย้ายจากอูบุนตู karmic koala ไปยัง lucid lynx ขณะนี้ฉันกำลังใช้ gw6c (รวบรวมจากเว็บไซต์ gogo6 ซึ่งตรงข้ามกับรุ่นจากที่เก็บ) เพื่อรับการเข้าถึง ipv6 สำหรับระบบของฉัน บนระบบ karmala koala ฉันใช้สคริปต์ init.d แบบง่าย ๆ เพื่อเริ่มต้นไคลเอ็นต์ ipv6

 #! /bin/sh
/usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf

ฉันคิดตั้งแต่นี้ทำงานที่ runlevel ใด ๆ ก็ควรแปลเป็น

respawn
console none

start on startup

stop on shutdown

script
exec /usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf
emit free6_ipv6_started
end script

สิ่งนี้ทำงานได้ดีเริ่มต้นจาก initctrl แต่ดูเหมือนจะล้มเหลวในการเริ่มต้นเมื่อบูท - สถานะกำลังหยุด / รอ มันทำงานได้ดี (และเกิดใหม่) เมื่อเริ่มต้นเป็นอย่างอื่นความคิดใด ๆ เกี่ยวกับตำแหน่งที่ฉันจะผิดและการโต้เถียง 'เริ่มต้น' ที่เหมาะสมจะเป็นอย่างไร

แก้ไข: ข้อผิดพลาดที่แน่นอนคือ 'init: gw6c กระบวนการหลัก (xxx) สิ้นสุดด้วยสถานะ 8' ตามด้วยกระบวนการ respawning โดยที่ xxx เป็น PID ที่ฉันสงสัย ฉันยังสงสัยครึ่งนี้เป็นสาเหตุ gw6c เริ่มก่อนที่เครือข่ายจะทำและฉันต้องการ eth0 ของฉันขึ้นก่อน gw6c คือ

คำตอบ:


27

เด่นชัด

respawn
console none

start on (local-filesystems and net-device-up IFACE!=lo)
stop on [!12345]

script
chdir /usr/local/gw6c/bin/

exec /usr/local/gw6c/bin/gw6c 
end script

ดูเหมือนว่าจะทำงาน


ใช่ฉันเพิ่งเขียนไม่กี่ที่ใช้ net-device-up และ net-device-down ซึ่งทำงานได้อย่างสมบูรณ์
Andy Shellam

ฉันไม่พบที่ใดก็ได้ในเอกสาร คนที่อยู่ในรายชื่อรับเมลท้องถิ่นช่วยฉันออกมา
Journeyman Geek

นี่คือสิ่งที่ฉันกำลังมองหา มันยังไม่อยู่ในเอกสารธรรมดาที่ฉันสามารถหาได้
นาธาน

4

วางสคริปต์เริ่มต้น gw6c

/etc/network/if-up.d

สคริปต์ทั้งหมดในโฟลเดอร์นั้นทำงานหลังจากอินเทอร์เฟซปรากฏขึ้น หากคุณต้องการให้มันรันเมื่อ eth0 เกิดขึ้นเท่านั้นให้แก้ไขรายการ eth0 ใน

/etc/network/interfaces

และเพิ่มการเรียกไปยังสคริปต์

iface eth0 inet dhcp
  up /etc/init.d/gw6c restart

ฉันยังขอแนะนำให้เพิ่มสคริปต์ก่อนลงเพื่อปิดอุโมงค์ก่อนที่อินเทอร์เฟซจะออฟไลน์

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


สคริปต์เดิมที่ฉันโพสต์ทำงานได้ค่อนข้างดี - แม้ว่าฉันจะต้องรีสตาร์ทด้วยตนเองหากการเชื่อมต่อของฉันรีเซ็ตตัวเอง - นี่คือการเริ่มต้นซึ่งเป็นค่าเริ่มต้นบน lucid lynx
Journeyman Geek

1

ขอบคุณ "The Journeyman geek" :) คุณช่วยฉันได้มากเวลา ฉันกำลังต่อสู้กับสคริปต์ /etc/init.d/gw6c พยายามกำหนดเวลาด้วย "sysv-rc-conf -p" และสงสัยว่าทำไมมันไม่ทำงาน (หรือที่รู้จักในชื่อ WTF)

respawn
console none

start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]

script

exec /etc/init.d/gw6c start
end script

สคริปต์ที่ได้รับการแก้ไขเล็กน้อย ("runlevel" และคำสั่ง exec) ทำหน้าที่ได้! :) :) :)


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