작업 / 앱이 실행되는 동안 Mac OSX를 켜고 잠자기 상태로 유지


10

AC 전원을 켜고 몇 시간 동안 rsync를 wifi에서 작동하게하고 싶습니다. 그러나 그렇게하면 Mac은 얼마 후에 연결을 끊습니다.

에너지 설정 창에서 "컴퓨터 절대 절전 모드", "가능한 경우 하드 디스크를 절전 모드로 전환"및 "네트워크 액세스를위한 웨이크"로 구성되어 있습니다.

또한 일단 작업이 완료되면 Mac이 실제로 잠자기 상태가되면 좋을 것입니다.

나는 전에도 비슷한 질문을 받았으며 pmsetinsomniaX 가 있다는 것을 알고 있지만 기계가 잠들지 않기를 원하지 않습니다 . 그리고 더 많은 확장 프로그램을 계속 설치하고 싶거나 매번 pmset을 조정하고 싶지 않습니다.

나는 그것이 기본적으로 예상대로 동작하기를 원합니다. 작업을 실행하는 동안 깨어있는 상태에서 "가능한 경우"잠을 자십시오. 이번에는 rsync로 인한 것이지만 다음에는 다른 것일 수 있습니다.

평소처럼 너무 많이 기대하고 있습니까? 고칠 수 있습니까? 심지어 부서져 있습니까?

답변:


10

카페인

예를 들면 다음과 같습니다.

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

매뉴얼 페이지에서 :

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.

"이 영화를보고있는 동안 디스플레이를 절전 모드로 두지 마십시오"와 같은 상황에서도 사용할 수 있습니다.

caffeinate -d # in effect until you hit Ctrl+C

... 또는 "다음 10,000 초 동안 깨어 있으십시오":

caffeinate -t 10000

자세한 내용 man caffeinate을 참조하십시오.


2
이건 정말 대단해! OSX에서 이것이 기본값입니까? 어떤 버전부터? (나는 이것에 관한 정보를 빨리 찾을 수 없었다)
cregox

@Cawas -이 문서에 따르면, 그것은 산 사자와 함께 출하 시작 : cnet.com/news/... 나는에서 그것에 대해 알게 man pmset경우, noidle사용되지 않는 같은 옵션이 표시됩니다.
Nathan Long

또한,이 멋진 튜토리얼을 참조하십시오 : computers.tutsplus.com/tutorials/…
Nathan Long

4

지글러 는 마우스가 실행 중일 때만 " 지글 "하도록 설정할 수 있습니다. 이렇게하면 화면과 컴퓨터가 잠자기 상태가되지 않습니다. 뚜껑이 닫힌 랩탑에서는 작동하지 않습니다. 이를 위해서는 InsomniaX 또는 다른 kext 기반 응용 프로그램이 필요합니다.

여기에 이미지 설명을 입력하십시오


뚜껑을 닫지 마십시오. 괜찮습니다. 과열을 원하지 않습니다.
cregox

실제로 작은 응용 프로그램입니다.
ayaz

글쎄, 다시는 필요하지 않지만 실제로 이것은 내 문제를 해결했으며 좋은 해결책처럼 보입니다. 나는 전에 그것을 받아 들였어야한다고 생각한다.
cregox

2

또 다른 대안은 카페인 입니다. 이 앱은 확장 프로그램이 아닌 앱으로, 지정된 시간 동안 머신을 "활성"상태로 유지합니다. 그 후에 머신은 빈 화면 이동, 화면 보호기 실행, 절전 모드 등 정상적으로 수행 할 수있는 모든 작업을 수행 할 수 있습니다. t 기계를 잠자기 상태로 두십시오. 요청한 기간 동안 에너지 절약 설정을 "절대"로 설정 한 후 나중에 복원하는 것과 기능적으로 같습니다.

여기에 이미지 설명을 입력하십시오


그러나 여전히 앱을 시작하고 중지해야합니다. 당신은 그것을 설정하고 잊을 수 없습니다.
Josh K

1

실행중인 프로세스의 존재에 따라 절전 타이머를 설정 / 재설정하는 Stay-Open Applescript 응용 프로그램을 만드는 것을 고려할 수 있습니다. 발사 된 plist를 만드는 것도 가능한 해결책이지만 여전히 문법에 흔들립니다. "pmset force sleep X"명령은 루트 액세스가 필요하지 않지만 재부팅시 설정이 재설정됩니다.

귀하의 상황이 귀하의 모든 요구를 예상 할 수없는 것처럼 들리므로, 귀하를 위해 무언가를 스케치하겠습니다.

property LoopTime: 5 --measured in seconds
property normalSleepTimeout: 30 --measured in minutes
property processName: "rsync"  --the name of the process you're trying to find

on run
   do shell script "pmset force sleep 0"  --disables sleep
   idle()
end

on idle
   if not appIsRunning() then 
      do shell script ("pmset force sleep " & normalSleepTimeout as string) -- sets sleep to desired idle timeout
      quit
   end
   return 
end

on appIsRunning()
   --Here's where you need to do the test that an app is running.  True needs to mean "the app is running".  Store the value to "result" or change the below return statement.

   return result
end

rsync 및 백그라운드 프로세스와 같은 것들을 위해서는 더 영리하고 $ top과 같은 다른 기능을 폴링해야합니다.

set result to False
if 0 < (count of (do shell script ("top -l 1 | grep" & processName as string))) then
   set result to True
end

위의 경우 "rsync"와 "rsyncd"가 모두 일치하므로 rsyncd가 실행 중이면 "rsync"만 검색하면 오 탐지가 반환됩니다. 이것이 효과가 없다면 더 까다로워 야 할 수도 있습니다.

응용 프로그램이 Windowed 프로세스 인 경우 다음을 사용하여 실행중인 것을 결정합니다.

tell application "System Events" to set RunningAppNames to name of processes

또는 번들 식별자 (보다 정확한)

tell application "System Events" to set RunningBundles to bundle identifier of processes

귀하의 시나리오에 대해 자세히 알려 주시면보다 정확한 사용자 인터페이스를 사용하여보다 정확하게 작성해 드리겠습니다.


댐, 나는 당신이 여기에서 한 번 더 말한 모든 것을 볼 것입니다. 그러나이 모든 문제를 해결해 주셔서 감사합니다! 그래도 지금은 스크립트 작성을 고려하고 있지 않습니다. :)
cregox

답변을 음수가 아닌 값으로 되돌려 주셔서 감사합니다. 나는 스크립팅으로 산다. 나는 BASH에 끔찍하지만 AppleScript를 좋아하고 터미널 명령을 실행하는 것을 절대적으로 좋아합니다.
dotHTM
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.