ฉันมักจะเริ่มดาวน์โหลดก่อนไปโรงเรียน
คำสั่งใดที่ฉันควรใช้เพื่อทำการบันทึกที่จำเป็นโดยอัตโนมัติและปิดเครื่องคอมพิวเตอร์หลังจากงานเฉพาะเสร็จสมบูรณ์
(พูดหลังจากติดตั้งการอัปเดตหรือหลังจากดาวน์โหลดไฟล์ขนาดใหญ่)
ฉันมักจะเริ่มดาวน์โหลดก่อนไปโรงเรียน
คำสั่งใดที่ฉันควรใช้เพื่อทำการบันทึกที่จำเป็นโดยอัตโนมัติและปิดเครื่องคอมพิวเตอร์หลังจากงานเฉพาะเสร็จสมบูรณ์
(พูดหลังจากติดตั้งการอัปเดตหรือหลังจากดาวน์โหลดไฟล์ขนาดใหญ่)
คำตอบ:
มันขึ้นอยู่กับคุณเริ่มงาน หากเป็นเครื่องมือบรรทัดคำสั่งคุณสามารถเรียกใช้halt
หรือshutdown -h now
:
wget http://..../somelargefile; halt
- halt
จะถูกดำเนินการหลังจากwget
wget http://..../somelargefile && halt
- halt
จะถูกดำเนินการหากwget
ไม่มีข้อผิดพลาด
wget http://..../somelargefile || halt
- halt
จะถูกดำเนินการหากมีwget
ข้อผิดพลาดในการส่งคืน
ทางเลือกในการใช้สิ่งนี้kshutdown
- ในแอพนี้คุณสามารถระบุการกระทำที่ควรทำ (รีบูต / ปิดระบบ / จำศีล / ฯลฯ หรือการดำเนินการคำสั่ง) และเมื่อ (หลังจากผ่านไประยะหนึ่งหรือเมื่อแอปพลิเคชันอื่นออก) หากคุณต้องการใช้เครื่องมือนี้คุณต้องเลือกกระบวนการที่ถูกต้อง - ยูทิลิตี้การอัพเดตบางตัวจะเริ่มกระบวนการย่อยน้อย
shutdown
ไม่มีวิธีการรอเหตุการณ์จริง
ทุกกระบวนการมีชื่อไดเรกทอรีตามกระบวนการ id (pid) ในproc
ระบบไฟล์ ดังนั้นคุณสามารถรอการยุติกระบวนการที่ระบุได้โดยตรวจสอบว่าไดเรกทอรีนั้นมีอยู่ซ้ำ ๆ
คุณสามารถใช้สิ่งนี้เพื่อปิดระบบหลังจากกระบวนการยุติเช่นนี้ (แทนที่ 2296 โดย pid เพื่อรอ):
su -c 'while [[ -d /proc/2296 ]]; do sleep 1; done; poweroff'
ข้อดี:
sudo
พร้อมท์ - รหัสผ่านล่าช้า)ข้อเสีย:
ps
อยู่ในเทอร์มินัลเดียวกันนั้นจะช่วยให้คุณมองเห็น PID สำหรับ CMD หากกระบวนการเป็น / อยู่ในเทอร์มินัลอื่นจะบีบเอาท์พุท ps สำหรับทุกอย่างผ่าน grep เพื่อกรองคำสั่งของคุณควรช่วยคุณหามันps -elf | grep <command_related_word>
pgrep
aka ...
คุณสามารถใช้ตัวดำเนินการ&&
และ||
เพื่อโยงคำสั่งเข้าด้วยกัน ตัวอย่างเช่น:
apt-get update && sleep 2 && init 0
ซึ่งจะทำการอัปเดตระบบโดยใช้ความถนัด, รอ 2 วินาทีและไปที่ runlevel 0 ขึ้นอยู่กับระบบของคุณซึ่งอาจจะจริงหรือไม่อาจปิดฮาร์ดแวร์
หากต้องการพูดคุยกับการดำเนินการอย่างน้อยหนึ่งอย่างหลังจากการดำเนินการตามอำเภอใจมากกว่าเช่นเว็บเบราว์เซอร์ดาวน์โหลดคุณจะต้องใช้ตรรกะเพิ่มเติมเพื่อดูไฟล์ดาวน์โหลดเพื่อตรวจสอบว่าการดาวน์โหลดเสร็จสมบูรณ์แล้วอย่างไรก็ตามตรรกะของเชลล์ไม่เปลี่ยนแปลง
หากคุณต้องการตรวจสอบกระบวนการที่เริ่มต้นแล้วคุณสามารถทำได้ในเชลล์ :
# while pgrep &>/dev/null -f process_name; do sleep 60; done; shutdown -h now
มีแอพพลิเคชั่นชื่อ sentinella ซึ่งสามารถทำเพื่อคุณด้วย GUI:
สำหรับการติดตั้ง:
sudo aptitude update
sudo aptitude install sentinella
shutdown
เวลาในการรอ ไม่จำเป็นต้องใช้ kshutdown เพื่อจุดประสงค์นั้น