No meu sistema macOS 10.13, eu tenho um script bash lançado como um LaunchDaemon (em / Library / LaunchDaemons) a cada minuto para verificar se uma máquina virtual Ubuntu está sendo executada no VMware Fusion. (No caso de falta de energia ou algo assim, eu preciso fazer login como eu para fazer a VM funcionar novamente.) Eu tenho o Postfix configurado para retransmitir para o meu provedor de e-mail. Meu script funciona bem quando executado em um processo de primeiro plano, como meu usuário regular ou como raiz, resultando em e-mail ou não me enviando como apropriado, mas quando executado pelo launchd, ele simplesmente não me enviará e-mails. Eu segui o /var/log/mail.log e não vejo nada além do usual daemon iniciar e sair das mensagens. Eu também verifiquei que o status de retorno do comando de email é 0, ecoando-o para um arquivo de log. Alguma sugestão como o que está acontecendo ou como depurar mais?
Meu plist em / Library / LaunchDaemons:
<?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.planetexpress.checkvmware</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/checkvmware</string>
</array>
<key>StartInterval</key>
<integer>60</integer>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Meu script:
#!/bin/bash
touch /tmp/checkvmware
checkline="/path/to/vm.vmx"
vmwareline=$(pgrep -if "$checkline")
if [[ -z $vmwareline ]]; then
/usr/bin/mail -s "Alert: Ubuntu on VMware isn't running" [email protected] <<< 'Are you even logged in, bro?'
mystatus=$?
echo "Status of mail command: $mystatus" >> /tmp/checkvmware.log
fi
fonte