Skip to content

Conversation

@yankee42
Copy link
Contributor

In der update.sh gibt es ein sleep 15. Warum? Es ist ein Faktor der Updates langsamer macht. Gerade wenn man Änderungen "eben schnell" testen will ist das nervig, dass das Update so lange dauert.

Das ganze kam aus commit 90fd667, in dem die commit-message "schalte lademodus auf stop bei update start" steht. Damals wurde ein Befehl eingeführt, der den Lademodus auf stop stellt und dann 15 Sekunden wartet. Ich nehme schwer an um darauf zu warten, dass der neue Lademodus aktiv wird. Das hat sich wohl durch das updateinprogress-Flag erledigt. Der Lademodus wird zwar noch auf "stop" gestellt, die Regelschleife macht damit aber ohnehin nichts mehr, denn sie bricht wegen dem updateinprogress-Flag sofort ab.

Es erscheint mir aber trotzdem schlau ein Update nicht in eine laufende Regelschleife reinzuwerfen. Wenn dem laufenden Programm der Quelltext ausgetauscht wird und potentiell auch Dateien überschrieben werden mit denen die Regelschleife arbeitet oder deren Berechtigungen geändert werden könnte das Fehler nach sich ziehen.

Dieser PR ändert das Verhalten so, dass nur gewartet wird, wenn die Regelschleife gerade läuft und dann auch nur so lange bis die Regelschleife endet. Maximal jedoch weiterhin 15 Sekunden, damit eine hängende Regelschleife nicht den ganzen Prozess lahmlegt. Man könnte überlegen ob 15 Sekunden ausreichen, da manche Leute (zum Beispiel die Geschichte mit den Huawei-WR) sehr langsame Regelschleifen haben und die 15 Sekunden dann vielleicht nicht ausreichen. Andererseits haben die 15 Sekunden bis jetzt scheinbar ihren Dienst getan...

@yankee42 yankee42 force-pushed the wait-regel-instead-sleep branch from cce8775 to 886b254 Compare August 15, 2022 06:02
@hhoefling
Copy link
Contributor

Ich versteht die funktion nicht.
Funktioniert aber sowieso nicht, denn bei mir rennt die Zeile immer durch. (no Wait)
...trotz regel-Normalbetrieb.

Regelschleife ist auch eingentlich falsch.
es wird ja für jeden "durchlauf" ein eigener Process von Cron gestart.

@hhoefling
Copy link
Contributor

Ok, Groschen gefallen.
Regel.sh lauft bei mir ca. 4-5 Sekunden
Wenn ich die Laufzeit treffe -> 15 Sekunden, wenn ich in die Pause treffe ~0, also im im Durchschnitt 7.5 statt 10 Sekunden !!!!!

@hhoefling
Copy link
Contributor

hhoefling commented Aug 15, 2022

Die 15 Sekunden in Update haben schon ihren Sinn.
Egal wie lang die Laufzeit von Regel.sh ist.
Innerhalb von 15 Sekunden würde mit sicherheit einmal die regel.sh angestartet.
Also wird der Ladestop nach 15 Sekunden durchgeführt sein.
Danach erst wird mit "UpdateinProcgress" zu gemacht.

Wenn du die Zeit sparen willst.,
Test den Lademodus

  • Wenn schon Stop dann spar dir MQTT + Wait

@hhoefling
Copy link
Contributor

hhoefling commented Aug 15, 2022

Aber.....
Der MQTT STOP wird per auch an andere MQTT "Zuhöhrer" weitergereicht.
Diese Infos fehlen dann,
Also nur die Pause sparen wenn "Stop"->"Stop" gepublisched wurde.

@yankee42
Copy link
Contributor Author

Wenn ich die Laufzeit treffe -> 15 Sekunden

Nein. Sollte zumindest nicht sein. Es sollte nur so lange laufen wie die regel.sh braucht. Wenn du sagst, dass die regel.sh bei dir ca. 5 Sekunden läuft würde das bedeuten, dass wenn du die Zeile zur ersten Sekunde von vollen 10 Sekunden startest (also zum Beispiel um 12:37:20), dann würde es zu einem sleep von 5 Sekunden kommen. Wenn du die Zeile um 12:37:23 startest, dann nur ein Sleep von 2 Sekunden (vorrausgesetzt die regel.sh ist um 12:37:25 fertig).

wenn ich in die Pause treffe ~0

Richtig. Wenn du die Zeile zwischen 12:37:25 und 12:37:30 startest, dann gibt es kein sleep.

