부팅 / 로그인 / 다른 시간에 애플리케이션을 자동으로 실행 / 중지 / 다시 시작하려면 어떻게해야합니까?


42

시스템 부팅, 사용자 로그온, 특정 시간, 디스크 연결 등에서 스크립트 나 앱이 자동으로 실행 또는 실행 중지되도록하려면 어떻게해야합니까?


3
Lingon은 .plist 파일을 만들어보다 사용자 친화적으로 시작하는 앱입니다. 또한 누군가 웹 기반의 plist 제작자를 만들었습니다 : plist.spotmac.de
Chealion

우우! plist.spotmac.de는 사라진 것 같습니다. :-(
docwhat

답변:


44

귀 방법

사용자가 로그인 할 때 무언가를 실행하려면 가장 쉬운 방법은 GUI를 사용하는 것입니다. 당신은 할 수 있습니다

  • System Prefs > Accounts > Login Items화면으로 이동하여 다음 항목을 추가하십시오.
    • +기호를 클릭
    • .app창으로 끌어서 놓기
  • 도크에서 앱의 상황에 맞는 메뉴를 불러 와서을 선택한 Options다음Open at Login

시작된 방법

이 아닌 다른 것을 시작 .app하거나 실행을보다 세밀하게 제어하려면 다음과 같이하십시오.

  • 특정 시간 또는 지정된 간격으로
  • 충돌하는 경우 지속적으로 다시 시작
  • 사용자 로그인과 관련이 없습니다
  • 네트워크 액세스의 기능으로서
  • 다른 프로세스가 실행 중일 때만 실행
  • 파일이 폴더에 추가 될 때
  • 기타

다음은 사용하고자하는 기술 솔루션 입니다 launchd.

launchd구성 파일 을 설정하는 가장 쉬운 방법 은 도구를 사용하여 도움을받는 것입니다. 작성 당시 가장 인기있는 방법은 Lingon (SourceForge에서 구할 수있는 이전 무료 버전이 있음) 또는 PList Website 도구입니다.

핸드 코딩

당신이 Lingon 또는 PLIST 웹 사이트를 사용하려는 경우에만 시스템에서 사용할 수있는 원시 도구를 사용하지 않을 경우, 당신은 당신의 자신의 쓸 수 있습니다 launchd plist손으로

다음은 시스템 부팅 후 SomeApp을 계속 실행하기 위해 시작된 스크립트입니다 (사용자 로그인에 관계없이). / System / Library / LaunchAgents /에 있으며 SomeApp.restart.plist라고합니다. 사용자 로그인을 기반으로 실행되는 경우 ~ / Library / LaunchAgents /에 저장 될 수 있습니다.

<?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>RunAtLoad</key>  
        <true/>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>SomeApp.restart</string>
        <key>ProgramArguments</key>
        <array>
                <string>/path/to/SomeApp.app/Contents/MacOS/SomeApp</string>
        </array>
        <key>StartCalendarInterval</key>
        <dict>
            <key>Hour</key>
            <integer>5</integer>
            <key>Minute</key>
            <integer>10</integer>
       </dict>
</dict>
</plist>

로 한 번로드

launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
  • RunAtLoad옵션은 처음 launchctl이를 실행하는 응용 프로그램을 실행합니다.
  • KeepAlive이 충돌하는 경우 옵션은 응용 프로그램을 다시 시작합니다.
  • StartCalendarInterval특정 시간에 실행됩니다. 아마도 이것은 이전 두 가지와 상호 배타적이지만, 수행 할 수있는 작업을 보여주기 위해 포함되었습니다.launchd
  • Launchctl은 재부팅 후에 이것을 실행합니다.

Lingon 실험 나에 대한 매뉴얼 페이지를 읽어 볼 수 있습니다 많은 추가 옵션이 있습니다 launchctl, launchd.plist, plist, launchd.conf, 등


고마워, 정말 유용합니다. launchctl load -w ...변경 사항을 지속적으로 유지하는 데 사용할 수도 있습니다 . 귀하의 의견에 따라 OSX poweruser 구성자 스크립트를
sorin

8

Lingon은 여전히 ​​작동합니다. 방금 지난주에 "예약 된 작업"을 만들었습니다. 다운로드 한 후 최신 버전을 얻으려면 자동 업데이터를 사용해야했지만 제대로 작동합니다.


1
Lingon은 이제 App Store에 있습니다
user151019

1
그러나 무료 오픈 소스 버전을 찾으려면 Sourceforge에서 파헤쳐 야합니다. Leopard (10.5)에서는 최신 상용 버전도 작동하지 않습니다. 그러나 2.1.1 않습니다 - 볼 sourceforge.net/projects/lingon/files/Lingon/2.1.1
nealmcb

7

시스템이 부팅 될 때만 실행해야하는 경우 시스템 환경 설정에서 계정 환경 설정 창의 로그인 항목 탭을 사용하십시오.

대체 텍스트

스크립트 인 경우 AppleScript 편집기를 사용하여 응용 프로그램으로 저장하십시오. AppleScript 스크립트가 아닌 경우에도 AppleScript를 사용하여 다음과 같이 스크립트를 실행할 수 있습니다.

do shell script "your script here"


응? 확실합니까? 스크린 샷의 UI에 "이 항목은 로그인 할 때 자동으로 열립니다"라고 표시됩니다. 시스템이 부팅 할 때와 다르지 않습니까? 또한 귀하의 링크는 404로 보입니다.
ssc

5

Loginhooks를 잊지 마십시오.

루트로 실행되지만 다음과 같이 $ HOME / .loginhook 스크립트를 실행할 수 있어야합니다.

#!/bin/sh

home=`eval echo ~$user`

if [ -x "$home/.loginhook" ]; then
    logger -t $0 "executing .loginhook of user $user"
    su - $user -c "$home/.loginhook"
fi

그런 다음 ~ / .loginhook에 원하는 명령을 추가하십시오.

또한 '시작됨'이 "Mac 방식"이지만 crontab은 여전히 ​​완벽하게 실행 가능한 옵션이며 XML 실행 파일보다 훨씬 쉽게 편집 할 수 있습니다.

개인적으로, 나는 Lingon에 대해 행복하게 $ 5를 지불했습니다 .


따라서 코드 블록의 스크립트는로 저장해야 /path/to/script하며 sudo defaults write com.apple.loginwindow LoginHook /path/to/script? 그리고 홈 디렉토리에서 스크립트를 실행하는 요점은 각 사용자가 사용자 정의 (또는 아니오)를 가질 수 있다는 것입니다 ~/.loginhook.
Lri

@Lri-그렇습니다. 명확하지 않은 죄송합니다. 블록 코드는 /usr/local/bin/loginhook.sh 일 수 있으며 루트로 실행되므로 사용자가 로그인 할 때 $ HOME / .loginhook을 찾아 해당 사용자로 실행합니다.
TJ Luoma

4

다른 포럼 덕분에 iCal에서 지정된 시간에 앱을 쉽게 실행할 수 있습니다.

  1. 앱을 열고 싶은 시간 동안 iCal에서 새로운 이벤트를 만드십시오.
  2. '경고'에서 '파일 열기'를 선택하십시오. 따라서 파일을 열도록 설정하면 해당 파일 형식의 기본 응용 프로그램도 열립니다.
  3. 파일 대신 앱을 열려면 'iCal'드롭 다운을 '기타 ...'로 변경하고 실행하려는 앱을 선택하십시오!

알아 두어야 할 한 가지는 iCloud를 통해 여러 Mac을 공유하는 경우이 이벤트는 해당 앱에서 실행되며 원하지 않거나 원하지 않을 수도 있다는 것입니다. 단일 Mac에서만이 기능을 사용하려면 다음과 같이 수행 할 수있는 '내 Mac에서'일정으로 이벤트를 작성해야합니다.

  1. 캘린더 이름 위에 마우스를 놓고 '숨기기'버튼을 클릭하여 왼쪽 막대에서 다른 모든 iCloud 또는 공유 캘린더를 숨 깁니다.
  2. 이제 마우스 오른쪽 버튼을 클릭하십시오 (또는 완전한 크레 틴이고 여전히 두 개 이상의 손가락이 있고 마우스 기본 설정을 변경하여 기본 '크레 틴의 크레 틴 벽돌'상태보다 약간 더 유용하다는 것을 인식하지 못한 경우 옵션 클릭 )을 선택하고 '새 캘린더'를 선택하십시오.
  3. 모든 공유 캘린더가 숨겨져 있기 때문에이 새로운 캘린더는 '내 Mac에서'로 생성되며이 Mac의 로컬 위치에있게됩니다.

나는 단지 이것을 스스로 발견했고 두 팁으로 즐겁게 놀랐으므로 여기에서 공유 할 것이라고 생각했습니다.

이 유용한 사람들로부터 정보를 얻었습니다. 여러분에게 감사합니다! ...

http://osxdaily.com/2013/04/15/launch-file-app-scheduled-date-mac-os-x/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.