- - วิธีการเรียกใช้สคริปต์และคำสั่งเกี่ยวกับการระงับและดำเนินการต่อบน Linux

วิธีการเรียกใช้สคริปต์และคำสั่งในการระงับและดำเนินการต่อบน Linux

วิธีที่ดีที่สุดในการเรียกใช้สคริปต์และคำสั่ง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.

ความคิดเห็น