OS X: cara menjaga komputer agar tidak tidur selama sesi ssh

29

Ketika saya ssh ke komputer OS X di jaringan saya, sesi berlangsung hingga OS X masuk ke mode tidur .

Apakah ada cara untuk mencegah hal ini terjadi selama sesi SSH saya , selain menabrak mouse atau mengetik secara fisik, atau menonaktifkan fungsi tidur secara manual?

Sunting: Ssh sesi biasanya akan menjadi sshfs sederhana.

Stefan
sumber
Bukankah Anda juga ingin mencegahnya tidur sebelum sesi SSH Anda?
SamB

Jawaban:

9

Ini bukan solusi out-of-the-box tetapi mungkin akan bekerja jika tidak ada orang lain yang memberikan solusi :-)

Anda dapat memanipulasi pengaturan manajemen daya dengan perintah pmset. Lihat halaman manual untuk informasi lebih lanjut tentangnya.

Pengaturan menarik yang ingin kita manipulasi adalah tidur :

sleep - timer tidur sistem (nilai dalam menit, atau 0 untuk menonaktifkan)

Jadi kita bisa menggunakan perintah berikut:

sudo pmset sleep 25      # go to sleep after 25 minutes
sudo pmset sleep 0       # disable sleep

Sekarang kita harus memicu perintah ini setelah login dan logut. Jika saya ingat hak ini, Bash adalah shell default untuk Mac OS X yang membawa kita ke dua file ini:

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bash_logout
          The individual login shell cleanup file, executed when a login shell exits

Edit atau buat di direktori home Anda dan tambahkan perintah yang sesuai. Jika Anda mau, simpan nilai sleep saat ini dalam file sementara dan kembalikan setelahnya.

Masalah terakhir yang harus dipecahkan adalah prompt kata sandi sudo. Untuk memberi pengguna Anda izin untuk memanggil pmset tanpa kata sandi, edit / etc / sudoers Anda dengan sudoedit. Anda harus menggunakan NOPASSWDtag. Jika ini baru untuk Anda, lihat manual sudoers .

echox
sumber
1
akankah metode ini bekerja jika koneksi ssh hanya berupa sshfs mount?
Stefan
1
Saya tidak yakin, tetapi saya tidak berpikir sshfs akan membuka shell login, jadi ini tidak akan bekerja dengan sshfs.
echox
9

Ini memungkinkan saya untuk menggunakan mac saya melalui SSH tidak peduli apa pun, selama mac terhubung ke sumber daya.

System Preferences, Energy saver, Mencegah komputer dari tidur secara otomatis ketika layar mati

Semuanya akan mati ketika mac mati dari sumber listriknya, sehingga Anda tidak perlu khawatir tentang masa pakai baterai.

Benoit Duffez
sumber
1
Opsi ini tidak berguna di macOS Sierra. IMac saya tidur terlepas dari pengaturan ini, membangun akses SSH, dan kemudian tidur segera setelah logout SSH. Benar-benar menjengkelkan.
Bruno Philipe
Jawaban ini akhirnya menyelesaikan masalah saya setelah bermain-main dengan ~ / .ssh / config selama berjam-jam di Mojave iMac
n1000
6

Utilitas pmset bawaan OS X memiliki pengaturan yang dapat melakukan apa yang Anda inginkan. Periksa halaman pmsetmanual untuk ttyskeepawakepengaturan dan penjelasan yang menyertainya.

Perintah berikut mungkin akan melakukan apa yang Anda inginkan:

sudo pmset -c ttyskeepawake 1

The -cflag membuat pengaturan ini aktif khususnya ketika komputer berjalan pada listrik AC (sebagai lawan baterai atau listrik UPS), dan ttyskeepawake 1mencegah komputer dari tidur selama sesi tty aktif (mungkin satu remote). Ini akan memungkinkan tidur jika sesi tidak aktif lebih lama dari pengatur waktu tidur, tetapi jika itu masalah, mungkin komputer seharusnya tidak disetel untuk tidur sama sekali.

Robo
sumber
6

Untuk menggunakan SSH untuk membuka shell pada mesin OSX jarak jauh dan mencegahnya tidak tidur selama sesi SSH:

$ ssh -t me@mymacbook caffeinate -i bash
starfry
sumber
5

Sejak Mac OS X 10.8, Anda harus dapat menggunakan caffeinate(8)perintah.

Coba caffeinate -s ssh server.example.com.

200_sukses
sumber
9
OP sedang mencoba untuk menjaga remote Mac (yaitu, server ssh) dari tidur. Kecuali saya salah, teladan Anda hanya akan mencegah tidur di terminal klien.
Owen
3

Saya menambahkan skrip berikut di .bash_profile

if expr "$(ps -o comm= $PPID)" : '^sshd:' > /dev/null; then
  caffeinate -s $SHELL --login
  exit $?
fi

Jika prosesnya adalah anak langsung dari daemon ssh, jalankan shell yang sama melalui perintah caffeinate (8) untuk mencegah sistem dari tidur selama sesi ssh.

Kubo Takehiro
sumber
2

Pencarian web untuk mencegah mac muncul dengan banyak informasi bagus tentang utilitas dan trik yang dapat Anda gunakan.

Namun, dalam situasi Anda, saya menduga bahwa apa yang benar-benar ingin Anda lakukan adalah memiliki sesi ssh terpisah yang menjalankan program baris perintah yang sangat sederhana yang mencegah Mac dari tidur. Apple memberikan kode sumber lengkap di T&J Teknis 1160: Mencegah tidur . (Sayangnya, halaman ini rusak di situs Apple saat ini, tetapi Anda dapat mengambil salinan dari cache Google.)

Saya belum diuji untuk melihat apakah program ini dapat dijalankan dengan sukses dari sesi ssh, tetapi sepertinya bisa.

Perhatikan bahwa implementasi sshfs biasanya tidak tetap masuk ke sistem jarak jauh sepanjang waktu, dan jalankan sesi ketika mereka menginginkan file atau direktori. Jadi Anda perlu sesi ssh terpisah, berjalan di jendela terminal yang diperkecil, untuk menjalankan program insomnia.

Keuntungan dari pendekatan ini adalah Anda tidak perlu menggunakan sudo, atau mengacaukan pengaturan manajemen daya sistem.

Neil Mayhew
sumber