คอมพิวเตอร์ หน้าต่าง อินเทอร์เน็ต

วิธีเพิ่มแอปพลิเคชันเริ่มอัตโนมัติ linux จะเพิ่มโปรแกรมเพื่อเริ่มต้นระบบใน Linux ได้อย่างไร? การโหลดอัตโนมัติทำงานอย่างไร

และที่สำคัญที่สุดคือระบบปฏิบัติการฟรีที่สร้างบนเคอร์เนล Linux ดังนั้นเจ้าของคอมพิวเตอร์จึงกลายเป็นผู้ใช้มากขึ้นเรื่อยๆ หากคุณเป็นหนึ่งในนั้น คุณควร ไม่ ไม่เรียนรู้ - ไม่มีอะไรให้เรียนรู้ที่นั่น - แค่เข้าใจและเชี่ยวชาญพื้นฐานของการจัดการ ตัวอย่างเช่น วิธีตั้งค่าการเริ่มแอปพลิเคชันและบริการอัตโนมัติใน Ubuntu

การโหลดอัตโนมัติใน Ubuntu เป็นกระบวนการเดียวกับในระบบปฏิบัติการอื่น คุณต้องจำและจินตนาการว่า Windows เป็นอย่างไรเมื่อคุณเปิดพีซี, Skype, uTorrent และโปรแกรมอื่น ๆ อีกจำนวนหนึ่งที่เปิดใช้งานทันที Ubuntu มีหลายโปรแกรมที่มาพร้อมกับคอมพิวเตอร์ในลักษณะเดียวกัน รายการสามารถเปลี่ยนแปลงได้ตามที่คุณต้องการ: ลบรายการที่ไม่จำเป็นออกหรือเพิ่มอีกสองสามรายการ

การเพิ่มกระบวนการ

การเพิ่มบริการ ยูทิลิตี้ หรือคำสั่งใหม่ให้กับการเริ่มต้น Ubuntu นั้นไม่ใช่เรื่องยากเลย ทำได้โดยใช้เมนู


คุณสามารถเพิ่มด้วยวิธีนี้ไม่เพียง แต่สาธารณูปโภคเท่านั้น แต่ยังรวมถึงบริการอีกด้วย เฉพาะในบรรทัดบนสุดเท่านั้นที่คุณต้องเลือกประเภทที่เหมาะสม (ถ้ามี) และป้อนคำสั่งที่ต้องการด้วย สิ่งสำคัญคือการรู้มัน

การเลื่อนออกไป

Ubuntu ยังมีโอกาสที่ดีในการชะลอการเปิดเครื่อง - เช่นเดียวกับเตาอบหรือหม้อหุงข้าวสมัยใหม่ ทำได้โดยการเติมข้อความคำสั่งลงไปเล็กน้อย ซึ่งมีลักษณะดังนี้: "sleep 20;" (ไม่มีเครื่องหมายคำพูด) แทนที่จะป้อน 20 คุณสามารถป้อนตัวเลขใดๆ ก็ได้ซึ่งจะหมายถึงจำนวนวินาทีที่กระบวนการ "สลีป" ก่อนเริ่มต้น ดังนั้นคุณสามารถให้เวลาระบบในการบู๊ตได้เต็มที่หลังจากนั้นบริการหรือโปรแกรมบางอย่างจะเริ่มเปิดใช้งานแล้ว

การกำจัด

หากคุณได้ลองเพิ่มโปรแกรมในการเริ่มอัตโนมัติแล้ว คุณจะเข้าใจว่าการลบออกจากโปรแกรมนั้นทำได้ง่ายมาก

  1. ไปที่ยูทิลิตี้การจัดการโหลดอัตโนมัติอีกครั้ง
  2. เราพบกระบวนการที่เราไม่ต้องการ
  3. เลือกพวกเขาคลิก "ลบ"

ตอนนี้กระบวนการที่ไม่จำเป็นจะถูกลบออกจากการทำงานอัตโนมัติของ 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

ไม่ว่าในกรณีใด สคริปต์จะต้องมีสิทธิ์ที่ตั้งค่าไว้เพื่อให้สามารถดำเนินการได้ มิฉะนั้นจะไม่สามารถเรียกใช้ได้