ฉันจะปิดระบบโดยอัตโนมัติหลังจากเวลาที่กำหนดได้อย่างไร


คำตอบ:


49

เปิดหน้าต่างเทอร์มินัลแล้วพิมพ์:

sudo shutdown -h +60

และแทนที่ 60 ด้วยจำนวนนาทีที่คุณต้องการ

ข้อมูลเพิ่มเติมที่นี่:

http://ubuntuforums.org/archive/index.php/t-473173.html http://www.linux.org/lessons/beginner/l5/lesson5a.html


2
-Pพารามิเตอร์ (ปิด) น่าจะเป็นความคิดที่ดีเกินไป
htorque

ปิด + m 60 ไม่ทำงานสำหรับฉัน ให้ข้อความแสดงข้อผิดพลาดและบอกว่ามีค่าเวลาไม่ถูกต้อง
NES

ฉันคิดว่ามันแปลก ... มันไม่ควรจะเป็น "+ m 60", ควรเป็น "+60" (หรืออาจจะมากกว่า "-h +60" มากกว่านี้ด้านล่างของหน้านี้ดูเหมือนจะรู้ว่ามันทำงานอย่างไร: linux.org/lessons/beginner/l5/lesson5a.html .
Daniel

"shutdown -P 1" - ทำงานได้ดีและปิดระบบใน 1 นาทีไม่จำเป็นต้องใช้หน่วยเวลา
n3rd

2
ที่จริงแล้วมันคือ sudo ..... เพราะต้องการสิทธิพิเศษรูท
Shirish Herwade

8
  • คุณสามารถใช้gshutdown ติดตั้ง gshutdown
  • หลังจากการติดตั้งสามารถพบได้ภายใต้ Applications → Accessories → GShutdown ข้อความแสดงแทน
  • ยังได้ดูวิธีนี้

ใครสามารถบอกฉันได้ว่าทำไมพวกเขาถึงลงคะแนนได้บ้าง
karthick87

2
ฉันไม่ได้ลงคะแนน แต่ Gshutdown ไม่ทำงานอย่างราบรื่นที่นี่ เมื่อฉันเลือกปิดระบบ Insteads จะล็อกผู้ใช้ออกหรือไม่
NES

ฉันเช่นกันมันจะล็อกผู้ใช้ออกและแล็ปท็อปไปที่โหมดสลีป
lewis4u

2

เนื่องจากหัวข้อเกี่ยวกับการปิดระบบ PC หลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่งจึงถูกเปลี่ยนเส้นทางไปยังหัวข้อนี้ฉันจะอธิบายปัญหานี้ที่นี่

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

ก่อนอื่นฉันอ้างถึงโพสต์ตั้งเวลาปิด - ปิดหลังจาก 30 นาที

ฉันจะคัดลอกด้านล่างแล้วอธิบายการปรับปรุงเพื่อให้ทำงานได้:

ติดตั้ง xprintidle เครื่องมือนี้ให้เวลาว่างของผู้ใช้

sudo apt-get install xprintidle

สร้างสคริปต์ autoshutdown.sh ซึ่งจะตรวจสอบเวลาว่างและสั่งให้คอมพิวเตอร์ปิดถ้าไม่ได้ใช้งานเป็นเวลา 30 นาที

idle=$(xprintidle)

if [ $idle -gt 1800000 ]; then
    shutdown -h now
fi

สร้าง cronjob เพื่อตรวจสอบสิ่งนี้เป็นครั้งคราวหากระบบไม่ได้ใช้งานนานเกินไปและหากไม่ได้ใช้งานนานกว่า 30 นาทีระบบจะปิดตัวเอง โปรดทราบว่าจะต้องทำ cronjob สำหรับผู้ใช้รูท


สคริปต์นี้ต้องการการปรับปรุงในการทำงานเช่น:

idle=`env DISPLAY=:0 su OUR_USER -c xprintidle 2>&1`

OUR_USER เป็นผู้ใช้ที่เราอ้างถึงสำหรับการตรวจสอบเวลาว่าง (ไม่ใช่ผู้ใช้รูท)

DISPLAY=:0ถูกต้องสำหรับหน้าจอเดสก์ท็อปเดียว (เรียกใช้envคำสั่งเพื่ออ่านDISPLAYในสถานการณ์ของคุณ)

หากสคริปต์รันโดยOUR_USERบรรทัดด้านบนสามารถลดลงได้:

idle=`env DISPLAY=:0 xprintidle 2>&1`

หัวข้อนี้มีการอธิบายhttp://ubuntuforums.org/showthread.php?t=1069602

ถ้าสคริปต์จะดำเนินการโดยOUR_USER, shutdownคำสั่งควรจะนำหน้าด้วยsudo

sudo shutdown -h now

สคริปต์ของฉันถูกเรียกใช้จาก cron ทีละบรรทัดในไฟล์ cron:

*/5 * * * * /home/OUR_USER/autoshutdown.sh 
  • ทุก 5 นาที
  • OUR_USER ควรถูกแทนที่ก่อนหน้านี้กับผู้ใช้ที่เราอ้างถึง

หากสคริปต์ไม่ได้รันโดยรูทเราควรจำไว้ว่าให้เพิ่มบรรทัด:

ALL ALL=(ALL) NOPASSWD: /sbin/shutdown 

ในไฟล์ sudoersดังนั้นคำสั่งshutdownจะไม่ต้องใช้รหัสผ่านในการดำเนินการ


ฉันลอง cronjobs ใน 2 distro ที่คล้ายกันLubuntu 12.04.4 RC LXLE 32-bit ( http://www.lxle.net/ )

ในระบบเดียวใช้งานได้โดยใช้ root cronjob set ในไฟล์:

/ var / spool / cron / crontabs / ราก


ข้อแม้

ปัญหาอีกประการหนึ่งคือxprintidle ในระบบของฉันได้ให้ค่าสุ่มสำหรับฉันและบางครั้งก็เพิ่มค่าตามหลักเหตุผล ผลลัพธ์สุดท้าย - ระบบของฉันมักจะปิดหลังจาก 20 นาทีบางทีถ้าฉันตั้งค่าสูงสุดที่ไม่ได้ใช้งานเป็น 30 นาที ฉันคิดว่าผู้ร้ายคือxscreensaverซึ่งไม่ทำงานตามที่กำหนดโดยพารามิเตอร์ที่ป้อน


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.