Bagaimana mencegah tidur Mac dari baris perintah?

12

Saya memiliki skrip yang berjalan lama di komputer jarak jauh.

Saya tidak ingin mengakhiri sesi ssh saya, dan perlu memasukkannya ke dalam skrip shell.

Bagaimana mungkin untuk mencegah Mac saya tertidur dari baris perintah?

Kobame
sumber
3
Versi OS X yang mana?
nohillside

Jawaban:

19

Di Mountain Lion Anda dapat menggunakan caffeinateperintah.

caffeinate -u -t 1000

akan mencegah tidur menganggur selama 1000 detik.

Nemo
sumber
1
Saya belum berhasil dengan kombinasi cmdline 'caffeinate' (termasuk yang di atas) atau Caffeine.app di Mavericks mencegah tidur pada tutupnya. InsomniaX.app adalah satu-satunya hal yang sejauh ini mencegah tutup tidur, tetapi belum menemukan versi cmdline yang berfungsi (belum membuat goo.gl/CU06jb berfungsi - mungkin sudah usang). Bahkan tetap saja, saya menginginkan sesuatu yang mengaktifkan persyaratan tampilan-kata sandi bahkan ketika menolak tidur untuk waktu yang terbatas dan dapat diprogram setelah tutup tutup ... dan InsomniaX.app tampaknya tidak melakukan hal itu juga.
Johnny Utahh
1
Masalah serupa. Saya menggunakan Yosemite, dan meskipun saya menjalankan kafein di terminal, setelah beberapa saat layar menjadi gelap, dan saya harus masuk kembali. Ini menunjukkan kepada saya bahwa kafein tidak membuat Mac tetap terjaga, yang merupakan tujuan saya sehingga koneksi Wifi dapat bertahan / apa pun yang saya lakukan dapat dilanjutkan.
dmonopoly
12

Solusi untuk masalah ini adalah tidak membuat klien (Mac Anda) terjaga. Menggunakan pendekatan seperti ini tidak dapat diandalkan. Apa yang terjadi jika koneksi jaringan terputus? Bahkan jika Mac Anda terjaga, skrip akan berhenti.

Menggunakan nohup

Jika skrip lama Anda dipanggil eternity.sh, coba yang berikut ini:

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

Sekarang Anda bahkan dapat menutup koneksi dan skrip Anda akan terus berjalan . The &latar belakang proses sehingga Anda dapat menjaga sambungan terbuka dan memasukkan perintah. Lihat hasil apa pun dari skrip Anda melalui:

tail -f /path/to/output.out

Jalur dalam contoh bersifat opsional jika skrip berada di jalur Anda dan Anda ingin agar keluaran skrip ditulis output.outdi direktori saat ini.

Saya mengelola skrip yang berjalan selama berhari-hari. Skrip seperti ini harus dilepaskan dari terminal. Untungnya, nohupmenyediakan doa perintah yang mudah diingat untuk mencapai ini - pikir tidak ada hangup .

ephsmith
sumber
5
Lihat juga man screen.
@mankoff - Saya sudah menggunakan layar. Ini adalah perintah terbaik sejak pelepasan keturunan yang diiris. ;) Poin utama dari pertanyaan ini adalah menghilangkan kebutuhan "ssh ke @ suatu tempat" ketika mac saya tertidur - saya hanya tidak ingin mengakhiri sesi ssh saya - perintah saya di sisi jarak jauh sudah "dilindungi" dengan layar . ;)
kobame
@ephsmith - pertanyaannya adalah: bagaimana cara menghilangkan sesi ssh mengakhiri ... ofc nohup bagus untuk situasi ketika perintah remote Anda bukan yang interaktif. Untuk perintah interaktif layar adalah solusi yang jauh lebih baik. Lagipula untuk balasan.
kobame
1
@ kobame, mungkin maksud pertanyaan dan informasi tambahan ini seharusnya dimasukkan dalam pertanyaan awal Anda. Baris pertama dalam pertanyaan Anda merujuk pada skrip yang berjalan lama. Saya berasumsi itu tidak interaktif yang mengarah pada referensi ke nohup.
ephsmith
@ kobame, apakah ada dari jawaban ini yang menyelesaikan masalah Anda?
ephsmith
8

Pilihan lain adalah pmset . Gunakan perintah pmset noidle untuk mencegah tidur selama pmsetberjalan. Sayangnya, ini membutuhkan jendela Terminal terpisah dengan pmsetmenjalankannya. Namun, pilihan lain, caffeinatehanya memungkinkan Anda menetapkan tertentu waktu . Jadi itu masalah memilih apakah Anda ingin membuka sesi SSH kedua, atau berurusan dengan pembatasan waktu.

Sunting: Menurut komentar binarybob , Anda sebenarnya dapat menjalankannya di latar belakang seperti ini: pmset noidle &Untuk kembali pmsetmengetik fg.

daviesgeek
sumber
Anda juga dapat menjalankan pmsetdi latar belakang menggunakan pmset noidle &dan karena itu terus menggunakan prompt perintah saat ini. Ketik fguntuk pmsetkembali, pada titik mana Anda dapat Ctrl + C
binarybob
@ binarybob Oh! Saya tidak tahu itu. Terima kasih atas tipnya!
daviesgeek
@davisgeek - sangat bagus! Terima kasih atas tipnya.
kobame
1
yang satu ini juga berfungsi di notebook IPython: !pmset noidle- sangat bagus ketika Anda memiliki desktop yang melayani notebook IPython dan laptop yang menghubungkan dari jarak jauh.
Jason S
1
Ini tidak berhasil untuk saya. Ini berjalan dengan sukses, pesan "Mencegah tidur nyenyak (^ C untuk keluar) ..." muncul, tetapi ia tetap tidur.
Iulian Onofrei
6
caffeinate -i -s /bin/ssh ...

Penjelasan:

-i - Cegah tidur nyenyak.

-s- Mencegah tidur sistem (seluruhnya, bahkan jika Anda menutup tutupnya). Catatan: ini hanya berfungsi saat daya AC.

/bin/ssh- Terus menulis perintah yang ingin Anda jalankan. Menggunakan sshsecara langsung alih-alih /bin/sshjuga harus bekerja.

Hasil: Sistem Anda tidak akan tidur selama sshperintah berjalan.

bogdansrc
sumber
-3

Screensaver StarMessage ( http://starmessagesoftware.com/moonscreensaver/ ) juga memiliki opsi untuk membuat MAC tetap terjaga selama 2 jam, 8 jam, atau secara permanen. Cara menonaktifkan tidur MAC ini, jauh lebih mudah daripada kafein.

StarMessage Screensaver
sumber
Bagaimana ini dijalankan untuk baris perintah?
user151019
Pastikan untuk membaca bagian promosi di Pusat Bantuan .
nohillside