Die 15 Sekunden in Update haben schon ihren Sinn.
Egal wie lang die Laufzeit von Regel.sh ist.
Innerhalb von 15 Sekunden würde mit sichherheit einemal die regel.sh angestartet.
Also wird dier Ladestop nach 15 Sekunden durchgeführt sein.
Danach erst wird mit "UpdateinProcgress" zu genmacht.

Nein. Die update.sh setzt erst das updateinprogress-Flag:

openWB/runs/update.sh

Lines 9 to 10 in 15833c7

echo 1 > /var/www/html/openWB/ramdisk/updateinprogress
echo 1 > /var/www/html/openWB/ramdisk/bootinprogress

Dann erst kommt das sleep 15:

sleep 15

In der regel.sh wird direkt zu Beginn das updateinprogress-Flag abgefragt und wenn es gesetzt wird, wird sofort abgebrochen:

openWB/regel.sh

Lines 32 to 37 in 3ff5750

if [ -e ramdisk/updateinprogress ] && [ -e ramdisk/bootinprogress ]; then
updateinprogress=$(<ramdisk/updateinprogress)
bootinprogress=$(<ramdisk/bootinprogress)
if (( updateinprogress == "1" )); then
openwbDebugLog "MAIN" 0 "Update in progress"
exit 0

Es mag in seltenen Fällen vorkommen, dass die regel.sh schon an dem Flag-Check vorbei ist und daher das "Stop" noch verarbeitet, das dürfte aber eher die Ausnahme sein und schon garnicht die Intention. In den meisten Fällen wird das setzen vom Lademodus keinen Effekt auf das haben, was vor dem Update passiert.

@hhoefling
Copy link
Contributor

Aber wenn du gerade mal dran bist....

Cron5 und Cronnighly sowie andere update.sh instancen muss du auch noch testet........

@hhoefling
Copy link
Contributor

hhoefling commented Aug 15, 2022

Berücksichtige....
Update.sh startet man auch um aus einer festgefahrenen Nighly wieder zur Stable zurückzukehren.
Also kann auch ein unüblicher Status vorliegen.
Statt lange auf hängendes zu warten ist eventuell ein Reboot-before-Update Sinnvoll.
Also ein autmatisches restarten des Updates nach Reboot würde auch Sinn machen

@yankee42
Copy link
Contributor Author

Cron5 und Cronnighly sowie andere update.sh instancen muss du auch noch testet........

Gute Idee. Baue ich noch ein.

@hhoefling
Copy link
Contributor

hhoefling commented Aug 15, 2022

root@pi67:/var/www/html/openWB# time ./x.sh
real    0m0,051s
user    0m0,025s
sys     0m0,039s
root@pi67:/var/www/html/openWB# time ./x.sh
real    0m15,011s
user    0m0,014s
sys     0m0,020s


(x.sh enthält deine Zeile)

@hhoefling
Copy link
Contributor

hhoefling commented Aug 15, 2022

Nein. Die update.sh setzt erst das updateinprogress-Flag:

Das sollte wohl besser dahinter erst gesetzt werden

PS:
Ich vergesse immer das meine openWB inwischen schon etwas von der offiiziellen abweicht.
Bei mir ist die Reihenfolge anders

@hhoefling
Copy link
Contributor

Ich persönlich habe es schon häufiger geschaft ein runde des Cron5min auszulassen.
Dadurch gibt's lücken in den Statistiken
Hatte schon die Idee den Abbruch der cron5Min, von cron5min selbst mit flag in Ramdisk, festzuhalten.
Dann am Ende von Update.sh ein leicht verspätestes cron5Min selbst nachzustarten

@yankee42 yankee42 force-pushed the wait-regel-instead-sleep branch 2 times, most recently from 0cf35ad to d1a2c0a Compare August 15, 2022 08:34
@yankee42
Copy link
Contributor Author

Cron5 und Cronnighly sowie andere update.sh instancen muss du auch noch testet........

Ist jetzt drin.

Statt lange auf hängendes zu warten ist eventuell ein Reboot-before-Update Sinnvoll.

Du meinst ein richtiger Systemneustart? Es hätte immerhin den Charme, dass es einen Fall weniger gäbe. Also es gäbe nicht mehr den Fall "atreboot nur so" und "atreboot aus Systemneustart". Ein Testfall weniger. Dafür dauert es aber wieder etwas länger. Und bis jetzt läuft es ja gut. Ist aber nicht im Scope von diesem PR.

