Ik heb een RPI waar meerdere Python scripts op draaien die MQTT data verwerken. Ieder script print de resultaten naar het scherm zodat ik kan monitoren of ze goed draaien. Daarom start ik ieder script op vanuit een separate terminal zodat de resultaten van de scripts niet door elkaar staan. Ik wil dit opstarten automatiseren maar heb nog geen goede manier gevonden om dit resultaat bij opstart te verkrijgen. Als ik vanuit Python meerdere scripts opstart worden de resultaten door elkaar geprint. Ik heb geprobeerd de scripts vanuit een shellscript op te starten door ze te koppelen met & maar ik wil ze vanuit verschillende terminals hebben draaien en dit lukt me niet.
Vraag
Beste antwoord (via Poecillia op 26-01-2020 21:35)
Daarvoor is screen gemaakt.
Met de zoekterm:
https://superuser.com/a/454914
Met de zoekterm:
Kom je hier:start screen with script
https://superuser.com/a/454914
Sinds de 2 dagen regel reageer ik hier niet meer
Alle reacties
Daarvoor is screen gemaakt.
Met de zoekterm:
https://superuser.com/a/454914
Met de zoekterm:
Kom je hier:start screen with script
https://superuser.com/a/454914
Sinds de 2 dagen regel reageer ik hier niet meer
Dat is inderdaad precies de tool die ik nodig heb. Het lukt me om de programma's in meerdere screens vanuit een script op te starten en als ik die open kan ik de output bekijken. Maar daarvoor moet ik het nummer van het screen opzoeken, een terminal openen en screen -r [screennr] invoeren. Ik wil dat het script alle geopende screens direct laat zien. Daar lijkt geen commando voor te zijn. Daarnaast schijnen er shortcuts te zijn met de ctrl toets, die bij mij niet werken (zal wel door VNC viewer komen).
Als je alleen de output wil zien, en die staat in een logfile: multitail
Als je in de screen handleiding naar 'split' en 'layout save' zoekt, moet je ook komen waar je wil zijn.
Persoonlijk heb ik een statusline (keyword 'hardstatus') die gewoon laat zien welk script in welke terminal draait.
Als je in de screen handleiding naar 'split' en 'layout save' zoekt, moet je ook komen waar je wil zijn.
Persoonlijk heb ik een statusline (keyword 'hardstatus') die gewoon laat zien welk script in welke terminal draait.
hout-nerd - www.hetmooistehout.nl of www.houtenschalen.nl
Waarom laat je je scripts niet naar een gezamenlijke logfile schrijven met een prefix het betreffende script:Poecillia schreef op zondag 26 januari 2020 @ 10:56:
Ik wil dat het script alle geopende screens direct laat zien.
code:
1
2
3
4
| [script1] foo [script2] bar [script2] foo [script1] bar |
Eventueel zelfs met een timestamp toevoeging voor volgordelijkheid mocht dat mis gaan.
Sinds de 2 dagen regel reageer ik hier niet meer
Tmux is een spirituele opvolger van screen en laat veel meer toe. Je kan er makkelijk een scriptje in schrijven om je terminal in verschillende vensters te splitsen, commando's uit te voeren, keyboard input te synchronizeren, etc. Op het internet vind je veel voorbeelden.
Een eigen bash functie dat ik heb gemaak, splitst een terminal in 3 delen: 1 voor htop, 1 voor de temperatuur en 1 voor de schijfruimte. De functie heb ik onderaan in mijn ~/.bash_profile gestopt, zodat ik het in de terminal met "diag" kan oproepen.
~/.bash_profile:
Geeft het volgende:
Een eigen bash functie dat ik heb gemaak, splitst een terminal in 3 delen: 1 voor htop, 1 voor de temperatuur en 1 voor de schijfruimte. De functie heb ik onderaan in mijn ~/.bash_profile gestopt, zodat ik het in de terminal met "diag" kan oproepen.
~/.bash_profile:
Bash:
1
2
3
4
5
6
7
8
9
10
11
| diag() { TMUX_SESSION=diag tmux new-session -s $TMUX_SESSION -d tmux send-keys -t $TMUX_SESSION "htop" C-m tmux split-window -v -t $TMUX_SESSION "watch -n 1 sensors" tmux split-window -h -t $TMUX_SESSION "watch -n 1 df -h" tmux select-pane -t 0 tmux attach -t $TMUX_SESSION } export -f diag |
Geeft het volgende:

Ik gebruik de wrapper byobu om screens te managen.
Misschien het onderzoeken waard.
Misschien het onderzoeken waard.
If money talks then I'm a mime
If time is money then I'm out of time
Pagina: 1