Quale sarebbe il miglior modo "standard" per creare uno script launchd
per eseguire python notebook
?
Vorrei che il servizio iniziasse all'accesso e che fosse facile riavviare il server da un terminale.
Alla fine ho creato il seguente file .plist. Viene caricato automaticamente all'avvio e avvierà un blocco jupiter
e lo manterrà attivo.
<?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>KeepAlive</key>
<true/>
<key>Label</key>
<string>cern.chernals.ipython</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/jupyter-notebook</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/Users/chernals/Library/LaunchAgents/jupyter-notebook.stderr</string>
<key>StandardOutPath</key>
<string>/Users/chernals/Library/LaunchAgents/jupyter-notebook.stdout</string>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
Sono un principiante di macOS e ho trovato la risposta accettata molto utile. L'ho modificato per non avviare un browser all'avvio e anche per iniziare nella directory ~ / jupyter dove ripongo la maggior parte dei miei taccuini.
Per riferimento futuro, il modo per farlo iniziare è inserire i dati xml in un file nella directory ~ / Library / LaunchAgents, ad es. ~ / Library / LaunchAgents / org.jupyter.notebook.plist.
Il plist che ho trovato è stato il seguente.
<?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>KeepAlive</key>
<true/>
<key>Label</key>
<string>org.jupyter.notebook</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/jupyter-notebook</string>
<string>--no-browser</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/Users/rickard/Library/LaunchAgents/org.jupyter.notebook.stderr</string>
<key>StandardOutPath</key>
<string>/Users/rickard/Library/LaunchAgents/org.jupyter.notebook.stdout</string>
<key>KeepAlive</key>
<true/>
<key>WorkingDirectory</key>
<string>/Users/rickard/jupyter</string>
</dict>
</plist>
Non ho trovato un modo per non dover codificare la directory home dell'utente lì - l'opzione EnableGlobbing funziona solo in ProgramArgument, e non c'è espansione di variabile di ambiente, quindi per ora deve essere lì .