La forma habitual de ejecutar comandos a intervalos regulares es usar launchd
Una forma fácil es usar herramientas como Lingon X o LaunchControl para mantener el archivo de configuración del daemon / agente.
También puede hacer esto sin la herramienta creando el archivo con un editor plano. Para ejecutar como root necesitará un archivo .plist en / Library / LaunchDaemons. Esto requiere que proporcione el script y sus argumentos y se ejecutará como root.
En su caso, cree un script para ejecutar ambas actualizaciones
port -v selfupdate
port -v upgrade outdated
Apple da un ejemplo para ejecutar un script llamado happybirthday como abajo
<?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.example.happybirthday</string>
<key>ProgramArguments</key>
<array>
<string>happybirthday</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Day</key>
<integer>11</integer>
<key>Hour</key>
<integer>0</integer>
<key>Minute</key>
<integer>0</integer>
<key>Month</key>
<integer>7</integer>
<key>Weekday</key>
<integer>0</integer>
</dict>
</dict>
</plist>