root@pi67:/var/www/html/openWB# time ./x.sh
real    0m15,011s
[..]

(x.sh enthält deine Zeile)

Nach 15 Sekunden ist der timeout. Dann bist du wohl da rein gelaufen. Vielleicht weil du wieder irgendwelche Sachen anders hast auf deinem System, so dass da ein anderes Script matcht oder so? Was gibt dir denn nur das pgrep in dem Fall für ein Prozess?

@hhoefling
Copy link
Contributor

Zu aller erst muss mal der $ am ende weg,
Mit dem $ wartet es bei mir niemals da das Kommando ja noch mit der Ausgabeumleitung weitergeht ($ heist ja Zeilenende)

also nocmal das ganze aktualisierte Script x.sh

#!/bin/bash
ps -alx | grep regel.sh
pgrep -f '/var/www/html/openWB/regel.sh' | timeout 15 xargs -n1 -I'{}' tail -f --pid="{}" /dev/null

und seine Wirkung

root@pi67:/var/www/html/openWB# time ./x.sh
0     0 32610 32608  20   0   4368   532 pipe_w S+   pts/0      0:00 grep regel.sh

real    0m0,127s
user    0m0,057s
sys     0m0,081s
root@pi67:/var/www/html/openWB# time ./x.sh
4  1000 32636 32616  20   0   1888   384 wait   Ss   ?          0:00 /bin/sh -c sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 32637 32614  20   0   1888   372 wait   Ss   ?          0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 32645 32615  20   0   1888   416 wait   Ss   ?          0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 32646 32618  20   0   1888   372 wait   Ss   ?          0:00 /bin/sh -c sleep 10 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 32647 32617  20   0   1888   404 wait   Ss   ?          0:00 /bin/sh -c sleep 20 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
0     0 32664 32662  20   0   4368   564 pipe_w S+   pts/0      0:00 grep regel.sh

real    0m15,097s
user    0m0,073s
sys     0m0,073s

@yankee42
Copy link
Contributor Author

Zu aller erst muss mal der $ am ende weg, Mit dem $ wartet es bei mir niemals da das Kommando ja noch mit der Ausgabeumleitung weitergeht ($ heist ja Zeilenende)

Nein. Genau nicht:

$ ps x | grep regel.sh
 3315 ?        Ss     0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1 
 3316 ?        Ss     0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1 
 8496 ?        S      0:00 /bin/bash /var/www/html/openWB/regel.sh

Es soll in dem Beispiel nur auf den 8496 matchen, aber nicht auf die 3315 und die 3316. Das sleep da oben stört ja nicht, da muss man nicht drauf arbeiten. Ohne das $ kommst du natürlich in den timeout von 15s rein, denn der wartet dann auf Prozesse auf die er nicht warten soll.

@hhoefling
Copy link
Contributor

hhoefling commented Aug 15, 2022

Ok, aber mit "$" hab ich trotz minutenlangem probieren keinen "Treffer" also immer (~0)
Ich müsste aber aber mit sicherheit mal die 4 Sekunden runtime erwischen.

PS:
Nehme das zurück. Ich hatte wohl doch immer die "lücken" getroffen.
nun kommen auch 2,3 Sekunden wartezeit vor.

@yankee42
Copy link
Contributor Author

Ok, aber mit "$" hab ich trotz minutenlangem probieren keinen "Treffer" also immer (~0) Ich müsste aber aber mit sicherheit mal die 4 Sekunden runtime erwischen.

Was gibt denn folgendes bei dir aus?:

