Ich möchte beim Booten in crontab ein Script aufrufen das unter Mono ein Programm mit einem Parameter startet, der beim Aufruf im crontab mitgegeben wird. Vom Programm sollen mehrere Instanzen mit unterschiedlichen Parametern gestartet werden, wobei jede Instanz in einem benannten Fenster in einer bestimmten TMUX Session gestartet wird. Jedes Programm startet in einem eigenen Unterverzeichnis wo sich auch die dazugehörenden Daten und Add-Ons befinden.
Meine Zeilen im crontab sehen dann etwa so aus:
# tmux session mit dem Namen term und einem Bash Fenster starten.
# Die default-shell (/bin/bash) ist bereits in ~/.tmux.conf definiert.
@reboot sleep 10 && tmux new-session -d -s term -n bash
#
# Simulatoren im Abstand von mindestens 3 Sekunden starten
@reboot sleep 12 && ~/scripts/start_sim sim1
@reboot sleep 15 && ~/scripts/start_sim sim2
~/scripts/start_sim sieht auf die wesentlichen Teile reduziert wie folgt aus:
#!/bin/bash
#
simulator="$1"
cd "$HOME"/"$simulator"/bin
tmux new-window -d -t term -n "$simulator" 'mono Simulator.exe -sim=$simulator'
Was ich möchte ist, dass durch den Aufruf von ~/scripts/start_sim sim1 die letzte Zeile so aufgelöst wird, wie wenn ich sie manuell eingeben würde:
Bis auf den Teil -sim=$simulator funktioniert dies auch perfekt. Ich habe ohne Erfolg alles mögliche versucht, das richtig aufzulösen.
Das vollständige Script macht noch mehr. Es überwacht alle 30 Sekunden die Prozesse und startet den gestarteten Prozess neu, falls er abgeschmiert ist. Falls es jemand interessiert, dann ist das vollständige Script als Text-File im Anhang zu finden.