Mac pro idzie spać na nohup

3

Mam następujący scenariusz. Mam skrypty powłoki, które chcę uruchamiać zdalnie na moim komputerze Mac pro, więc ssh in, uruchamiam je bez żadnych bloków i wylogowuję się. Robiłem to od lat na maszynach opartych na systemie Linux i właśnie zacząłem wypróbowywać to na nowym komputerze Mac Pro. Jednak okazuje się, że Mac przechodzi w tryb uśpienia, gdy są one uruchomione, a ich ukończenie zajmuje znacznie więcej czasu. Oczywiście mogę wyłączyć sen w preferencjach energetycznych, ale zdecydowanie są chwile, kiedy chcę, żeby się uspokoił. Czy jest coś, co mogę zrobić, jeśli chodzi o argument wiersza poleceń, który wyłączałby uśpienie podczas procesu?

użytkownik2379888
źródło

Odpowiedzi:

3

kofeinuj swoje skrypty

Użyj wbudowanej komendy kofeinowej w OS X, aby zapobiec zasypianiu komputera Mac. caffeinatejest zalecanym sposobem na tymczasowe ograniczenie, aby komputer Mac przechodził w stan niskiego zużycia energii.

caffeinatetworzy twierdzenia, aby zmienić zachowanie systemu w trybie uśpienia. Jeśli nie określono żadnych flag asercji, kofeinian tworzy asercję, aby zapobiec bezczynności snu. Jeśli określone jest narzędzie, kofeina tworzy twierdzenia w imieniu narzędzia, a twierdzenia te będą obowiązywać przez czas wykonywania narzędzia. W przeciwnym razie kofeinat tworzy bezpośrednio te twierdzenia, które będą się utrzymywać, dopóki kofeinat nie wyjdzie.

Graham Miln
źródło
Naprawdę bardzo ładnie!
CousinCocaine
2

Możesz użyć, pmsetaby tymczasowo zapobiec przejściu komputera Mac w tryb uśpienia.

pmset noidle & PMSETPID=${!};sleep 10; kill $PMSETPID

Zamień na sleep 10swoje polecenie.

Możesz także napisać funkcję i zapisać ją w .bash_profile.

insomnia() {
    pmset noidle &
    PMSETPID=$!
    $($@)
    kill $PMSETPID
}

i użyj tego w ten sposób: $ insomnia sleep 10

Polecam używać screenzamiast nohup.

Edycja: na nowszych komputerach Mac należy używać caffeinatezgodnie z opisem Grahama Milna. pmset noidlenadal działa, ale od 10.9 jest oznaczony jako „przestarzały” w dokumentacji.

Siergiej
źródło
0

Zrobiłem funkcję w moim ~ / .bash_profile, tak:

# ~/.bash_profile

# wrap ssh so computer doesn't go to sleep
ssh()
{
    echo "caffeinating ssh session..."
    LC_CTYPE= # fix issue with UTF8 on server
    caffeinate -i ssh "$@"
}

Teraz, kiedy używam mojego „wspólnego” polecenia ssh, jest ono owinięte kofeiną, dlatego system nie może zasnąć.

Teraz, kiedy rozpoczynam sesję ssh, widzę pmset -g, że mówi mi:

sleep                10 (sleep prevented by caffeinate)
zrozumiałem
źródło