sleep $(( 11 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh

Unter der Annahme, dass du den Regelintervall auf "schnell" stehen hast, müsstest du damit auf jeden Fall die laufende Regelschleife erwischen.

@hhoefling
Copy link
Contributor

Hm....
nach 11 sekunden Nix (ausser dem grep)

root@pi67:/var/www/html/openWB# sleep $(( 11 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
29044 pts/0    S+     0:00 grep regel.sh
root@pi67:/var/www/html/openWB#

aber Regel.sh läuft definitve (tail -f ramdisk/openWB.log läuft mit )

@hhoefling
Copy link
Contributor

Auf der orignal-openWB (hostname openwb statt pi67)

Linux openWB 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Aug 10 16:27:25 2022 from 192.168.208.56
pi@openWB:~$ sleep $(( 11 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
16534 ?        Ss     0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
16535 ?        Ss     0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
20453 pts/2    S+     0:00 grep regel.sh
pi@openWB:~$ sleep $(( 11 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
16534 ?        Ss     0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
21425 pts/2    S+     0:00 grep regel.sh
pi@openWB:~$ sleep $(( 11 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
22451 pts/2    S+     0:00 grep regel.sh
pi@openWB:~$ sleep $(( 11 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
22477 ?        Ss     0:00 /bin/sh -c sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
22478 ?        Ss     0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
22479 ?        Ss     0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
22483 ?        Ss     0:00 /bin/sh -c sleep 20 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
22488 ?        Ss     0:00 /bin/sh -c sleep 10 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
23463 pts/2    S+     0:00 grep regel.sh
pi@openWB:~$ sleep $(( 11 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
22477 ?        Ss     0:00 /bin/sh -c sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
22478 ?        Ss     0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
22479 ?        Ss     0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
22483 ?        Ss     0:00 /bin/sh -c sleep 20 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
24438 ?        R      0:00 /bin/bash /var/www/html/openWB/regel.sh
24453 pts/2    S+     0:00 grep regel.sh
pi@openWB:~$

Hier läuft regel.sh 7-8 Sekunden (1.9.244) und da ist die warscheinlichkeit regel.sh beim arbeiten anzutreffen deutlich höher.

@hhoefling
Copy link
Contributor

hhoefling commented Aug 15, 2022

Nimm 12 statt 11 dann klappt die Zeile zuverlässiger
also
sleep $(( 12 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
trifft regel.sh fast immer beim Arbeiten an.
Mit 11 war die abfrage wohl immer einen hauch zu früh.

pi@openWB:~$ ./statregel.sh
| Seconds | count |
| ---: | --- |
| 7 | 699 |
| 8 | 313 |
| 9 | 25 |
pi@openWB:~$ sleep $(( 12 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
 1850 ?        S      0:00 /bin/bash /var/www/html/openWB/regel.sh
 1985 pts/2    S+     0:00 grep regel.sh
32187 ?        Ss     0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
32192 ?        Ss     0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
32195 ?        Ss     0:00 /bin/sh -c sleep 20 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
32196 ?        Ss     0:00 /bin/sh -c sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
pi@openWB:~$ sleep $(( 12 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
 2829 ?        S      0:00 /bin/bash /var/www/html/openWB/regel.sh
 2962 pts/2    S+     0:00 grep regel.sh
32187 ?        Ss     0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
32192 ?        Ss     0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
32196 ?        Ss     0:00 /bin/sh -c sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
pi@openWB:~$ sleep $(( 12 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
 5757 ?        Ss     0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
 5762 ?        Ss     0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
 5772 ?        Ss     0:00 /bin/sh -c sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
 8696 ?        S      0:00 /bin/bash /var/www/html/openWB/regel.sh
 8831 pts/2    R+     0:00 grep regel.sh

@yankee42
Copy link
Contributor Author

yankee42 commented Aug 15, 2022

Nimm 12 statt 11 dann klappt die Zeile zuverlässiger also sleep ((12−( date +%S | cut -c2 ) )); ps x | grep regel.sh trifft regel.sh fast immer beim Arbeiten an. Mit 11 war die abfrage wohl immer einen hauch zu früh.

OK, prima. Mir gingen schon die Ideen aus ;-).

Dann müsste auch sleep ((12−( date +%S | cut -c2 ) )); time ./x.sh nahezu garantiert zu einem sleep führen. Deine Regelschleife ist offenbar wirklich schnell (startet aber spät). Um so mehr bringt diese Änderung...

@hhoefling
Copy link
Contributor

hhoefling commented Aug 15, 2022

Leider nicht sollange das ps nur mit x statt alx aufgerufen wird.
Erst mit "ps -alx" wird eine laufendes regel.sh sichtbar
(es ist hat nur zu bruchteilen der Realzeit auf "R" , meist auf "S")

also erst
sleep $(( 12 - $( date +%S | cut -c2 ) )); ps -alx | grep regel.sh
erwischt die "schnellere pi67" ( meist im "S" state)

....wobei verstehen tu ich den effect nicht.
auch das "x" sollte reichen.

@hhoefling
Copy link
Contributor

Ich versteh's nicht.

Hier 8 mal gestartet 4* mit "alx" 4* mit "x"

root@pi67:/var/www/html/openWB# sleep $(( 12 - $( date +%S | cut -c2 ) )); ps -alx | grep regel.sh
4  1000 21739 21719  20   0   1888   364 wait   Ss   ?          0:00 /bin/sh -c sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 21748 21720  20   0   1888   408 wait   Ss   ?          0:00 /bin/sh -c sleep 20 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 21749 21717  20   0   1888   396 wait   Ss   ?          0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 21751 21721  20   0   1888   384 wait   Ss   ?          0:00 /bin/sh -c sleep 10 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 21756 21718  20   0   1888   376 wait   Ss   ?          0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
0  1000 23139 21751  20   0   8076  6112 wait   S    ?          0:00 /bin/bash /var/www/html/openWB/regel.sh
0     0 23265 31794  20   0   4368   540 -      R+   pts/0      0:00 grep regel.sh
root@pi67:/var/www/html/openWB#
root@pi67:/var/www/html/openWB# sleep $(( 12 - $( date +%S | cut -c2 ) )); ps -alx | grep regel.sh
4  1000 27588 27568  20   0   1888   388 wait   Ss   ?          0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 27591 27567  20   0   1888   400 wait   Ss   ?          0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 27595 27569  20   0   1888   372 wait   Ss   ?          0:00 /bin/sh -c sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 27597 27570  20   0   1888   376 wait   Ss   ?          0:00 /bin/sh -c sleep 20 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 27599 27571  20   0   1888   384 wait   Ss   ?          0:00 /bin/sh -c sleep 10 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 27600 27572  20   0   1888   400 wait   Ss   ?          0:00 /bin/sh -c /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
0  1000 27603 27600  20   0   6224  4052 -      R    ?          0:00 /bin/bash /var/www/html/openWB/regel.sh
0     0 27617 31794  20   0   4368   568 -      R+   pts/0      0:00 grep regel.sh
root@pi67:/var/www/html/openWB#
root@pi67:/var/www/html/openWB#
root@pi67:/var/www/html/openWB# sleep $(( 12 - $( date +%S | cut -c2 ) )); ps -alx | grep regel.sh
4  1000 27588 27568  20   0   1888   388 wait   Ss   ?          0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 27591 27567  20   0   1888   400 wait   Ss   ?          0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 27595 27569  20   0   1888   372 wait   Ss   ?          0:00 /bin/sh -c sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 27597 27570  20   0   1888   376 wait   Ss   ?          0:00 /bin/sh -c sleep 20 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000 27599 27571  20   0   1888   384 wait   Ss   ?          0:00 /bin/sh -c sleep 10 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
0  1000 28494 27599  20   0   7560  5468 -      R    ?          0:00 /bin/bash /var/www/html/openWB/regel.sh
0     0 28507 31794  20   0   4368   548 pipe_w S+   pts/0      0:00 grep regel.sh
root@pi67:/var/www/html/openWB#
root@pi67:/var/www/html/openWB# sleep $(( 12 - $( date +%S | cut -c2 ) )); ps -alx | grep regel.sh
4  1000   501   478  20   0   1888   392 wait   Ss   ?          0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000   506   481  20   0   1888   392 wait   Ss   ?          0:00 /bin/sh -c sleep 20 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000   507   480  20   0   1888   404 wait   Ss   ?          0:00 /bin/sh -c sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000   512   479  20   0   1888   376 wait   Ss   ?          0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
4  1000   513   482  20   0   1888   376 wait   Ss   ?          0:00 /bin/sh -c sleep 10 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
0  1000  1464   513  20   0   8076  6116 wait   S    ?          0:00 /bin/bash /var/www/html/openWB/regel.sh
0     0  1590 31794  20   0   4368   556 pipe_w S+   pts/0      0:00 grep regel.sh
root@pi67:/var/www/html/openWB# sleep $(( 12 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
 2517 pts/0    S+     0:00 grep regel.sh
root@pi67:/var/www/html/openWB# sleep $(( 12 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
 3387 pts/0    S+     0:00 grep regel.sh
root@pi67:/var/www/html/openWB# sleep $(( 12 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
 4296 pts/0    S+     0:00 grep regel.sh
root@pi67:/var/www/html/openWB# sleep $(( 12 - $( date +%S | cut -c2 ) )); ps x | grep regel.sh
 5191 pts/0    S+     0:00 grep regel.sh

@yankee42
Copy link
Contributor Author

Ich versteh's nicht.

Hier 8 mal gestartet 4* mit "alx" 4* mit "x"

An dem -l wird es nicht liegen da geht es nur um das Ausgabeformat. Eventuell wird dann -ax gebraucht. Das habe ich nicht genau recherchiert. Sollte aber meine ich kein Problem sein.

@hhoefling
Copy link
Contributor

Es liegt am User.

also root mit "x" kommte das regel.sh von pi nicht mit raus.
da brauch's das l
von pi aus reicht das "x" um regel.sh von pi zu sehen.

also mit eingestreutem sudo -u pi

root@pi67:/var/www/html/openWB#  sleep $(( 12 - $( date +%S | cut -c2 ) )); sudo -u pi ps x | grep regel.sh
28389 ?        Ss     0:00 /bin/sh -c sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
28395 ?        Ss     0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
28396 ?        Ss     0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
28399 ?        Ss     0:00 /bin/sh -c sleep 10 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
28403 ?        Ss     0:00 /bin/sh -c sleep 20 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
28404 ?        Ss     0:00 /bin/sh -c /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
28406 ?        S      0:00 /bin/bash /var/www/html/openWB/regel.sh
root@pi67:/var/www/html/openWB#  sleep $(( 12 - $( date +%S | cut -c2 ) )); sudo -u pi ps x | grep regel.sh
28389 ?        Ss     0:00 /bin/sh -c sleep 30 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
28395 ?        Ss     0:00 /bin/sh -c sleep 40 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
28396 ?        Ss     0:00 /bin/sh -c sleep 50 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
28399 ?        Ss     0:00 /bin/sh -c sleep 10 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
28403 ?        Ss     0:00 /bin/sh -c sleep 20 && /var/www/html/openWB/regel.sh >> /var/log/openWB.log 2>&1
29303 ?        S      0:00 /bin/bash /var/www/html/openWB/regel.sh

Oh man, was man sich mit dem "nicht allles als root machen" so alles einfängt....

@yankee42
Copy link
Contributor Author

Oh man, was man sich mit dem "nicht allles als root machen" so alles einfängt....

Oh man, was mit sich alles damit einfängt, dass du alles als root machst.

@hhoefling
Copy link
Contributor

Alte gewohnheit :-)

@hhoefling
Copy link
Contributor

hhoefling commented Aug 15, 2022

Die Quintessenze unseres Dialoges sollte aber sein.

Das Script MUSS als pi laufen und sollte die Arbeit verweigern wenn es von solchen Trotteln wie ich mal als root aufgerufen wird.

oder das Script wird "root"-Fest gemacht (mit sudo's und ps -alx etc)

@yankee42 yankee42 force-pushed the wait-regel-instead-sleep branch from d1a2c0a to dd84c69 Compare August 16, 2022 05:47
@yankee42 yankee42 force-pushed the wait-regel-instead-sleep branch from dd84c69 to 4292c29 Compare September 16, 2022 05:46
@yankee42 yankee42 force-pushed the wait-regel-instead-sleep branch from 4292c29 to bae9ef7 Compare September 26, 2022 07:52
@yankee42
Copy link
Contributor Author

Nochmal auf den aktuellen master rebased. Das Thema ist immernoch aktuell. Ich habe die Konversation nochmal reviewed, aber nichts gefunden was noch offen wäre, was einem merge entgegenstehen würde. Einziger "offener" Kommentar wäre:

Die Quintessenze unseres Dialoges sollte aber sein.

Das Script MUSS als pi laufen und sollte die Arbeit verweigern wenn es von solchen Trotteln wie ich mal als root aufgerufen wird.

Das erscheint mir zwar durchaus sinnvoll, wäre aber eine Änderung am Verhalten des Scripts. Um den Scope dieses PR übersichtlich zu halten würde ich das als "follow-up" später sehen.

@DetMoerk
Copy link
Contributor

DetMoerk commented Oct 3, 2022

Nochmal auf den aktuellen master rebased. Das Thema ist immernoch aktuell. Ich habe die Konversation nochmal reviewed, aber nichts gefunden was noch offen wäre, was einem merge entgegenstehen würde. Einziger "offener" Kommentar wäre:

Die Quintessenze unseres Dialoges sollte aber sein.
Das Script MUSS als pi laufen und sollte die Arbeit verweigern wenn es von solchen Trotteln wie ich mal als root aufgerufen wird.

Das erscheint mir zwar durchaus sinnvoll, wäre aber eine Änderung am Verhalten des Scripts. Um den Scope dieses PR übersichtlich zu halten würde ich das als "follow-up" später sehen.

z.B. so sicherstellen:

if [ "$EUID" -eq 0 ]
        then echo "Please run as user pi not as root"
         exit
fi

@benderl benderl merged commit cfcae9f into snaptec:master Oct 5, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants