Hentikan Mac dari tidur saat skrip bash berjalan, lalu biarkan tidur seperti biasa setelah selesai

13

Saya punya Mac saya untuk bangun di malam hari dan menjalankan rsync untuk mendukungnya. Ini dikonfigurasi melalui Energy Saver> Schedule.

Namun tampaknya itu akan kembali tidur sebelum dapat menyelesaikan apa pun, jadi saya harus menghentikannya tidur selama eksekusi skrip bash yang dijalankan oleh rsync.

Saya pikir cara terbaik (jika mungkin) adalah dengan mengeluarkan perintah untuk mengatur waktu tidur menjadi "Never" atau waktu yang sangat lama sebelum rsyncs dan kemudian kembali normal setelah selesai. Apakah ada solusi yang lebih baik untuk melakukan ini?

Taji
sumber
Harus menggunakan superuser?
Kimvais

Jawaban:

18

Kafeinasi

Sebagai contoh:

caffeinate -i rsync -avz someuser@somehost:somefolder /some/local/folder

Dari halaman manual:

EXAMPLE
     caffeinate -i make
        caffeinate forks a process, execs "make" in it, and holds an
        assertion that prevents idle sleep as long as that process
        is running.

Lihat man caffeinatedetailnya.

Nathan Long
sumber
11

Mac OS X 10.8 (Mountain Lion) dan yang lebih baru

Gunakan caffeinateperintah. Lihat jawaban Nathan Long atau man caffeinateuntuk perinciannya.

Mac OS X 10.7 (Lion) dan sebelumnya

Ini terkubur di halaman manual, tetapi pmset memiliki mode yang sangat sederhana untuk mencegah tidur. Jika Anda menjalankan perintah, pmset noidleMac Anda akan tetap terjaga sampai proses itu dimatikan. Berikut ini cara menggunakannya dalam skrip:

# launch process to prevent sleep and move it to the background
pmset noidle &
# save the process ID
PMSETPID=$!

... do stuff here ...
... don't fall asleep ...
... watch out for that tree!
... ok we're free and clear now ...

# kill pmset so the computer can sleep if it wants to
kill $PMSETPID

Ini lebih baik daripada menggunakan pmset untuk mengubah pengaturan tidur Anda, yang membutuhkan akses root dan (dengan asumsi Anda ingin menjadi warga negara yang baik) beberapa cara untuk mendeteksi pengaturan saat ini dan mengubahnya kembali ketika Anda selesai.

benzado
sumber
2
pmset noidlesudah ditinggalkan: halaman manual mengatakan: This argument is deprecated in favor of caffeinate(8). Lihat jawaban saya.
Nathan Long
4

Mencoba

man pmset

:-)


sumber