ฉันจะจำศีล / หยุดชั่วคราวจากบรรทัดคำสั่งและทำในเวลาที่กำหนดได้อย่างไร


36

ฉันจัดการเพื่อค้นหาวิธีระงับ / จำศีลระบบจากบรรทัดคำสั่งโดยการอ่านฉันจะระงับ / จำศีลจากบรรทัดคำสั่งได้อย่างไร .

อย่างไรก็ตามฉันต้องการทราบวิธีใช้บรรทัดคำสั่งเพื่อระงับ / จำศีลตามเวลาที่กำหนดในเงื่อนไขแบบสัมบูรณ์ (ตัวอย่างเช่น 11PM) หรือสัมพัทธ์ (ตัวอย่างเช่นใน 30 นาที)

ฉันรู้แล้วว่าจะทำอย่างไรกับการปิดเครื่อง แต่ฉันทราบว่าคำสั่งนั้นคล้ายกันหรือไม่

คำตอบ:


43

คุณสามารถใช้atคำสั่งเพื่อกำหนดเวลาการดำเนินการใด ๆ รวมถึงการรันคำสั่งที่มีรายละเอียดในคำถามนั้น

ตัวอย่างเช่นหากคุณต้องการไฮเบอร์เนตภายใน 30 นาที:

echo 'pmi action hibernate' | at now + 30 min

หรือหากคุณต้องการระงับเวลา 23.00 น.:

echo 'pmi action suspend' | at 11pm

หากคุณต้องการเรียกใช้คำสั่งด้วยrootให้รันatด้วยsudoแทนที่จะใช้คำสั่งเองด้วยsudo(เนื่องจากsudoควรรันแบบโต้ตอบเท่านั้นเว้นแต่คุณจะกำหนดค่าไว้ไม่ให้ถามรหัสผ่าน) ตัวอย่างเช่นการเทียบเท่าของคำสั่งข้างต้นที่ใช้pm-hibernateและpm-suspendคือ:

echo pm-hibernate | sudo at now + 30 min

echo pm-suspend | sudo at 11pm


ขอบคุณที่ทราบว่าสถานการณ์ทั้งสองถูกขอให้ ... ฉันแก้ไขชื่อเพื่อสะท้อนสิ่งนี้เช่นกัน ฉันแก้ไขคำตอบเพื่อรวมทั้งสองสถานการณ์ตอนนี้
cprofitt

ความคิดใดที่ฉันสามารถล้างงานได้อย่างไร
KhoPhi

2
@Rexford atrmคำสั่งatเอางานที่สร้างขึ้นโดย
Eliah Kagan

9

สำหรับข้อมูลจำเพาะสัมพัทธ์ (เช่น "หลังจาก 30 นาที") คุณสามารถใช้sleepคำสั่งเพื่อให้คำสั่งหยุดชั่วคราว / จำศีลรอ


ตัวอย่าง:

รอ 30 นาทีแล้วระงับ:

sudo sleep 30m; sudo pm-suspend

รอ 1 ชั่วโมงจากนั้นไฮเบอร์เนต:

sudo sleep 1h; sudo pm-hibernate

ฉันชอบวิธีนี้เช่นกัน
KhPPHI

2
หลังจาก 1 ชม. pm-hibernateต้องการรหัสผ่านสำหรับรูทอีกครั้งและการระงับจะไม่เกิดขึ้น
Vitaly Zdanevich

วิธีการเกี่ยวกับการเข้าสู่ระบบในฐานะ root เพื่อหลีกเลี่ยงการขอรหัสผ่าน?
banan3'14

4

สำหรับเวลาที่ระบุซ้ำ ๆ - เช่นการปิดเครื่องคอมพิวเตอร์เป็นเวลาเฉพาะในแต่ละวัน ใช้ cron

crontab -e

เพิ่มต่อไปนี้:

15 14 1 * * pmi action suspend

หากคุณต้องการปรับแต่งมัน

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

สำหรับงานครั้งเดียวของเราคือคำสั่ง at

ตัวอย่างเช่นหากคุณต้องการไฮเบอร์เนตภายใน 30 นาที:

echo 'pmi action hibernate' | at now + 30 min

หรือหากคุณต้องการระงับเวลา 23.00 น.:

echo 'pmi action suspend' | at 11pm

2
การใช้cronเป็นวิธีแก้ปัญหาที่ดีเมื่อเป้าหมายคือหยุดชั่วคราวหรือจำศีลในเวลาที่กำหนดของวันหรือเวลาที่ระบุในวันที่เฉพาะเจาะจงของสัปดาห์หรือเดือนหรือปี แต่สำหรับการกำหนดเวลาการพักเดี่ยวหรือการจำศีลซึ่งดูเหมือนจะเป็นสิ่งที่เอเดริโก้ถาม (ซึ่งเป็นสิ่งที่เหมาะสมกว่าที่จะทำ) atควรใช้คำสั่ง (คุณสามารถกำหนดเวลาเหตุการณ์เดียวด้วยcronการทำให้เหตุการณ์แก้ไข crontab ที่เกี่ยวข้องตัวอย่างเช่นการใช้sedหรือawk, แต่มันซับซ้อนและไม่จำเป็นอย่างยิ่ง; ใช้at.)
Eliah Kagan

ไม่เหมาะกับคำที่เกี่ยวข้องที่คำถามนี้มีประโยชน์สำหรับกำหนดการที่ระบุเท่านั้น
Bruno Pereira

ใช่นี่เป็นตัวอย่างสำหรับ 'เวลาที่ระบุ' ที่ร้องขอ "อย่างไรก็ตามฉันต้องการทราบวิธีการใช้บรรทัดคำสั่งเพื่อระงับ / จำศีลตามเวลาที่กำหนดในแบบสัมบูรณ์ (ตัวอย่างเช่น 23.00 น.)"
cprofitt

1
คุณได้แก้ไขคำตอบเพื่อเพิ่มข้อมูลเกี่ยวกับวิธีใช้atแต่ข้อมูลที่คุณเพิ่มนั้นไม่ถูกต้อง <ข้อความประกอบการเปลี่ยนเส้นทางจากไฟล์หรืออุปกรณ์ที่ระบุให้สิทธิในการเข้ามาตรฐานสำหรับคำสั่งที่ระบุไว้ด้านซ้ายของ หากคุณต้องการใช้<แทน|(ตามคำตอบของฉัน ) คุณจะต้องสร้างไฟล์ที่มีpmi action suspend(หรือpmi action hibernate) เป็นเนื้อหา ความซับซ้อนดังกล่าวทำให้|ดีกว่าที่นี่
Eliah Kagan

ตามแนวทางทั่วไปเมื่อคุณมีcatคำสั่งทางด้านซ้ายของ|(เช่นcat foo | bar) คุณสามารถแทนที่ด้วย<นิพจน์ ( bar < foo) แต่เมื่อคุณมีechoคำสั่งทางด้านซ้ายของ a |นั่นจะไม่สามารถแทนที่ด้วย<นิพจน์ได้
Eliah Kagan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.