วิธีที่ดีที่สุดในการเรียกใช้สคริปต์และคำสั่งsuspend และดำเนินการต่อบน Linux ก่อนที่จะระงับ (หรือหลังจากกลับมาทำงานต่อ) คือการใช้ระบบ init systemd นี่เป็นเพราะความจริงที่ว่าระบบ init โต้ตอบโดยตรงกับเคอร์เนลและระบบไฟฟ้า การเรียนรู้ที่จะทำงานกับเครื่องมือนี้จะช่วยให้ผู้ใช้สามารถควบคุมระบบปฏิบัติการลีนุกซ์ได้เป็นจำนวนมาก
โปรดเข้าใจว่าวุ่นวายกับผู้ประทับจิตระบบในพีซีของคุณอาจเป็นอันตรายได้หากคุณไม่ทราบว่ากำลังทำอะไรอยู่ อย่าลืมทำตามคำแนะนำในบทช่วยสอนนี้อย่างใกล้ชิดที่สุดเพื่อหลีกเลี่ยงความเสียหายที่อาจเกิดขึ้น
ไม่ใช่ทุกการกระจาย Linux ที่ทันสมัยรองรับระบบเริ่มต้น systemd บางคนใช้พุ่งพรวดหรืออย่างอื่นอย่างสิ้นเชิง ในบทช่วยสอนนี้เราจะเน้นไปที่ systemd เนื่องจากเป็นระบบการเริ่มต้นที่ใช้กันทั่วไป หากคุณต้องการทำงานนี้ให้สำเร็จในสิ่งที่ไม่ได้ทำงานในสิ่งที่เรากล่าวถึงในบทความนี้ให้พิจารณาคำแนะนำในคู่มือของระบบปฏิบัติการของคุณ
หมายเหตุ: ผู้ใช้ Debian ควรแทนที่ทุกกรณีของ usr / lib / systemd / ระบบการนอนหลับ กับ / lib / systemd / ระบบการนอนหลับ /
การเรียกใช้คำสั่งก่อนหยุดชั่วคราว
ในการรันสคริปต์ก่อนที่จะหยุดทำงานให้วางไฟล์ bash script ใด ๆ ลงใน / usr / lib / systemd / ระบบการนอนหลับ / ไดเรกทอรี สคริปต์เองสามารถทำอะไรก็ได้ แต่มีไวยากรณ์บางอย่างที่ต้องปฏิบัติตาม เริ่มต้นด้วยการเปิดหน้าต่างเทอร์มินัล ใช้ sudo -s เพื่อรับรูตเชลล์
ถัดไปเพิ่มตัวแก้ไขข้อความ nano ในไดเรกทอรี system-sleep:
nano /usr/lib/systemd/system-sleep/pre-suspend.sh
เพิ่ม shebang ไปยังจุดเริ่มต้นของสคริปต์ การเพิ่มสิ่งนี้เป็นสิ่งสำคัญและหากไม่มีตัวแปลภาษาจะไม่สามารถอ่านรหัสและคำสั่งได้อย่างถูกต้อง
#!/bin/bash/
ส่วนต่อไปของสคริปต์คือ“ ถ้า” สิ่งนี้จะบอกระบบควบคุมกำลังไฟฟ้าว่า "ถ้า" ระบบกำลังจะหยุดการทำงานชั่วคราวจะมีบางสิ่งเกิดขึ้น วางรหัสด้านล่าง:
if [ "${1}" == "pre" ]; then sh /path/to/script/to/run.sh
เปลี่ยนแปลง sh /path/to/script/to/run.sh ในสคริปต์ของสิ่งที่คุณต้องการเรียกใช้บน Linux PC (หรือเซิร์ฟเวอร์) ก่อนที่ระบบจะหยุดทำงานชั่วคราว โปรดทราบว่าไม่จำเป็นต้องมีบรรทัดหลัง "ถ้า" sh /path/to/script/to/run.sh. คุณยังสามารถใช้สิ่งนี้เพื่อดำเนินการคำสั่งต่าง ๆ ตราบใดที่ bash สามารถรับรู้ว่ามันเป็นคำสั่งมันจะทำงาน
ส่วนสุดท้ายของสคริปต์“ before suspend” คือการเพิ่มส่วน“ else if” สคริปต์นี้ไม่จำเป็นต้องได้รับการแก้ไขเนื่องจากในตัวอย่างนี้เรากังวลเกี่ยวกับการทำอะไรบางอย่าง ก่อน ระบบหยุดทำงานและไม่เมื่อกลับมาทำงาน
elif [ "${1}" == "post" ]; then # nothing goes here fi
เมื่อเพิ่มทุกอย่างลงในไฟล์แล้วให้กด Ctrl + O เพื่อบันทึกนาโน
ใช้คำสั่งหลังจากดำเนินการต่อ
การดำเนินการคำสั่งหลังจากดำเนินการต่อการทำงานเหมือนทำงานบางอย่างก่อนที่จะระงับ ความแตกต่างที่แท้จริงเพียงอย่างเดียวคือแทนที่จะเพิ่มคำสั่งหลังจากส่วน "if" ของสคริปต์คุณจะต้องทำให้ส่วนที่สำคัญที่สุดของรหัสเกิดขึ้นหลังจากบรรทัด "elif"
หากต้องการสร้างสคริปต์โพสต์ต่อก่อนอื่นให้เพิ่ม Shebang เป็นบรรทัดแรก
#!bin/bash
ในบรรทัดถัดไปเพิ่มส่วน "ถ้า" ของสคริปต์
if [ "${1}" == "pre" ]; then # nothing goes here
เมื่อวางโค้ดลงในสคริปต์ทุบตีให้เลื่อนลงและวางส่วน "else if"
elif [ "${1}" == "post" ]; then sh /path/to/script/to/run.sh fi
อีกครั้งการเขียนอะไรก็ได้ภายใต้บรรทัด“ elif” ตราบเท่าที่มันเป็นคำสั่งการดำเนินงาน systemd ปกติและทุบตีจะเรียกใช้มัน
ใช้คำสั่งที่เริ่มต้นและดำเนินต่อ
หากคุณต้องการรันคำสั่งตรงข้ามสองคำ หนึ่งก่อนที่จะหยุดและหนึ่งในประวัติย่อก็เป็นไปได้ มันหมายถึงการปรับแต่งสคริปต์และเพิ่มบรรทัดภายใต้บรรทัด ‘if” รวมถึงบรรทัด“ elseif”
เช่นเคยเริ่มต้นโดยการโพสต์ shebang ลงในสคริปต์สำหรับล่าม
#!/bin/bash
ถัดไปวางส่วน if ของรหัส
if [ "${1}" == "pre" ]; then # replace with command
ภายใต้ if ให้แทนที่“ # replace with command” ด้วยคำสั่งใด ๆ ที่คุณต้องการเรียกใช้ก่อนที่ระบบจะหยุดทำงาน จากนั้นย้ายไปที่ส่วน "elif" และทำเช่นเดียวกัน
elif [ "${1}" == "post" ]; then # replace with command fi
บันทึกไฟล์ด้วย Ctrl + O
การอัปเดตการอนุญาตและการใช้สคริปต์
คำสั่งที่จำเป็นทั้งหมดอยู่ในไฟล์สคริปต์ แต่ก่อนที่จะสามารถเรียกใช้คุณจะต้องอัปเดตการอนุญาต เปิดเทอร์มินัลและรับรูทด้วย: su หรือ sudo -s จากนั้นทำ:
chmod +x /usr/lib/systemd/system-sleep/pre-suspend.sh
จากนี้ไปเมื่อใดก็ตามที่คุณหยุดชั่วคราวหรือดำเนินการต่อคำสั่งที่กำหนดเองภายในสคริปต์ควรรัน
หมายเหตุ: มีคำถามเกี่ยวกับ systemd system-sleep หรือไม่ ตรวจสอบคู่มือด้วย man systemd-suspend.service.
ความคิดเห็น