วิธีป้องกัน Mac sleep จาก command line?


12

ฉันมีสคริปต์ยาวที่คอมพิวเตอร์ระยะไกล

ฉันไม่ต้องการยุติเซสชัน ssh ของฉันและต้องป้อนลงในเชลล์สคริปต์

เป็นไปได้อย่างไรที่จะป้องกันไม่ให้ Mac ของฉันเข้าสู่โหมดสลีปจากบรรทัดคำสั่ง


3
เวอร์ชั่น OS X ใด?
nohillside

คำตอบ:


19

ใน Mountain Lion คุณสามารถใช้caffeinateคำสั่ง

caffeinate -u -t 1000

จะป้องกันการไม่ใช้งานสลีปเป็นเวลา 1,000 วินาที


1
ฉันยังไม่ประสบความสำเร็จด้วยการรวมกัน 'caffeinate' cmdline (รวมถึงหนึ่งรายการข้างต้น) หรือ Caffeine.app ใน Mavericks ที่ป้องกันการนอนหลับเมื่อปิดฝา InsomniaX.app เป็นเพียงสิ่งเดียวที่ป้องกันไม่ให้มีการนอนหลับบนฝาเครื่อง แต่ยังไม่พบรุ่น cmdline ที่ใช้งานได้ (ยังไม่ได้ทำให้goo.gl/CU06jbทำงาน - อาจจะล้าสมัย) แม้กระนั้นฉันก็ยังต้องการบางสิ่งบางอย่างที่ช่วยให้ต้องการรหัสผ่านการแสดงผลแม้ในขณะที่ปฏิเสธการนอนหลับสำหรับเวลาที่ จำกัด โปรแกรมได้เมื่อปิดฝา ... และ InsomniaX.app ก็ไม่ได้ทำเช่นนั้น
Johnny Utahh

1
ปัญหาที่คล้ายกัน ฉันอยู่ที่ Yosemite และถึงแม้ว่าฉันจะเรียกใช้คาเฟอีนในเทอร์มินัลหลังจากผ่านไประยะหนึ่งแล้วหน้าจอก็มืดลงและฉันต้องลงชื่อกลับเข้าใช้สิ่งนี้แนะนำให้ฉันรู้ว่าคาเฟอีนไม่ได้ทำให้ Mac ตื่นตัว การเชื่อมต่อ Wifi สามารถคงอยู่ / สิ่งที่ฉันเกิดขึ้นสามารถดำเนินการต่อไป
dmonopoly

12

วิธีแก้ไขปัญหานี้ไม่ได้ทำให้ไคลเอ็นต์ (Mac ของคุณ) ตื่น การใช้วิธีการเช่นนี้ไม่สามารถพึ่งพาได้ จะเกิดอะไรขึ้นหากการเชื่อมต่อเครือข่ายขาดหาย แม้ว่า Mac ของคุณจะตื่น แต่สคริปต์ก็จะหยุด

ใช้ nohup

หากมีการเรียกใช้สคริปต์ที่ใช้เวลานานของคุณeternity.shให้ลองทำดังนี้:

nohup /path/to/eternity.sh > /path/to/output.out &

ตอนนี้คุณสามารถปิดการเชื่อมต่อได้แล้วสคริปต์ของคุณก็จะยังทำงานต่อไป &ภูมิหลังขั้นตอนเพื่อให้คุณสามารถให้การเชื่อมต่อแบบเปิดและป้อนคำสั่ง ดูผลลัพธ์ใด ๆ จากสคริปต์ของคุณผ่าน:

tail -f /path/to/output.out

พา ธ ในตัวอย่างเป็นทางเลือกถ้าสคริปต์อยู่บนพา ธ ของคุณและคุณต้องการให้เอาต์พุตสคริปต์ถูกเขียนลงoutput.outในไดเร็กทอรีปัจจุบัน

ฉันจัดการสคริปต์ที่ทำงานหลายวันในแต่ละครั้ง สคริปต์เช่นนี้ควรแยกออกจากเทอร์มินัล โชคดีที่nohupมีการเรียกใช้คำสั่งที่จำได้ง่ายเพื่อให้ได้สิ่งนี้ - อย่าคิดแฮงค์


5
man screenดูเพิ่มเติม

@mankoff - ฉันใช้หน้าจออยู่แล้ว มันเป็นคำสั่งที่ดีที่สุดตั้งแต่การค้นพบของสายพันธุ์ที่หั่นบาง ๆ ;) ประเด็นหลักของคำถามคือกำจัดความต้องการ "ssh ไปยัง @ ที่ไหนสักแห่ง" เมื่อ mac ของฉันหลับ - ฉันไม่ต้องการที่จะยุติเซสชัน ssh ของฉัน - คำสั่งของฉันในด้านระยะไกลแล้ว "ป้องกัน" ด้วยหน้าจอ . ;)
kobame

