서비스로 정의 된 장기 실행 프로세스


0

가상 박스 헤드리스를 시작하는 서비스를 만들었습니다. 잘 작동합니다. 그러나 가상 머신이 다시 중지 될 때까지 (서비스 메뉴가 회전합니다.

VM을 다시 닫을 때까지 명령이 실행되므로 이해할 수 있습니다.

"nohup", "exec"를 사용하여 "&"를 추가하려고했지만 여전히 가상 상자를 다시 닫을 때까지 "회전 바퀴"가 사라지지 않습니다.

또한 자동화 응용 프로그램을 만들려고했지만 동일합니다.

명령을 백그라운드로 지정하거나 분리하거나 최소한 물레를 없애는 방법이 있습니까?

편집하다:

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>NSServices</key>
        <array>
                <dict>
                        <key>NSMenuItem</key>
                        <dict>
                                <key>default</key>
                                <string>VBox Start Headless Ubuntu</string>
                        </dict>
                        <key>NSMessage</key>
                        <string>runWorkflowAsService</string>
                </dict>
        </array>
</dict>
</plist>

그리고 스크린 샷 : Automator의 스크립트


죄송합니다. 깨달았을 때 컴퓨터 근처에 없었습니다. 질문에서 변경했습니다.
Rainer

;-) 나는 이미 그 것을 얻었다 :/usr/bin/VBoxManage startvm "Ubuntu" headless
klanomath

답변:


1

주문형 서비스를 작성하려면 Automator를 사용하여 서비스를 작성하고 다음을 입력하십시오.

/usr/bin/VBoxManage startvm "Ubuntu" headless &

스크린 샷에서와 동일한 설정을 사용하면됩니다.

다음은 서비스가 기본 아이콘을 제거하는 멋진 아이콘입니다.

상

정보 창에 복사하여 붙여 넣습니다.


로그인시 시작하려면 사용자 폴더 어딘가에 쉘 스크립트를 작성하고 ~ / Library / LaunchAgents에 plist를 작성하십시오.

터미널을 시작하고 다음을 입력하십시오.

mkdir ~/bin
cd ~/bin
touch vboxmanage.ubuntu.sh
chmod 755 vboxmanage.ubuntu.sh

텍스트 편집기 나 nano를 사용하여 스크립트를 편집하고 다음을 추가하십시오.

#! /bin/sh

/usr/bin/VBoxManage startvm "Ubuntu" headless

그런 다음 ~ / Library / LaunchAgents에 이름이 com.vboxmanage.ubuntu.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>com.vboxmanage.ubuntu.plist</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/YourUserName/bin/vboxmanage.ubuntu.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>LaunchOnlyOnce</key>
    <true/>
</dict>
</plist>

파일을 수정하십시오.

chmod 644 ~/Library/LaunchAgents/com.vboxmanage.ubuntu.plist

다음과 같이 시작하십시오.

launchctl load ~/Library/LaunchAgents/com.vboxmanage.ubuntu.plist

그 후 계정에 로그인 할 때마다 VM이 시작됩니다.


그것은 좋은 접근 방식처럼 들리지만 주문형으로 만 시작하고 싶습니다. 그래서 시작을 서비스에 넣고 주문형으로 시작할 수 있습니다. 그러나 더 직접적인 접근 방식이 없습니까?
Rainer

아이콘에 감사드립니다-그러나 나는 펭귄을 정말 좋아하므로 cubuntu.fr/cubuntu/+/mlpo-tux-ubuntu-21580.png의 것을 사용했습니다 . &에 관해서 : 나는 그것을 시도했지만, 나는 여전히 좋지 않은 아이콘 표시 줄에 회전 바퀴가 보입니다. 그러나이 명령이 즉시 리턴되므로 LaunchAgent로 정의 된 것을 시작할 수 있습니다.
Rainer

@Rainer 호스트 OS는 무엇입니까? 다른 서비스 구성으로 테스트를 실행했습니다. '&'를 추가하지 않고 오류 메시지가 표시되었지만 작동했습니다. '&'를 사용하면 오류없이 회전하는 바퀴가 없었습니다. 호스트 OS는 Mavericks입니다.
klanomath

요세미티-그런 차이가있는 것이 이상합니까?
Rainer

방금 알아 냈습니다 : 해결책은 /usr/bin/VBoxManage startvm "Ubuntu" --type headless성공적인 시작 후 어떤 반환 을 사용 하는 것입니다.
Rainer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.