ฉันมีสคริปต์ยาวที่คอมพิวเตอร์ระยะไกล
ฉันไม่ต้องการยุติเซสชัน ssh ของฉันและต้องป้อนลงในเชลล์สคริปต์
เป็นไปได้อย่างไรที่จะป้องกันไม่ให้ Mac ของฉันเข้าสู่โหมดสลีปจากบรรทัดคำสั่ง
ฉันมีสคริปต์ยาวที่คอมพิวเตอร์ระยะไกล
ฉันไม่ต้องการยุติเซสชัน ssh ของฉันและต้องป้อนลงในเชลล์สคริปต์
เป็นไปได้อย่างไรที่จะป้องกันไม่ให้ Mac ของฉันเข้าสู่โหมดสลีปจากบรรทัดคำสั่ง
คำตอบ:
ใน Mountain Lion คุณสามารถใช้caffeinate
คำสั่ง
caffeinate -u -t 1000
จะป้องกันการไม่ใช้งานสลีปเป็นเวลา 1,000 วินาที
วิธีแก้ไขปัญหานี้ไม่ได้ทำให้ไคลเอ็นต์ (Mac ของคุณ) ตื่น การใช้วิธีการเช่นนี้ไม่สามารถพึ่งพาได้ จะเกิดอะไรขึ้นหากการเชื่อมต่อเครือข่ายขาดหาย แม้ว่า Mac ของคุณจะตื่น แต่สคริปต์ก็จะหยุด
ใช้ nohup
หากมีการเรียกใช้สคริปต์ที่ใช้เวลานานของคุณeternity.sh
ให้ลองทำดังนี้:
nohup /path/to/eternity.sh > /path/to/output.out &
ตอนนี้คุณสามารถปิดการเชื่อมต่อได้แล้วสคริปต์ของคุณก็จะยังทำงานต่อไป &
ภูมิหลังขั้นตอนเพื่อให้คุณสามารถให้การเชื่อมต่อแบบเปิดและป้อนคำสั่ง ดูผลลัพธ์ใด ๆ จากสคริปต์ของคุณผ่าน:
tail -f /path/to/output.out
พา ธ ในตัวอย่างเป็นทางเลือกถ้าสคริปต์อยู่บนพา ธ ของคุณและคุณต้องการให้เอาต์พุตสคริปต์ถูกเขียนลงoutput.out
ในไดเร็กทอรีปัจจุบัน
ฉันจัดการสคริปต์ที่ทำงานหลายวันในแต่ละครั้ง สคริปต์เช่นนี้ควรแยกออกจากเทอร์มินัล โชคดีที่nohup
มีการเรียกใช้คำสั่งที่จำได้ง่ายเพื่อให้ได้สิ่งนี้ - อย่าคิดแฮงค์
ตัวเลือกหนึ่งคือpmset ใช้คำสั่งpmset noidle
เพื่อป้องกันการนอนหลับตราบเท่าที่pmset
กำลังทำงานอยู่ น่าเสียดายที่มันต้องมีหน้าต่างเทอร์มินัลแยกต่างหากซึ่งpmset
ทำงานอยู่ อย่างไรก็ตามตัวเลือกอื่นcaffeinate
ให้คุณตั้งเวลาได้เท่านั้น ดังนั้นจึงเป็นเรื่องของการเลือกว่าคุณต้องการเปิดเซสชัน SSH ที่สองหรือจัดการกับการ จำกัด เวลา
แก้ไข: ตามความคิดเห็นของ binarybobคุณสามารถเรียกใช้จริงในพื้นหลังเช่นนี้pmset noidle &
เพื่อกลับไปที่ประเภทpmset
fg
pmset
ในพื้นหลังโดยใช้pmset noidle &
ดังนั้นจึงใช้งานพรอมต์คำสั่งปัจจุบันต่อไป พิมพ์fg
เพื่อรับpmset
กลับไปที่จุดที่คุณสามารถ Ctrl + C มัน
!pmset noidle
- ดีมากเมื่อคุณมีเดสก์ท็อปที่ให้บริการโน้ตบุ๊ก IPython และแล็ปท็อปที่เชื่อมต่อจากระยะไกล
caffeinate -i -s /bin/ssh ...
คำอธิบาย:
-i
- ป้องกันการนอนไม่ได้ใช้งาน
-s
- ป้องกันการนอนหลับของระบบ (ทั้งหมดแม้ว่าคุณจะปิดฝา) หมายเหตุ: ใช้งานได้เฉพาะเมื่อใช้ไฟ AC เท่านั้น
/bin/ssh
- เพียงแค่เขียนคำสั่งที่คุณต้องการดำเนินการ การใช้ssh
โดยตรงแทนที่จะ/bin/ssh
ควรใช้งานได้เช่นกัน
ผลลัพธ์: ระบบของคุณจะไม่พักตราบเท่าที่ssh
คำสั่งกำลังทำงาน
หากคุณกำลังมองหาตัวเลือกนิวเคลียร์เหมือนฉัน:
sudo systemsetup -setcomputersleep Never
- ตั้งค่าหรือปิดการใช้งานโหมด Sleep เนื่องจากระบบ Mac ไม่ทำงานจาก Command Line ใน OS X
สกรีนเซฟเวอร์ StarMessage ( http://starmessagesoftware.com/moonscreensaver/ ) ยังมีตัวเลือกในการทำให้ MAC ตื่นตัวเป็นเวลา 2 ชั่วโมง 8 ชั่วโมงหรือถาวร วิธีปิดการใช้งานการนอนหลับของ MAC นี้ง่ายกว่าคาเฟอีนมาก