0 votes

Processus de longue haleine défini comme Service

J'ai créé un service pour démarrer une Virtual Box sans tête, qui fonctionne bien - mais le service ne se termine pas tant que la machine virtuelle n'est pas à nouveau arrêtée (la roue qui tourne est dans la barre de menu (ou quel que soit le nom de la barre en haut à droite).

Cela est compréhensible, car la commande s'exécute jusqu'à ce que la VM soit à nouveau fermée.

J'ai essayé d'ajouter "&", d'utiliser "nohup", "exec", mais toujours, la "roue qui tourne" ne disparaît pas tant que la boîte virtuelle n'est pas refermée.

J'ai aussi essayé de créer une application Automator, mais c'est pareil.

Y a-t-il un moyen de mettre la commande en arrière-plan, de la détacher ou de faire disparaître au moins la roue qui tourne ?

EDIT :

Voici le 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>

Et une capture d'écran : script in Automator

1voto

klanomath Points 63400

Si vous voulez créer un service à la demande, créez un service avec Automator et entrez

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

avec les mêmes paramètres que dans votre capture d'écran et c'est tout.

Et voici une belle icône pour le service pour se débarrasser de celle par défaut :

icon

Coipy et collez-le dans la fenêtre d'information.


Si vous voulez le lancer à la connexion, créez un shell script quelque part dans votre dossier Utilisateur et un plist dans ~/Bibliothèque/LaunchAgents :

Démarrez le terminal et entrez :

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

Utilisez un éditeur de texte ou nano pour modifier le script et ajouter :

#! /bin/sh

/usr/bin/VBoxManage startvm "Ubuntu" headless

Ensuite, créez un fichier plist dans ~/Library/LaunchAgents avec le nom com.vboxmanage.ubuntu.plist et le contenu :

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

Modifiez le fichier :

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

et le lancer avec :

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

Ensuite, la VM sera lancée après chaque connexion à votre compte.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X