เรียกใช้โปรแกรมอัตโนมัติเมื่อเริ่มต้นภายใต้ linux ubuntu [ปิด]


140

ฉันต้องการโปรแกรมที่จะทำงานทุกครั้งที่ฉันเริ่มต้น Ubuntu Linux ดังนั้นฉันจะต้องเพิ่มลงในรายการโปรแกรมเริ่มต้นของฉัน แค่ปัญหาเดียว: ฉันต้องทำผ่านเทอร์มินัล



23
@Flexo คำตอบนี้ไม่มีอยู่ในลิงค์ที่คุณให้ไว้ +1 กับคำถามและคำตอบนี้
Francisco Valdez

2
ในความเป็นจริงคำตอบที่นี่มีการอ้างอิงจากคำถามแรกของเหล่านั้น
Wilson F

4
สำหรับวิธีการง่ายๆในการพกพาคุณสามารถใช้ Cron เรียกใช้crontab -eเพื่อแก้ไข crontab ของผู้ใช้ เพิ่ม@reboot commandเพื่อเรียกใช้commandในการบูตแต่ละครั้ง
appas

2
ฉันไม่รู้ว่ามันซ้ำกันหรือไม่ แต่มันเป็น google hit แรก ..
Vladimir verleg

คำตอบ:


178
sudo mv /filename /etc/init.d/
sudo chmod +x /etc/init.d/filename 
sudo update-rc.d filename defaults 

สคริปต์ควรเริ่มต้นตอนบูท โปรดทราบว่าวิธีนี้ใช้ได้กับทั้งฮาร์ดลิงก์และลิงก์สัญลักษณ์ ( ln)

แก้ไข

ณ จุดนี้ในกระบวนการบูท PATH ยังไม่ได้ตั้งค่าดังนั้นจึงเป็นสิ่งสำคัญที่จะต้องใช้พา ธ สัมบูรณ์ตลอด แต่ดังที่ได้กล่าวไว้ในข้อคิดเห็นโดย Steve HHH ได้ประกาศเส้นทางไฟล์แบบเต็ม ( /etc/init.d/filename) สำหรับคำสั่ง update-rc.d อย่างไม่ถูกต้องใน Linux เกือบทุกเวอร์ชัน ตามmanpage สำหรับ update-rc.dพารามิเตอร์ตัวที่สองคือสคริปต์ที่อยู่/etc/init.d/*พารามิเตอร์ที่สองคือสคริปต์ที่ตั้งอยู่ในอัปเดตโค้ดด้านบนเพื่อแสดงถึงสิ่งนี้

การแก้ไขอื่น

นอกจากนี้ยังชี้ให้เห็นในความคิดเห็น (โดย Charles Brandt) /filenameจะต้องเป็นสคริปต์สไตล์ init แม่แบบที่ดีให้ยัง - https://github.com/fhd/init-script-template

ลิงก์ไปยังบทความอื่นเพียงเพื่อหลีกเลี่ยงการเชื่อมโยงที่เป็นไปได้เน่า (แม้ว่ามันจะเศร้าถ้า GitHub ตาย) - http://www.linux.com/learn/tutorials/442412-managing-linux-daemons-with-init-scripts

ยังอีกแก้ไข

ตามที่ระบุไว้ในความคิดเห็น (โดย Russell Yan) สิ่งนี้ใช้ได้เฉพาะในโหมดเริ่มต้นของ update-rc.d

ตามคู่มือของ update-rc.d มันสามารถทำงานได้สองโหมด "เครื่องที่ใช้โหมดดั้งเดิมจะมีไฟล์/etc/init.d/.legacy-bootordering" ซึ่งในกรณีนี้คุณต้องผ่านลำดับและการกำหนดค่า runlevel ผ่านอาร์กิวเมนต์บรรทัดคำสั่ง

อาร์กิวเมนต์ที่เทียบเท่าที่กำหนดไว้สำหรับตัวอย่างข้างต้นคือ

sudo update-rc.d filename start 20 2 3 4 5 . stop 20 0 1 6 .


1
เช่นเดียวกับ FYI ตัวเลือก“ ค่าเริ่มต้น” จะวางลิงก์เพื่อเริ่มสคริปต์ในระดับการทำงาน 2, 3, 4 และ 5 (และวางลิงก์เพื่อหยุดใน 0, 1 และ 6)
Dave Lasley

5
ฉันเพิ่งลองสิ่งนี้ใน Ubuntu Server 12.04 LTS แต่ใน 12.04 คุณไม่สามารถใช้คำนำหน้า /etc/init.d ได้ sudo update-rc.d filename defaultsมันเป็นเพียงแค่
Steve HHH

1
@puk ทั้งฮาร์ดลิงก์และลิงก์สัญลักษณ์จะใช้ได้กับวิธีนี้
Dave Lasley

14
แค่ต้องการเพิ่มชื่อไฟล์ / ในกรณีนี้ควรเป็นสคริปต์สไตล์ init นี่คือเทมเพลตสำหรับการเริ่มต้นสคริปต์เริ่มต้นที่คุณกำหนดเอง: github.com/fhd/init-script-template
Charles Brandt

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