@ephsmith - คำถามคือวิธีการกำจัดเซสชัน ssh ยุติ ... ofc nohup ดีสำหรับสถานการณ์เมื่อคำสั่งระยะไกลของคุณไม่ได้เป็นแบบโต้ตอบ สำหรับคำสั่งแบบโต้ตอบหน้าจอเป็นทางออกที่ดีกว่ามาก ขอบคุณสำหรับการตอบกลับ
kobame

1
@kobame อาจเป็นจุดของคำถามและข้อมูลเพิ่มเติมนี้ควรรวมอยู่ในคำถามเดิมของคุณ บรรทัดแรกในคำถามของคุณอ้างถึงสคริปต์ยาว ฉันคิดว่ามันไม่ได้มีการโต้ตอบซึ่งนำไปสู่การอ้างอิงถึง nohup
ephsmith

@kobame คำตอบใด ๆ เหล่านี้ช่วยแก้ปัญหาของคุณหรือไม่?
ephsmith

8

ตัวเลือกหนึ่งคือpmset ใช้คำสั่งpmset noidle เพื่อป้องกันการนอนหลับตราบเท่าที่pmsetกำลังทำงานอยู่ น่าเสียดายที่มันต้องมีหน้าต่างเทอร์มินัลแยกต่างหากซึ่งpmsetทำงานอยู่ อย่างไรก็ตามตัวเลือกอื่นcaffeinateให้คุณตั้งเวลาได้เท่านั้น ดังนั้นจึงเป็นเรื่องของการเลือกว่าคุณต้องการเปิดเซสชัน SSH ที่สองหรือจัดการกับการ จำกัด เวลา

แก้ไข: ตามความคิดเห็นของ binarybobคุณสามารถเรียกใช้จริงในพื้นหลังเช่นนี้pmset noidle &เพื่อกลับไปที่ประเภทpmsetfg


นอกจากนี้คุณยังสามารถทำงานpmsetในพื้นหลังโดยใช้pmset noidle &ดังนั้นจึงใช้งานพรอมต์คำสั่งปัจจุบันต่อไป พิมพ์fgเพื่อรับpmsetกลับไปที่จุดที่คุณสามารถ Ctrl + C มัน
binarybob

@binarybob โอ้! ฉันไม่รู้ ขอบคุณสำหรับทิป!
daviesgeek

@davisgeek - ดีจริง ๆ ! ขอบคุณสำหรับเคล็ดลับ
kobame

1
อันนี้ทำงานได้ในโน้ตบุ๊ก IPython: !pmset noidle- ดีมากเมื่อคุณมีเดสก์ท็อปที่ให้บริการโน้ตบุ๊ก IPython และแล็ปท็อปที่เชื่อมต่อจากระยะไกล
Jason S

1
มันไม่ได้ผลสำหรับฉัน มันทำงานได้สำเร็จข้อความ "การป้องกันการไม่ใช้งานสลีป (^ C เพื่อออกจาก) ... " ปรากฏขึ้น แต่ยังคงเข้าสู่โหมดสลีป
Iulian Onofrei

6
caffeinate -i -s /bin/ssh ...

คำอธิบาย:

-i - ป้องกันการนอนไม่ได้ใช้งาน

-s- ป้องกันการนอนหลับของระบบ (ทั้งหมดแม้ว่าคุณจะปิดฝา) หมายเหตุ: ใช้งานได้เฉพาะเมื่อใช้ไฟ AC เท่านั้น

/bin/ssh- เพียงแค่เขียนคำสั่งที่คุณต้องการดำเนินการ การใช้sshโดยตรงแทนที่จะ/bin/sshควรใช้งานได้เช่นกัน

ผลลัพธ์: ระบบของคุณจะไม่พักตราบเท่าที่sshคำสั่งกำลังทำงาน



-3

สกรีนเซฟเวอร์ StarMessage ( http://starmessagesoftware.com/moonscreensaver/ ) ยังมีตัวเลือกในการทำให้ MAC ตื่นตัวเป็นเวลา 2 ชั่วโมง 8 ชั่วโมงหรือถาวร วิธีปิดการใช้งานการนอนหลับของ MAC นี้ง่ายกว่าคาเฟอีนมาก


สิ่งนี้ทำงานสำหรับบรรทัดคำสั่งได้อย่างไร
user151019

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