คนธรรมดาสามารถจัดการลิงก์สัญลักษณ์ไปยังไฟล์กำหนดค่าได้หรือไม่?


30

ฉันมีไฟล์กำหนดค่าเริ่มต้นทั้งหมดของฉันภายใต้การควบคุมเวอร์ชัน วิธีที่เหมาะในการใช้พุ่งพรวดของฉันคือการสร้างลิงค์นุ่ม ๆ จากที่เก็บการควบคุมเวอร์ชันของฉัน (Mercurial - ไม่ใช่ว่ามันสำคัญ) ลงใน / etc / init แต่พุ่งพรวด แต่ไม่สามารถเห็นงานได้ ทุกอย่างเรียบร้อยถ้าฉันคัดลอกไฟล์จากไดเรกทอรีที่เก็บไปยัง / etc / init

ใครรู้ว่าทำไมพุ่งพรวดล้มเหลวในการจัดการสัญลักษณ์หรือแม้กระทั่งการเชื่อมโยงอย่างหนัก?

ขอบคุณ

คริส


1
อาจเป็นการตัดสินใจออกแบบในส่วนของผู้พัฒนา Upstart เพื่อละเว้นลิงค์อ่อน? อย่างไรก็ตามหากพื้นที่เก็บข้อมูลของคุณอยู่ในพาร์ติชันเดียวกันให้/etc/initลองใช้ฮาร์ดลิงก์
Steven Monday

พยายามเชื่อมโยงอย่างหนักและนั่นก็ไม่ได้ผล :-(
Chris McCauley

กะพร่องกะแพร่ง. แท้จริง symlink จะถูกละเว้นโดยไม่ต้องโทรด้วยตนเองเพื่อโหลดการกำหนดค่า ถอนหายใจ ฉันชอบ symlink ทำความสะอาดในกรณีใช้ของฉัน โอ้ดี ฉันจะคัดลอกไฟล์เช่น jerk
James T Snell

คำตอบ:


9

พุ่งพรวดไม่สนับสนุน symlinks เพราะพวกเขาอาจชี้ไปยังไฟล์บนพาร์ติชันที่ไม่ได้โหลดในเวลาบูต

ฉันได้รับสิ่งนี้ในโครงการของฉันโดยใส่ไฟล์ conf ไว้ใน / etc / init / myscripts แล้วผูกมันไว้ที่ไดเรกทอรีในที่เก็บของฉัน mount --bind /etc/init/myscripts ~/code/repo/initscripts.

เพิ่มไปยัง / etc / fstab และการเชื่อมโยงจะคงอยู่:

/etc/init/myscripts  /home/me/code/repo/initscripts      none    bind

สิ่งนี้จะช่วยให้คุณมีไดเรกทอรีที่เชื่อมโยงอย่างมีประสิทธิภาพ พุ่งพรวดจะถือว่าไฟล์ conf เป็นอื่น ๆ เพราะพวกเขาอยู่ในท้องถิ่นเพื่อ / etc / init DVCS ของคุณจะเห็นพวกเขาเป็นไฟล์ในเครื่องของ repo ด้วยดังนั้นมันก็จะปฏิบัติต่อพวกมันเหมือนกับไฟล์อื่น ๆ ที่เก็บไว้ที่นั่น สุดยอดของทั้งสองโลก


49

พุ่งพรวดเฝ้าดูไดเรกทอรีการกำหนดค่าด้วย inotify และโหลดการกำหนดค่าใหม่เมื่อมีการเปลี่ยนแปลงไฟล์ใด ๆ หรือไฟล์ใหม่จะถูกเพิ่ม เห็นได้ชัดว่านี่ใช้ไม่ได้กับ symlink

หากต้องการอัพเดตการกำหนดค่าด้วยตนเองให้ใช้

$ initctl reload-configuration

สิ่งนี้เคยทำงานให้ฉันอย่างน่าเชื่อถือ เมื่อไม่นานมานี้พุ่งพรวด 1.3 มันใช้ได้กับงานที่หยุดเท่านั้น
jcomeau_ictx

2
สำหรับฉัน symlink ใน / etc / init / work แต่ถ้าฉันเปลี่ยนไฟล์ที่อยู่หลัง symlink ไฟล์จะไม่ถูกอ่านซ้ำโดยเครื่องมือพุ่งพรวด ฉันใช้เวลาหลายชั่วโมงกว่าจะพบว่า symlink นั้นเป็นเหตุผล มันทำหน้าที่เหมือนแคชที่ไม่มีใครต้องการ
peschü

1

ดังกล่าวก่อนหน้านี้:

initctl reload-configuration

อย่างไรก็ตามหากคุณได้รับข้อผิดพลาดดังนี้:

initctl: Rejected send message, 1 matched rules; type="method_call", sender=":1.155" (uid=1000 pid=6177 comm="initctl reload-configuration ") interface="com.ubuntu.Upstart0_6" member="ReloadConfiguration" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

คุณต้องเรียกใช้ sudo:

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