[apple] 5 초마다 plist 명령 실행

내 User / Library / LaunchAgents 폴더에 다음 plist 파일이 있습니다. 60 초마다 “g”키를 누릅니다.

제 질문은 5 초마다 “g”키를 누르도록 어떻게 변경할 수 있습니까?

<?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>Label</key>
    <key>Program</key>
    <string>/usr/bin/osascript</string>
    <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>-e</string>
        <string>tell application "System Events" to keystroke "g"</string>
    </array>
    <key>ServiceDescription</key>
    <string>Auto Keypress</string>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Second</key>
        <integer>0</integer>
    </dict>
</dict>
</plist>



답변

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>Label</key>
    <string>G-key-pusher</string>
    <key>Program</key>
    <string>/usr/bin/osascript</string>
    <key>Program</key>
    <string>/bin/sh</string>
    <key>ProgramArguments</key>
    <array>
        <string>sh</string>
        <string>-c</string>
        <string>while sleep 5; do /usr/bin/osascript -e 'tell application "System Events" to keystroke "g"'; done</string>
    </array>
    <key>ServiceDescription</key>
    <string>Auto Keypress</string>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

그것은 5 초 타이머를 수행하고 osascript를 호출하는 쉘 스크립트를 실행하는 것입니다. 시작된 plist는 스크립트가 어떤 이유로 죽었을 경우 다시 시작되도록합니다. 여전히 테스트하지는 않았지만 작동하지 않는 이유는 없습니다. 시작 항목을 변경할 때 과거에 문제가 있었지만 레이블을 변경하여 수정했습니다. 이것은 당신이 Labelplist 에서 키 의 값을 생략했음을 상기시킵니다 .

(편집 : 변경해야 할 부분을 설명하는 대신 약간 설명하고 완전한 파일을 제공하십시오.)


답변

나는 이것이 매우 오래된 스레드라는 것을 알고 있지만 최근 launchctl 조언에 대한 검색 중 하나에서 나타 났으므로 “x”초마다 올바른 답변을 시작하고 싶었습니다. launchctl은 cron처럼 사용할 수 있습니다 (더 나은 방법). 원래 스크립트에서는 “StartCalendarInterval”키를 사용합니다. “StartInterval”키를 사용하여 초 수를 지정해야합니다.

라인을 교체하십시오 :

<key>StartCalendarInterval</key> <dict>
    <key>Second</key>
    <integer>0</integer> </dict>

와:

<key>StartInterval</key>
<integer>5</integer>
<key>ThrottleInterval</key>
<integer>0</integer>


답변