Як запобігти сну Mac у командному рядку?


12

У мене давно працює сценарій на віддаленому комп’ютері.

Я не хочу припиняти свій ssh ​​сеанс, і мені потрібно ввести його в сценарій оболонки.

Як можна запобігти засипання мого Mac уві сні з командного рядка?


3
Яка версія OS X?
nohillside

Відповіді:


19

У гірському Леві ви можете використовувати caffeinateкоманду.

caffeinate -u -t 1000

завадить простоїти сон протягом 1000 секунд.


1
Я ще не мав успіху ні з комбінацією cmdeline 'кофеїн' (включаючи одну вище), ні з Caffeine.app в Mavericks, що запобігає сну після закриття кришки. InsomniaX.app - це єдине, що поки що перешкоджало сну кришки, але поки не знайшли працюючу версію cmdline (ще не зробили роботу goo.gl/CU06jb - це може бути застарілим). Незважаючи на те, я хочу щось, що дозволяє встановити вимогу пароля для відображення, навіть відмовляючи від сну протягом обмеженого, програмованого часу після закриття кришки ... і InsomniaX.app теж не робить цього.
Джонні Юта

1
Подібні питання. Я перебуваю на Yosemite, і, хоча я запускаю кофеїн у терміналі, через деякий час екран потемніє, і я повинен увійти в систему. Це підказує мені, що кофеїн не підтримує Mac в спокої, що є моєю метою, щоб підключення до Wi-Fi може зберігатися / все, що у мене відбувається, може продовжуватися.
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 to @ кудись", коли мій 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 &Щоб повернутися до pmsetтипу fg.


Ви також можете запустити pmsetу фоновому режимі, використовуючи pmset noidle &і, таким чином, продовжувати використовувати поточну командну команду. Введіть, fgщоб pmsetповернутися, і тоді ви можете Ctrl + C це
binarybob

@binarybob О! Я цього не знав. Дякую за пораду!
daviesgeek

@davisgeek - справді приємно! Дякую за чайові.
кобаме

1
цей також працює в ноутбуці IPython: !pmset noidle- дуже приємно, коли у вас на робочому столі працює ноутбук IPython та ноутбук, що віддалено підключаються.
Jason S

1
Це не працює для мене. Він працює успішно, з'являється повідомлення "Запобігання сну в режимі очікування (^ C для виходу) ...", але воно все ще переходить у режим сну.
Юліан Онофрей

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

Пояснення:

-i - Не допускати простою сну.

-s- Не допускати сну системи (повністю, навіть якщо закрити кришку). Примітка. Він працює лише під час живлення змінного струму.

/bin/ssh- Просто продовжуйте писати команду, яку ви хочете виконати. Використання sshбезпосередньо замість /bin/sshтакож має працювати.

Результати: Ваша система не буде спати, поки sshкоманда працює.



-3

Заставка StarMessage ( http://starmessagesoftware.com/moonscreensaver/ ) також має можливість підтримувати MAC неспаним протягом 2 годин, 8 годин або постійно. Цей спосіб відключення сну MAC набагато простіше, ніж кофеїн.


Як це працює для командного рядка?
користувач151019

Обов’язково прочитайте розділ просування в довідковому центрі .
nohillside
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.