วิธีเพิ่มแอปพลิเคชันเริ่มอัตโนมัติ linux จะเพิ่มโปรแกรมเพื่อเริ่มต้นระบบใน Linux ได้อย่างไร? การโหลดอัตโนมัติทำงานอย่างไร
และที่สำคัญที่สุดคือระบบปฏิบัติการฟรีที่สร้างบนเคอร์เนล Linux ดังนั้นเจ้าของคอมพิวเตอร์จึงกลายเป็นผู้ใช้มากขึ้นเรื่อยๆ หากคุณเป็นหนึ่งในนั้น คุณควร ไม่ ไม่เรียนรู้ - ไม่มีอะไรให้เรียนรู้ที่นั่น - แค่เข้าใจและเชี่ยวชาญพื้นฐานของการจัดการ ตัวอย่างเช่น วิธีตั้งค่าการเริ่มแอปพลิเคชันและบริการอัตโนมัติใน Ubuntu
การโหลดอัตโนมัติใน Ubuntu เป็นกระบวนการเดียวกับในระบบปฏิบัติการอื่น คุณต้องจำและจินตนาการว่า Windows เป็นอย่างไรเมื่อคุณเปิดพีซี, Skype, uTorrent และโปรแกรมอื่น ๆ อีกจำนวนหนึ่งที่เปิดใช้งานทันที Ubuntu มีหลายโปรแกรมที่มาพร้อมกับคอมพิวเตอร์ในลักษณะเดียวกัน รายการสามารถเปลี่ยนแปลงได้ตามที่คุณต้องการ: ลบรายการที่ไม่จำเป็นออกหรือเพิ่มอีกสองสามรายการ
การเพิ่มกระบวนการ
การเพิ่มบริการ ยูทิลิตี้ หรือคำสั่งใหม่ให้กับการเริ่มต้น Ubuntu นั้นไม่ใช่เรื่องยากเลย ทำได้โดยใช้เมนู
คุณสามารถเพิ่มด้วยวิธีนี้ไม่เพียง แต่สาธารณูปโภคเท่านั้น แต่ยังรวมถึงบริการอีกด้วย เฉพาะในบรรทัดบนสุดเท่านั้นที่คุณต้องเลือกประเภทที่เหมาะสม (ถ้ามี) และป้อนคำสั่งที่ต้องการด้วย สิ่งสำคัญคือการรู้มัน
การเลื่อนออกไป
Ubuntu ยังมีโอกาสที่ดีในการชะลอการเปิดเครื่อง - เช่นเดียวกับเตาอบหรือหม้อหุงข้าวสมัยใหม่ ทำได้โดยการเติมข้อความคำสั่งลงไปเล็กน้อย ซึ่งมีลักษณะดังนี้: "sleep 20;" (ไม่มีเครื่องหมายคำพูด) แทนที่จะป้อน 20 คุณสามารถป้อนตัวเลขใดๆ ก็ได้ซึ่งจะหมายถึงจำนวนวินาทีที่กระบวนการ "สลีป" ก่อนเริ่มต้น ดังนั้นคุณสามารถให้เวลาระบบในการบู๊ตได้เต็มที่หลังจากนั้นบริการหรือโปรแกรมบางอย่างจะเริ่มเปิดใช้งานแล้ว
การกำจัด
หากคุณได้ลองเพิ่มโปรแกรมในการเริ่มอัตโนมัติแล้ว คุณจะเข้าใจว่าการลบออกจากโปรแกรมนั้นทำได้ง่ายมาก
- ไปที่ยูทิลิตี้การจัดการโหลดอัตโนมัติอีกครั้ง
- เราพบกระบวนการที่เราไม่ต้องการ
- เลือกพวกเขาคลิก "ลบ"
ตอนนี้กระบวนการที่ไม่จำเป็นจะถูกลบออกจากการทำงานอัตโนมัติของ Ubuntu ควรมีไว้แต่ของที่จำเป็นจะดีกว่า
ควรเข้าใจว่าหากคุณเพิ่มแอปพลิเคชันจำนวนมากลงในการเริ่มต้น Ubuntu ระบบปฏิบัติการจะบูตช้าลงมาก ดังนั้นจึงเป็นการดีกว่าที่จะไม่หักโหมจนเกินไปและปรับการตั้งค่าการเริ่มอัตโนมัติอย่างเหมาะสม ฟังก์ชั่นนี้สะดวกมากและเมื่อรวมกับการหน่วงเวลาสตาร์ทแล้วยังเป็นเครื่องมือที่ดีสำหรับการควบคุมการทำงานของระบบโดยอัตโนมัติ
หลังจากสตาร์ทคอมพิวเตอร์แล้วเราต้องรันบางโปรแกรมตามปกติ ที่เราใช้บ่อยที่สุด นอกจากนี้ หลังจากสตาร์ทระบบ เราอาจจำเป็นต้องดำเนินการบางอย่าง เช่น สร้างไฟล์ที่จำเป็นหรือตั้งค่าพารามิเตอร์บางอย่าง การทำด้วยตนเองไม่สะดวกมาก เพื่อแก้ไขปัญหาดังกล่าวจึงมีระบบโหลดอัตโนมัติ
ในบทความนี้เราจะดูวิธีการทำงานของ Linux autoload วิธีเพิ่มโปรแกรมเริ่มต้นซึ่งจะถูกต้องมากกว่าในการเพิ่มและประเภทของ autoload ในระบบปฏิบัติการนี้
การโหลดอัตโนมัติทำงานอย่างไร
เพื่อให้เข้าใจถึงวิธีการทำงานของการโหลดอัตโนมัติ คุณต้องจำสิ่งที่เกิดขึ้นระหว่างกระบวนการบูต Linux ก่อน เมื่อเคอร์เนลเสร็จสิ้นการเริ่มต้นและพร้อมสำหรับการทำงานต่อไป เคอร์เนลจะถ่ายโอนการควบคุมไปยังระบบการเริ่มต้น ระบบการเริ่มต้นเป็นกระบวนการหลักเป็นผู้เริ่มกระบวนการอื่น ๆ ทั้งหมดในระบบ
มีกระบวนการต่างๆ ที่ระบบเริ่มต้น เช่น systemd เริ่มต้นตามค่าเริ่มต้น แต่คุณยังสามารถกำหนดค่าให้เริ่มกระบวนการที่คุณต้องการได้ นอกจากนี้ กระบวนการย่อยจำนวนมากเรียกใช้ไฟล์สคริปต์หรือมีความสามารถบางอย่างในการรันโปรแกรมที่คุณต้องการ สภาพแวดล้อมเดสก์ท็อปส่วนใหญ่มีคุณสมบัตินี้เช่นกัน
พิจารณาระดับการโหลดอัตโนมัติหลักที่คุณสามารถใช้ได้:
- คุณสามารถระบุโปรแกรมใด ๆ ที่จะรันหลังจากเคอร์เนลเริ่มทำงานแทนระบบการเริ่มต้น- การเปิดตัวบริการระบบหลัก บริการเพิ่มเติม รวมถึงสคริปต์ของคุณในขั้นตอนการเริ่มต้นระบบ- วิธีการโหลดสคริปต์ที่ล้าสมัยดำเนินการก่อนเริ่มสภาพแวดล้อมแบบกราฟิก- คุณสามารถรันสคริปต์หรือคำสั่งของคุณหลังจากเริ่มต้นตัวจัดการการเข้าสู่ระบบ แต่ก่อนที่จะเริ่มสภาพแวดล้อม- เปิดตัวโปรแกรมหรือสคริปต์ที่จำเป็นทันทีหลังจากเริ่มต้นเซิร์ฟเวอร์ X- สภาพแวดล้อมส่วนใหญ่รองรับโปรแกรมโหลดอัตโนมัติ คุณยังสามารถกำหนดค่าการเริ่มต้นล่าช้าและพารามิเตอร์อื่น ๆ ที่นั่นได้- ตัวเลือกล่าสุดคือการโหลดอัตโนมัติที่ระดับของเชลล์คำสั่งแยกต่างหาก คุณสามารถดำเนินการคำสั่งที่จำเป็นได้โดยอัตโนมัติทันทีที่เปิดใช้งานเทอร์มินัลโหลดอัตโนมัติที่ระดับเคอร์เนล
การโหลดอัตโนมัติในระดับเคอร์เนลไม่น่าจะมีประโยชน์สำหรับคุณมากนักสำหรับการใช้งานในชีวิตประจำวัน แต่ฉันตัดสินใจพูดถึงมันเพราะมันเป็นไปได้ ด้วยพารามิเตอร์เคอร์เนล init คุณสามารถระบุโปรแกรมที่ควรรันทันทีหลังจากที่เคอร์เนลเริ่มต้นเสร็จแล้ว ตัวอย่างเช่น คุณสามารถโหลด Bash เชลล์แทน Systemd ได้ ในการดำเนินการนี้เพียงปรับแต่งบรรทัดเริ่มต้นเคอร์เนลในไฟล์กำหนดค่า Grub หรือระหว่างการเริ่มต้น เพิ่มพารามิเตอร์ init ต่อท้าย:
$ sudo vi /boot/grub2/grub.cfg
linux /vmlinuz-4.8.0-22-generic root=/dev/mapper/systems-ubuntu ro quiet init=/bin/bash
แต่โดยปกติจะสะดวกกว่าถ้าเปลี่ยนค่านี้ชั่วคราวในเมนูด้วง อ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ในบทความตัวเลือกเคอร์เนล Linux สิ่งนี้ไม่ได้โหลดโปรแกรม linux อัตโนมัติ แต่บางครั้งก็อาจมีประโยชน์ได้
โหลดอัตโนมัติในระบบเริ่มต้น
บ่อยที่สุดเมื่อมีข้อความว่า autoloading Linux หมายถึงบริการโหลดอัตโนมัติโดยใช้ระบบการเริ่มต้น systemd มีระบบการจัดการบริการที่ทันสมัยมาก รองรับการแก้ไขการขึ้นต่อกัน การเปิดใช้แบบขนาน การเปิดใช้แบบเลื่อนออกไป และการรีสตาร์ทเมื่อมีข้อผิดพลาด ในคำศัพท์ของ Systemd โปรแกรมที่เปิดใช้งานทั้งหมดจะแสดงด้วยไฟล์หน่วย แต่ละหน่วยอธิบายพารามิเตอร์ของโปรแกรม ไฟล์ปฏิบัติการ รวมถึงข้อกำหนดเพิ่มเติมสำหรับการเรียกใช้
คำสั่ง systemctl ใช้เพื่อเพิ่มหรือลบบริการจากการสตาร์ทอัตโนมัติ หากต้องการเพิ่มบริการเพื่อเริ่มการทำงานอัตโนมัติ:
$ sudo systemctl เปิดใช้งาน service_name
และหากต้องการปิดการใช้งานการทำงานอัตโนมัติของ Linux:
$ sudo systemctl ปิดการใช้งาน service_name
ตัวอย่างเช่น หากคุณต้องการเพิ่ม Apache ให้กับการเริ่มต้นระบบ คุณจะต้องเรียกใช้:
$ sudo systemctl เปิดใช้งาน apache
คุณยังสามารถตรวจสอบได้ว่ามีการเพิ่มบริการในการเริ่มต้นแล้วหรือไม่:
$ sudo systemctl เปิดใช้งาน httpd แล้ว
หากคุณไม่ทราบชื่อที่แน่นอนของไฟล์บริการ แต่คุณทราบอักษรตัวแรกของไฟล์นั้น คุณสามารถใช้การเติมข้อความอัตโนมัติได้เหมือนกับที่คุณทำที่อื่นๆ ในเทอร์มินัล โดยใช้ปุ่ม Tab:
คุณยังสามารถดูบริการทั้งหมดที่เพิ่มเข้ามาในการเริ่มต้นโดยใช้คำสั่ง:
$ systemctl รายการหน่วยไฟล์ | เปิดใช้งาน grep แล้ว
กำลังโหลดสคริปต์อัตโนมัติใน Linux
เคยเป็นธรรมเนียมที่จะต้องวางสคริปต์ทั้งหมดที่ทำงานโดยค่าเริ่มต้นไว้ในไฟล์ /etc/rc.local ไฟล์นี้ยังคงมีอยู่ แต่เป็นไฟล์ที่หลงเหลือจากระบบเริ่มต้น SysVinit และตอนนี้ถูกเก็บไว้เพื่อความเข้ากันได้เท่านั้น ต้องโหลดสคริปต์โดยใช้ Systemd เท่านั้น
ในการทำเช่นนี้ ก็เพียงพอแล้วที่จะสร้างไฟล์หน่วยธรรมดาและเพิ่มลงในการโหลดอัตโนมัติเช่นเดียวกับบริการอื่น ๆ มาสร้างไฟล์นี้กันก่อน:
$ sudo vi /lib/systemd/system/runscript.service
คำอธิบาย=บริการสคริปต์ของฉัน
After=multi-user.target
ประเภท=ไม่ได้ใช้งาน
ExecStart=/usr/bin/local/script.sh
WantedBy=หลายผู้ใช้เป้าหมาย
ในส่วน หน่วยเราจะให้คำอธิบายสั้นๆ แก่ไฟล์ของเราและพูดพร้อมตัวเลือก หลังจากคุณต้องเรียกใช้สคริปต์นี้ในโหมดผู้ใช้หลายคน (ผู้ใช้หลายคน) ส่วน บริการที่สำคัญที่สุดเราจะระบุประเภทของบริการที่นี่ - ไม่ได้ใช้งานซึ่งหมายความว่าคุณเพียงแค่ต้องเรียกใช้และลืมไปว่าไม่จำเป็นต้องตรวจสอบ จากนั้นจึงอยู่ในพารามิเตอร์ เอ็กเซ็กสตาร์ทระบุเส้นทางแบบเต็มไปยังสคริปต์ของเรา
ยังคงต้องตั้งค่าสิทธิ์ที่ถูกต้อง:
$ sudo chmod 644 /lib/systemd/system/runscript.service
จากนั้นอัปเดตการกำหนดค่าและเพิ่มสคริปต์ใหม่ให้กับการเริ่มต้น Linux:
$ sudo systemctl daemon- โหลดซ้ำ
$ sudo systemctl เปิดใช้งาน myscript.service
หลังจากรีบูตครั้งถัดไป สคริปต์นี้จะทำงานโดยอัตโนมัติ โปรดทราบว่าสำหรับแต่ละสคริปต์ที่คุณจะเรียกใช้ สิทธิ์จะต้องได้รับการตั้งค่าอย่างถูกต้อง กล่าวคือ จะต้องตั้งค่าสถานะการดำเนินการ เมื่อต้องการทำเช่นนี้ ให้ใช้คำสั่ง chmod:
$ sudo chmod u+x /usr/local/bin/script
ในพารามิเตอร์เราส่งที่อยู่ของไฟล์สคริปต์ไปยังยูทิลิตี้ ความสามารถในการดำเนินการเป็นพารามิเตอร์ที่จำเป็นสำหรับวิธีการทั้งหมด
การเริ่มต้นเซิร์ฟเวอร์ X
บ่อยครั้งที่สภาพแวดล้อมเดสก์ท็อปน้ำหนักเบาและตัวจัดการหน้าต่างใช้การโหลดอัตโนมัติที่ระดับเซิร์ฟเวอร์ X เพื่อโหลดโปรแกรมอัตโนมัติ สคริปต์ทั้งหมดที่เปิดใช้ในลักษณะนี้จะเริ่มหลังจากเซิร์ฟเวอร์ X เริ่มทำงาน หากต้องการตั้งค่าการโหลดอัตโนมัติของ Linux คุณเพียงแค่ต้องเพิ่มพาธไปยังสคริปต์ที่ต้องการลงในไฟล์ ~/.xinitrc หรือ /etc/X11/xinit/xinitrc ไวยากรณ์สำหรับบรรทัดที่เพิ่มคือ:
ดำเนินการ script_path &
หากไม่มีไฟล์ ~/.xinitrc คุณจำเป็นต้องสร้างมันขึ้นมา:
$ ซีพี /etc/X11/xinit/xinitrc ~/.xinitrc
จากนั้น หากต้องการเพิ่มสคริปต์ลงในการโหลดอัตโนมัติของ linux ให้แก้ไขไฟล์ตามที่คุณต้องการ ตัวอย่างเช่น เรามาเริ่ม Firefox กัน:
ดำเนินการ /usr/bin/firefox &
โหลดสภาพแวดล้อมเดสก์ท็อปอัตโนมัติ
สภาพแวดล้อมเดสก์ท็อปที่ทรงพลัง เช่น Gnome และ KDE มีแอปพลิเคชันเริ่มต้นเป็นของตัวเอง ตัวอย่างเช่น ใน Gnome มีการเรียกโปรแกรม "แอปที่เริ่มทำงานอัตโนมัติ". คุณสามารถเปิดใช้งานได้จากเมนูหลักของระบบ:
ที่นี่คุณสามารถดูโปรแกรมทั้งหมดที่เพิ่มไว้ในการเริ่มต้นระบบแล้ว คุณสามารถปิดการใช้งานแต่ละรายการได้ง่ายๆ โดยยกเลิกการทำเครื่องหมายที่ช่อง
หากต้องการเพิ่มโปรแกรมหรือสคริปต์ใหม่เพื่อเริ่มต้นให้คลิกปุ่ม "เพิ่ม":
ที่นี่คุณจะต้องกรอกข้อมูลในสามฟิลด์:
- ชื่อ- ชื่อที่กำหนดเองสำหรับคำสั่งที่คุณสามารถค้นหาได้
- ทีม- เส้นทางแบบเต็มไปยังไฟล์ปฏิบัติการของโปรแกรม
หลังจากสตาร์ทคอมพิวเตอร์แล้วเราต้องรันบางโปรแกรมตามปกติ ที่เราใช้บ่อยที่สุด นอกจากนี้ หลังจากสตาร์ทระบบ เราอาจจำเป็นต้องดำเนินการบางอย่าง เช่น สร้างไฟล์ที่จำเป็นหรือตั้งค่าพารามิเตอร์บางอย่าง การทำด้วยตนเองไม่สะดวกมาก เพื่อแก้ไขปัญหาดังกล่าวจึงมีระบบโหลดอัตโนมัติ
ในบทความนี้เราจะดูวิธีการทำงานของ Linux autoload วิธีเพิ่มโปรแกรมเริ่มต้นซึ่งจะถูกต้องมากกว่าในการเพิ่มและประเภทของ autoload ในระบบปฏิบัติการนี้
เพื่อให้เข้าใจถึงวิธีการทำงานของการโหลดอัตโนมัติ คุณต้องจำสิ่งที่เกิดขึ้นระหว่างนั้นก่อน เมื่อเคอร์เนลเสร็จสิ้นการเริ่มต้นและพร้อมสำหรับการทำงานต่อไป เคอร์เนลจะถ่ายโอนการควบคุมไปยังระบบการเริ่มต้น ระบบการเริ่มต้นเป็นกระบวนการหลักเป็นผู้เริ่มกระบวนการอื่น ๆ ทั้งหมดในระบบ
มีกระบวนการต่างๆ ที่ระบบเริ่มต้น เช่น systemd เริ่มต้นตามค่าเริ่มต้น แต่คุณยังสามารถกำหนดค่าให้เริ่มกระบวนการที่คุณต้องการได้ นอกจากนี้ กระบวนการย่อยจำนวนมากเรียกใช้ไฟล์สคริปต์หรือมีความสามารถบางอย่างในการรันโปรแกรมที่คุณต้องการ สภาพแวดล้อมเดสก์ท็อปส่วนใหญ่มีคุณสมบัตินี้เช่นกัน
พิจารณาระดับการโหลดอัตโนมัติหลักที่คุณสามารถใช้ได้:
- คุณสามารถระบุโปรแกรมใด ๆ ที่จะรันหลังจากเคอร์เนลเริ่มทำงานแทนระบบการเริ่มต้น- การเปิดตัวบริการระบบหลัก บริการเพิ่มเติม รวมถึงสคริปต์ของคุณในขั้นตอนการเริ่มต้นระบบ- วิธีการโหลดสคริปต์ที่ล้าสมัยดำเนินการก่อนเริ่มสภาพแวดล้อมแบบกราฟิก- คุณสามารถรันสคริปต์หรือคำสั่งของคุณหลังจากเริ่มต้นตัวจัดการการเข้าสู่ระบบ แต่ก่อนที่จะเริ่มสภาพแวดล้อม- เปิดตัวโปรแกรมหรือสคริปต์ที่จำเป็นทันทีหลังจากเริ่มต้นเซิร์ฟเวอร์ X- สภาพแวดล้อมส่วนใหญ่รองรับโปรแกรมโหลดอัตโนมัติ คุณยังสามารถกำหนดค่าการเริ่มต้นล่าช้าและพารามิเตอร์อื่น ๆ ที่นั่นได้- ตัวเลือกล่าสุดคือการโหลดอัตโนมัติที่ระดับของเชลล์คำสั่งแยกต่างหาก คุณสามารถดำเนินการคำสั่งที่จำเป็นได้โดยอัตโนมัติทันทีที่เปิดใช้งานเทอร์มินัลการโหลดอัตโนมัติในระดับเคอร์เนลไม่น่าจะมีประโยชน์สำหรับคุณมากนักสำหรับการใช้งานในชีวิตประจำวัน แต่ฉันตัดสินใจพูดถึงมันเพราะมันเป็นไปได้ ด้วยพารามิเตอร์เคอร์เนล init คุณสามารถระบุโปรแกรมที่ควรรันทันทีหลังจากที่เคอร์เนลเริ่มต้นเสร็จแล้ว ตัวอย่างเช่น คุณสามารถโหลด Bash เชลล์แทน Systemd ได้ ในการดำเนินการนี้เพียงปรับแต่งบรรทัดเริ่มต้นเคอร์เนลในไฟล์กำหนดค่า Grub หรือระหว่างการเริ่มต้น เพิ่มพารามิเตอร์ init ต่อท้าย:
sudo vi /boot/grub2/grub.cfg
linux /vmlinuz-4.8.0-22-generic root=/dev/mapper/systems-ubuntu ro quiet init=/bin/bash
แต่โดยปกติจะสะดวกกว่าถ้าเปลี่ยนค่านี้ชั่วคราวในเมนูด้วง อ่านเพิ่มเติมเกี่ยวกับสิ่งนี้ในบทความ สิ่งนี้ไม่ได้โหลดโปรแกรม linux อัตโนมัติ แต่บางครั้งก็อาจมีประโยชน์ได้
บ่อยที่สุดเมื่อมีข้อความว่า autoloading Linux หมายถึงบริการโหลดอัตโนมัติโดยใช้ระบบการเริ่มต้น systemd เป็นระบบที่ทันสมัยมาก รองรับการแก้ไขการขึ้นต่อกัน การเปิดใช้แบบขนาน การเปิดใช้แบบเลื่อนออกไป และการรีสตาร์ทเมื่อมีข้อผิดพลาด ในคำศัพท์ของ Systemd โปรแกรมที่เปิดใช้งานทั้งหมดจะแสดงด้วยไฟล์หน่วย แต่ละหน่วยอธิบายพารามิเตอร์ของโปรแกรม ไฟล์ปฏิบัติการ รวมถึงข้อกำหนดเพิ่มเติมสำหรับการเรียกใช้
คำสั่ง systemctl ใช้เพื่อเพิ่มหรือลบบริการจากการสตาร์ทอัตโนมัติ หากต้องการเพิ่มบริการเพื่อเริ่มการทำงานอัตโนมัติ:
sudo systemctl เปิดใช้งาน service_name
และหากต้องการปิดการใช้งานการทำงานอัตโนมัติของ Linux:
sudo systemctl ปิดการใช้งาน service_name
ตัวอย่างเช่น หากคุณต้องการเพิ่ม Apache ให้กับการเริ่มต้นระบบ คุณจะต้องเรียกใช้:
sudo systemctl เปิดใช้งาน apache
คุณยังสามารถตรวจสอบได้ว่ามีการเพิ่มบริการในการเริ่มต้นแล้วหรือไม่:
sudo systemctl เปิดใช้งาน httpd แล้ว
หากคุณไม่ทราบชื่อที่แน่นอนของไฟล์บริการ แต่คุณทราบอักษรตัวแรกของไฟล์นั้น คุณสามารถใช้การเติมข้อความอัตโนมัติได้เหมือนกับที่คุณทำที่อื่นๆ ในเทอร์มินัล โดยใช้ปุ่ม Tab:
คุณยังสามารถดูบริการทั้งหมดที่เพิ่มเข้ามาในการเริ่มต้นโดยใช้คำสั่ง:
systemctl รายการหน่วยไฟล์ | เปิดใช้งาน grep แล้ว
เคยเป็นธรรมเนียมที่จะต้องวางสคริปต์ทั้งหมดที่ทำงานโดยค่าเริ่มต้นไว้ในไฟล์ /etc/rc.local ไฟล์นี้ยังคงมีอยู่ แต่เป็นไฟล์ที่หลงเหลือจากระบบเริ่มต้น SysVinit และตอนนี้ถูกเก็บไว้เพื่อความเข้ากันได้เท่านั้น ต้องโหลดสคริปต์โดยใช้ Systemd เท่านั้น
ในการทำเช่นนี้ ก็เพียงพอแล้วที่จะสร้างไฟล์หน่วยธรรมดาและเพิ่มลงในการโหลดอัตโนมัติเช่นเดียวกับบริการอื่น ๆ มาสร้างไฟล์นี้กันก่อน:
sudo vi /lib/systemd/system/runscript.service
คำอธิบาย=บริการสคริปต์ของฉัน
After=multi-user.target
ประเภท=ไม่ได้ใช้งาน
ExecStart=/usr/bin/local/script.sh
WantedBy=หลายผู้ใช้เป้าหมาย
ในส่วน หน่วยเราจะให้คำอธิบายสั้นๆ แก่ไฟล์ของเราและพูดพร้อมตัวเลือก หลังจากคุณต้องเรียกใช้สคริปต์นี้ในโหมดผู้ใช้หลายคน (ผู้ใช้หลายคน) ส่วน บริการที่สำคัญที่สุดเราจะระบุประเภทของบริการที่นี่ - ไม่ได้ใช้งานซึ่งหมายความว่าคุณเพียงแค่ต้องเรียกใช้และลืมไปว่าไม่จำเป็นต้องตรวจสอบ จากนั้นจึงอยู่ในพารามิเตอร์ เอ็กเซ็กสตาร์ทระบุเส้นทางแบบเต็มไปยังสคริปต์ของเรา
ยังคงต้องตั้งค่าสิทธิ์ที่ถูกต้อง:
sudo chmod 644 /lib/systemd/system/runscript.service
จากนั้นอัปเดตการกำหนดค่าและเพิ่มสคริปต์ใหม่ให้กับการเริ่มต้น Linux:
sudo systemctl daemon- โหลดซ้ำ
$ sudo systemctl เปิดใช้งาน myscript.service
หลังจากรีบูตครั้งถัดไป สคริปต์นี้จะทำงานโดยอัตโนมัติ โปรดทราบว่าสำหรับแต่ละสคริปต์ที่คุณจะเรียกใช้ สิทธิ์จะต้องได้รับการตั้งค่าอย่างถูกต้อง กล่าวคือ จะต้องตั้งค่าสถานะการดำเนินการ เมื่อต้องการทำเช่นนี้ ให้ใช้คำสั่ง chmod:
sudo chmod u+x /usr/local/bin/script
ในพารามิเตอร์เราส่งที่อยู่ของไฟล์สคริปต์ไปยังยูทิลิตี้ ความสามารถในการดำเนินการเป็นพารามิเตอร์ที่จำเป็นสำหรับวิธีการทั้งหมด
บ่อยครั้งที่สภาพแวดล้อมเดสก์ท็อปน้ำหนักเบาและตัวจัดการหน้าต่างใช้การโหลดอัตโนมัติที่ระดับเซิร์ฟเวอร์ X เพื่อโหลดโปรแกรมอัตโนมัติ สคริปต์ทั้งหมดที่เปิดใช้ในลักษณะนี้จะเริ่มหลังจากเซิร์ฟเวอร์ X เริ่มทำงาน หากต้องการตั้งค่าการโหลดอัตโนมัติของ Linux คุณเพียงแค่ต้องเพิ่มพาธไปยังสคริปต์ที่ต้องการลงในไฟล์ ~/.xinitrc หรือ /etc/X11/xinit/xinitrc ไวยากรณ์สำหรับบรรทัดที่เพิ่มคือ:
ดำเนินการ script_path &
หากไม่มีไฟล์ ~/.xinitrc คุณจำเป็นต้องสร้างมันขึ้นมา:
ซีพี /etc/X11/xinit/xinitrc ~/.xinitrc
จากนั้น หากต้องการเพิ่มสคริปต์ลงในการโหลดอัตโนมัติของ linux ให้แก้ไขไฟล์ตามที่คุณต้องการ ตัวอย่างเช่น เรามาเริ่ม Firefox กัน:
ดำเนินการ /usr/bin/firefox &
สภาพแวดล้อมเดสก์ท็อปที่ทรงพลัง เช่น Gnome และ KDE มีแอปพลิเคชันเริ่มต้นเป็นของตัวเอง ตัวอย่างเช่น ใน Gnome มีการเรียกโปรแกรม "แอปที่เริ่มทำงานอัตโนมัติ". คุณสามารถเปิดใช้งานได้จากเมนูหลักของระบบ:
ที่นี่คุณสามารถดูโปรแกรมทั้งหมดที่เพิ่มไว้ในการเริ่มต้นระบบแล้ว คุณสามารถปิดการใช้งานแต่ละรายการได้ง่ายๆ โดยยกเลิกการทำเครื่องหมายที่ช่อง
หากต้องการเพิ่มโปรแกรมหรือสคริปต์ใหม่เพื่อเริ่มต้นให้คลิกปุ่ม "เพิ่ม":
ที่นี่คุณจะต้องกรอกข้อมูลในสามฟิลด์:
- ชื่อ- ชื่อที่กำหนดเองสำหรับคำสั่งที่คุณสามารถค้นหาได้
- ทีม- เส้นทางแบบเต็มไปยังไฟล์ปฏิบัติการของโปรแกรม
เราสร้างไฟล์เปล่า
ในบรรทัดแรกเราเขียน:
#!/bin/sh
บรรทัดนี้ระบุว่าจะใช้เชลล์คำสั่งใด ถัดไปคือคำสั่งของคุณ
มาบันทึกโดยใช้ชื่อเดิม (เพื่อไม่ให้ตรงกับชื่อที่มีอยู่) ในไดเร็กทอรี /usr/sbin/
เพื่อให้สคริปต์ทำงานตอนบู๊ตคุณต้องเขียนมันลงในไฟล์ /etc/rc.local ก่อนบรรทัด exit 0 หากคุณไม่มีไฟล์นี้ให้สร้างมันขึ้นมาและวางเนื้อหาต่อไปนี้ลงไป:
#!/bin/sh -e #Insert บรรทัดที่มีสคริปต์ของคุณที่นี่ /usr/sbin/mescripts ออก 0
วิธีที่ซับซ้อนกว่าเล็กน้อย
ช่วยให้คุณตั้งค่าลำดับการโหลดและลักษณะการทำงานของสคริปต์ในระดับการทำงานที่แตกต่างกัน
เราศึกษา /etc/init.d/skeleton โดยพื้นฐานแล้วเราสร้างสคริปต์ /etc/init.d/my_script ซึ่งจะเริ่ม / หยุดแอปพลิเคชันของเรา
ไดเร็กทอรีเหล่านี้มีสคริปต์สำหรับการหยุดบริการ:
/etc/rc0.d/ /etc/rc1.d/ /etc/rc6.d/
ในสิ่งเหล่านี้ - สคริปต์สำหรับการเริ่มต้นบริการ:
/etc/rc2.d/ /etc/rc3.d/ /etc/rc4.d/ /etc/rc5.d/
เราศึกษาตามลำดับ (ยิ่งตัวเลขตัวแรกที่จุดเริ่มต้นของสคริปต์มีขนาดเล็กเท่าใด แอปพลิเคชันจะเริ่ม/หยุดเร็วขึ้นเท่านั้น) นี่อาจเป็นสิ่งสำคัญหากแอปพลิเคชันของคุณขึ้นอยู่กับบริการบางอย่าง
หลังจากที่เราตัดสินใจเกี่ยวกับสคริปต์การเปิดตัวและลำดับแล้ว เราจะดำเนินการดังต่อไปนี้:
Sudo update-rc.d my_script เริ่มต้น 70 2 3 4 5 หยุด 20 0 1 6 .
ที่นี่ฉันได้กำหนดไว้ว่าสคริปต์ของฉันควรเริ่มช้ากว่าสคริปต์อื่นๆ (70) และหยุดก่อน (20) ตัวเลข 2 3 4 5 0 1 6 ระบุระดับการบรรทุก
หากคุณไม่ชอบสิ่งใดคุณสามารถลบทุกอย่างได้
sudo update-rc.d -f my_script ลบ
ดู man update-rc.d สำหรับรายละเอียด
การรันสคริปต์บน/ปิดเครือข่าย
มีไดเร็กทอรี /etc/network/ ที่มีไดเร็กทอรีย่อย if-down.d , if-pre-up.d , if-post-down.d , if-up.d หากคุณวางสคริปต์ไว้ในไดเร็กทอรีย่อยรายการใดรายการหนึ่ง สคริปต์นั้นจะถูกดำเนินการตามลำดับ เมื่อปิดเครื่อง ก่อนเปิดเครื่อง หลังจากปิดเครื่อง หรือเมื่อเครือข่ายเปิดอยู่
อีกวิธีหนึ่งคือการระบุหนึ่งในคำสั่งต่อไปนี้ในไฟล์ /etc/network/interfaces: up , pre-up , post-up , down , pre-down , post-down เช่น เส้น
โพสต์อัพ /path/to/script.sh
หลังจากเปิดเครือข่ายแล้วจะรันสคริปต์ script.sh. คุณสามารถอ่านเพิ่มเติมได้ใน man interfaces
ไม่ว่าในกรณีใด สคริปต์จะต้องมีสิทธิ์ที่ตั้งค่าไว้เพื่อให้สามารถดำเนินการได้ มิฉะนั้นจะไม่สามารถเรียกใช้ได้