1 votos

Proceso de larga duración definido como Servicio

He creado un servicio para iniciar un Virtual Box sin cabeza, que funciona bien - pero el servicio no termina hasta que la máquina virtual se detiene de nuevo (la rueda giratoria está en la barra de menú (o como se llame la barra en la parte superior derecha).

Esto es comprensible, ya que el comando se ejecuta hasta que la VM se cierra de nuevo.

He probado a añadir "&", a utilizar "nohup", "exec", pero aun así, la "rueda giratoria" no desaparece hasta que se cierra de nuevo la caja virtual.

También he intentado crear una aplicación de automator, pero lo mismo.

¿Hay alguna forma de poner en segundo plano el mando, desprenderlo o hacer desaparecer al menos la rueda giratoria?

EDITAR:

Aquí está el 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>

Y una captura de pantalla: script in Automator

1voto

klanomath Puntos 19587

Si quieres crear un servicio bajo demanda crea un servicio con Automator e introduce

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

con la misma configuración que en tu captura de pantalla y ya está.

Y aquí hay un bonito icono para el servicio para deshacerse del que viene por defecto:

icon

Coipy y pegarlo en la ventana de información.


Si quieres iniciarlo al iniciar la sesión crea un shell script en algún lugar de tu carpeta de usuario y un plist en ~/Library/LaunchAgents:

Inicie el Terminal y entre:

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

Utiliza un editor de texto o nano para editar el script y añade:

#! /bin/sh

/usr/bin/VBoxManage startvm "Ubuntu" headless

A continuación, cree un archivo plist en ~/Library/LaunchAgents con el nombre com.vboxmanage.ubuntu.plist y el contenido:

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

Modificar el archivo:

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

y lanzarlo con:

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

Después, la máquina virtual se iniciará después de cada inicio de sesión en su cuenta

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X