아직 아무것도 찾지 못했기 때문에 여기 누군가가 아이디어가 있기를 바랍니다.
특정 충전 수준에 도달하거나 배터리가 완전히 충전되었을 때 Apple 노트북의 배터리를 기준으로 짝수를 시작하고 싶습니다.
정기적으로 무언가를 실행하고 배터리 잔량을 확인하고해야 할 일을 결정할 수 있지만 가능하면 이벤트 중심을 선호합니다.
아직 아무것도 찾지 못했기 때문에 여기 누군가가 아이디어가 있기를 바랍니다.
특정 충전 수준에 도달하거나 배터리가 완전히 충전되었을 때 Apple 노트북의 배터리를 기준으로 짝수를 시작하고 싶습니다.
정기적으로 무언가를 실행하고 배터리 잔량을 확인하고해야 할 일을 결정할 수 있지만 가능하면 이벤트 중심을 선호합니다.
답변:
Power Manager 는 무료가 아니지만 배터리 수준 (내부 또는 UPS)을 기반으로 트리거 이벤트를 지원합니다. 이벤트는 스크립트를 실행하거나 응용 프로그램을 시작하거나 종료와 같은 작업을 수행 할 수 있습니다.
Power Manager는 이벤트 중심이며 배터리 변경을 폴링하지 않습니다.
대신 Power Manager는 OS X의 IOKit 계층에 연결하여 하드웨어의 업데이트를 기다립니다. 아무도 로그인하지 않으면 이벤트가 트리거 될 수 있습니다. 활성 사용자에 의존하지 않습니다.
내장 된 일정 도우미 작업은 배터리가 특정 수준으로 떨어질 때 수행하는 데 중점을 두지 만 배터리 백분율의 증가 또는 남은 시간을 확인하기 위해 조정할 수 있습니다.
이 두 게시물은 UPS 전원에 대해 설명하지만 MacBook의 내장 배터리에 쉽게 적용 할 수 있습니다.
공개 : 저는 Power Manager의 소프트웨어 엔지니어입니다.
나는 이것이 OS 기반이기를 원하므로 인터넷 연결이나 브라우저가 필요하지 않습니다. 백그라운드에서 발생할 수있는 것
가장 쉬운 방법은 응용 프로그램을 사용하는 것이지만 내장 OS 명령으로 만 수행하는 방법은 다음과 같습니다. 이벤트 중심이 되길 원하지만 그 방법을 잘 모르겠습니다. 배터리 수준을 확인하고 임계 값보다 높거나 낮은 경우 다른 방법을 사용하는 방법이 있습니다.
launchd
프로세스를 고려할 수 있습니다. 기본적으로 매 x
분 마다 실행되는 예약 된 작업입니다 . 고급 사용자가 자주 사용하지만 설정하기가 어렵지 않습니다. 이 디렉토리에 넣은 .plist 파일을 사용하여 시작된 예약 된 작업 Macintosh HD\Library\LaunchDaemons
을 구성합니다. .plist 파일을 구성하는 방법입니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Debug</key>
<true/>
<key>ExitTimeOut</key>
<integer>120</integer>
<key>Label</key>
<string>com.me.BatteryInfo</string>
<key>ProgramArguments</key>
<array>
<string>/Users/yourusername/batt.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>1800</integer>
</dict>
</plist>
위에서 언급 한 폴더 com.me.BatteryInfo
에서 파일을 저장하면 LaunchDaemons
30 분마다 실행되는 예약 된 작업이 생성됩니다. 1800
바로 위 의 숫자 </dict>
는 작업 실행 빈도를 초 단위로 나타낸 것입니다. 어디 <string>/Users/yourusername/batt.sh</string>
에서 일정에 따라 실행할 스크립트를 지정할 수 있습니다. 당신은 떠나야합니다 <string>
및 </sting>
손상.
줄 <string>com.me.BatteryInfo</string>
은 예약 된 작업의 고유 이름입니다. 둘 이상을 만들려면 여기에서 각 .plist의 이름이 고유해야합니다.
다음으로해야 할 일은 .plist의 소유권을로 변경하는 것 root
입니다. 이것은 보안 기능으로 필요합니다 (소프트웨어 / 사용자가 예약 된 악성 작업을 생성하는 것을 막기 위해 가정합니다). 파일의 소유권을 변경하려면 sudo chown root \Library\LaunchDaemons\yourtask.plist
(task.plist를 사용자가 만든 .plist의 실제 파일 이름으로 바꾸십시오). 이 작업은 암호를 묻습니다.
이제 정기적으로 실행될 스크립트를 작성해야합니다. 컴퓨터에 수행 할 작업을 알려주려면 .sh 파일 (bash 스크립트)을 만들어야합니다. .sh 파일을 만들려면 Sublime Text 또는 Komodo Edit 와 같은 프로그래머 텍스트 편집기를 엽니 다 . 텍스트 편집은 스크립트를 방해하는 파일에 텍스트를 추가하는 경우가 많으므로 사용하지 마십시오. 텍스트 편집은 실제로 코드에 사용해서는 안됩니다.
다음 코드를 사용하여 스크립트 (.sh 파일)를 작성하십시오.
#!/bin/sh
percent=$(ioreg -l | awk '$3~/Capacity/{c[$3]=$5}END{OFMT="%.3f";max=c["\"MaxCapacity\""];print(max>0?100*c["\"CurrentCapacity\""]/max:"?")}')
if [ $percent > 95 ]
then
echo 'charged.'
fi
exit 0
echo 'charged.'
배터리가 충전 될 때 실행할 터미널 명령으로 교체하십시오 . open /Applications/Notes.app
Notes 애플리케이션을 엽니 다. 다른 응용 프로그램을 열도록 디렉토리를 변경할 수 있습니다.
$percent > 95
이것은 다음 라인이 배터리가 95
충전 된 상태 이상일 때만 실행되도록 지시합니다 . 원하는대로 변경할 수 있습니다. 여기의 배터리 잔량은 종종 상단의 메뉴 막대에 표시되는 것과 약간 다릅니다. '배터리가 완전히 충전 된 상태에서 실행'하려면 다음을> 95로 두는 것이 좋습니다 . 예를 들어 배터리가 20 % 미만으로 떨어질 때 작업을 실행하려면 다음과 같이 변경하십시오.$percent < 20
참고 :이 작업은 예약 된 작업이므로 x
몇 분 마다 스크립트가 실행됩니다 . 즉 open \Applications\Notes.app
, 스크립트 안에 넣으면 1 x
분 마다 Notes 애플리케이션이 시작됩니다 (배터리가 충전 된 경우)
이 작업은 아무도 로그인하지 않아도 실행됩니다.
나는 당신 이이 질문을 한참 전에 알고 있다는 것을 알고 있지만, 이것이 누군가를 도울 것입니다.