¿Es posible detener un servicio mediante launchd si el servicio se inicia manualmente?

¿Es posible detener un servicio mediante launchd si el servicio se inicia manualmente?

Estoy usando launchd para iniciar mysql al arrancar, está funcionando bien. Puedo detener e iniciar el servicio usando los comandos 'launchctl unload' y 'launchctl load'. También puedo iniciar el servicio escribiendo el comando 'mysqld_safe' en la terminal. Pero, si detengo el servicio mediante 'launchctl stop' y luego lo inicio mediante el comando 'mysqld_safe', no puedo detener el servicio mediante 'launchctl stop'. es posible? ¿Qué estoy haciendo mal aquí?

Mi lista es:

<?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>mysql.service</string>
        <key>ProgramArguments</key>
        <array>
                <string>/path/to/mysql/bin/mysqld_safe</string>
                <string>--defaults-file=/path/to/mysql/my.cnf</string>
                <string>--port=3306</string>
                <string>--socket=/path/to/mysql/tmp/mysql.sock</string>
                <string>--datadir=/path/to/mysql/data</string>
                <string>--log-error=/path/to/mysql/data/mysqld.log</string>
                <string>--pid-file=/path/to/mysql/data/mysqld.pid</string>
       </array>
       <key>RunAtLoad</key>
       <true/>
       <key>KeepAlive</key>
       <false/>
       <key>UserName</key>
       <string>_mysql</string>
       <key>GroupName</key>
       <string>_mysql</string>
    <key>StandardOutPath</key>
    <string>/tmp/mysql_start.out</string>
    <key>StandardErrorPath</key>
    <string>/tmp/mysql_start.err</string>

</dict>
</plist>

El comando utilizado para iniciar mysql a través de la terminal es:

mysqld_safe --defaults-file=/path/to/mysql/my.cnf --port=3306 --socket=/path/to/mysql/tmp/mysql.sock --datadir=/path/to/mysql/data --pid-file=/path/to/mysql/data/mysqld.pid

Respuesta1

Este es el comportamiento previsto. La emisión launchctl stoppara un trabajo que no se ha cargado no funciona.

información relacionada