5 초마다 plist 명령 실행


3

내 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>

아래 답변을 참조하십시오. 그러나 왜 그런 것을 원하십니까?
Harald Hanche-Olsen

답변:


2

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 에서 키 의 값을 생략했음을 상기시킵니다 .

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


답장을 보내 주셔서 감사합니다. 불행히도 나는 이것을 작동시킬 수 없다. 어떤 응용 프로그램에서도 "g"를 누르지 않습니다. 첫 번째 닫는 배열을 통해 주요 프로그램을 첫 번째 코드 블록으로 바꿨습니다. 또한 Second 및 integer 0 키를 두 번째 코드 블록으로 바꿨습니다. 파일을 실행할 때 아무 일도 일어나지 않습니다. 이 코드를보고 완전한 코드 예제를 게시 할 수 있습니까?
Ryan

@Ryan : 죄송합니다. 정말 바빴습니다. 그렇지 않으면 테스트하고 완전한 예제를 게시했을 것입니다. StartCalendarInterval 키 전체와 함께 제공되는 dict을 내 대답의 두 번째 코드 블록으로 바꿔야합니다. Holler 그래도 작동하지 않으면 여분의 시간을 찾을 수있을 때 완전한 예를 들어 보겠습니다.
Harald Hanche-Olsen

@Ryan : 답변을 편집하고 의견을 추가했습니다. 여전히 테스트되지 않았습니다.
Harald Hanche-Olsen

방금 이것을 테스트하고 10 초마다 g 키를 누르면 충분합니다. 감사합니다!
Ryan

좋아… 10 초마다? osascript 비트가 실제로 실행하는 데 5 초가 걸리지 않는다면 이상하지 않습니다. 그러나 작동하면 작동합니다.
Harald Hanche-Olsen

3

나는 이것이 매우 오래된 스레드라는 것을 알고 있지만 최근 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>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.