Converter o cronjob em launchctl plist

0

Eu deveria converter este cronjob em um plit launchctl.

Isso é possível?

0 8-18 * * 1-5 /usr/bin/curl -s --data "par1=a&par2=b&press=OK" http://mydomain.com/file.php /dev/null
    
por Lotus 05.04.2012 / 08:30

1 resposta

3

Basicamente, você pode salvar uma lista de propriedades como ~/Libary/LaunchAgents/com.superuser.408777.plist e carregá-la com launchctl load ~/Libary/LaunchAgents/com.superuser.408777.plist ou efetuando logout e voltando.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.superuser.408777</string>
    <key>ProgramArguments</key>
    <array>
        <string>curl</string>
        <string>--data</string>
        <string>par1=a&par2=b&press=OK</string>
        <string>http://mydomain.com/file.php</string>
    </array>
<!--    <key>Program</key>
    <string>/absolute/path/to/script</string> -->
    <key>StartCalendarInterval</key>
    <dict>
        <key>Weekday</key>
        <integer>1</integer>
        <key>Hour</key>
        <integer>8</integer>
    </dict>
    <dict>
        <key>Weekday</key>
        <integer>1</integer>
        <key>Day</key>
        <integer>9</integer>
    </dict>
<!--    <key>StartInterval</key>
    <integer>3600</integer> --> this would just run the program arguments every hour
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

Tanto quanto eu sei, não é possível especificar intervalos de datas como as horas 8 a 18 e os dias 1 a 5, além de listar cada combinação individualmente. Você poderia executar um script externo a cada hora e sair dependendo da data.

weekday=$(date +%w)
hour=$(date +%H)
[[ $weekday -le 0 || $weekday -ge 6 || $hour -le 7 || $hour -ge 19 ]] && exit
curl -s --data "par1=a&par2=b&press=OK" http://mydomain.com/file.php /dev/null
    
por 05.04.2012 / 17:30