NEWS
Auf die Schnelle alle Skripte de-/aktivieren?
-
Habe hier inzwischen eine Menge Skriptleichen und bin dabei etwas aufzuräumen...
Nun würde ich gerne alle (laufenden) Skripte auf einmal daktivieren und später wieder aktivieren (und das ohne alle Leichen dabei aufzuwecken).
Gibt es da einen einfachen Weg?
In der Shell evtl. die Skriptdatei/Ordner umbenennen? -
@padrino
Es gibt einen Weg, aber der, den ich kenne, ist nicht einfach und schon garnicht "auf die Schnelle". Du müsstest alles States (per Skript) unter javascript durchforsten, dir das Ergebnis in einem Userstate speichern. Und dann die gespeicherten States aktivieren/deaktivieren.https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#scripts-activity
There is a possibility to enabled and disable scripts via states. For every script the state will be created with name javascript.INSTANCE.scriptEnabled.SCRIPT_NAME. Scripts can be activated and deactivated by controlling of this state with ack=false.
-
@padrino würde da nicht einfach den Script Adapter "Stoppen" funktionieren
-
@ticaki
Ja, das wäre wohl ein Weg, muss ich mir mal überlegen.
Hatte gehofft, es ginge schneller...
Hatte irgendwie im Kopf, dass es eine skripte Datei gäbe, aber irgendwie finde ich weder die Datei noch Infos drüber, die dann mal schnell kurz umbennannt...@johgre
Nun, mir geht es darum, dass ich gerne mal den RAM Verbrauch ganz ohne Skripte austesten wollen würde und dafür muss er ja laufen. -
@padrino sagte in Auf die Schnelle alle Skripte de-/aktivieren?:
Nun, mir geht es darum, dass ich gerne mal den RAM Verbrauch ganz ohne Skripte austesten wollen würde und dafür muss er ja laufen.
was genau willst du wirklich?
wenn du die javascript Instanz anhältst läuft kein Skript mehr.
Du kannst trotzdem die Skripte editieren.Wofür muss der javascript Adapter laufen??
-
-
@homoran sagte in Auf die Schnelle alle Skripte de-/aktivieren?:
wenn du die javascript Instanz anhältst läuft kein Skript mehr
Er möchte scriptleichen finden, indem er seine scripte stoppt um zu sehen ob noch irgend etwas läuft, anhand vom Ram verbrauch
-
@homoran sagte in Auf die Schnelle alle Skripte de-/aktivieren?:
@padrino sagte in Auf die Schnelle alle Skripte de-/aktivieren?:
was genau willst du wirklich?Genau, was ich schrieb.
Ich möchte herausfinden, wieviel der Adapter braucht, wenn kein Skript läuft.
Im Moment braucht er zwischen 100 und 170 MB, meist so 150.
Will sehen, wieviel da die Skripte ausmachen um mal zu schauen, ob ich da noch optimieren kann, evtl. weniger Skripte (also Skripte zusammenfassen), weniger Code (Skript optimieren)... -
@padrino sagte in Auf die Schnelle alle Skripte de-/aktivieren?:
wieviel der Adapter braucht,
aah!
ja dann ergibt das Sinn.ich dachte den RAM Verbrauch überhaupt von ioBroker
Skripte brauchen eigentlich nicht so viel. lefiglich beim Skriptstart, wenn das Skript neu kompiliert wird
-
@homoran sagte in Auf die Schnelle alle Skripte de-/aktivieren?:
Skripte brauchen eigentlich nicht so viel.
ich lieg bei über 300MB
schalte ich instanz.1 ein (nur ein paar nicht laufende testscripte) verbraucht diese ebenfalls mehr als 200MB
-
-
@crunchip sagte in Auf die Schnelle alle Skripte de-/aktivieren?:
ich lieg bei über 300MB
das top ich:
-
@bahnuhr dafür hab ich doppelt so viele Eingänge
-
Wollte wissen ob meine Idee geht
Musste noch durch entfernen von // scharf schalten. Zum Aktivieren der Skript, den im Log stehenden endlose string ins Skript kopieren.
let tids = $('state[state.id=javascript.0.scriptEnabled.*]') // hier die daten aus dem Log rein schreiben let datenAusLog = [ganz viele Skript, noch viel mehr skripte] let datenAusLog if (datenAusLog === undefined) { let logids = [] for (let a = 0; a<tids.length;a++){ if (getState(tids[a]).val) { logids.push(tids[a]) } } log('ab hier') log(JSON.stringify(logids)) log('bis hier') for (let a = 0; a<logids.length;a++){ log(logids[a] + ' false') //setState(logids[a], false) } } else { for (let a = 0; a<datenAusLog.length;a++){ log(datenAusLog[a] + true) //setState(logids[a], true) } }
-
@ticaki Im Link oben
https://forum.iobroker.net/topic/66435/auf-die-schnelle-alle-skripte-de-aktivieren/6
steht das Script mit dem man das machen kann.
Deine Logik (Script) würde sich selbst ausschalten und mitten im Prozess stoppen, je nachdem wo das Script eingeordnet wurde und welchen Namen es hat. -
@mcu
Das ist nicht richtig. Das Skript läuft durch und anschließend werden die Skripte deaktiviert. setState() läuft nicht synchron, bzw. das was setState() aufruft läuft async zum Skript. Deshalb funktioniert setState() getState() nicht ohne "pause"EDIT: Und falls einen für den einmal gebrauch die Warnmeldung stört, dann halt globale Variable: scriptname nehmen split('.') die ersten beiden verwerfen, join('.') und ein Indexof machen
11:09:37.815 info javascript.0 (1693) script.js.Test.Skript_2: start 11:09:37.816 info javascript.0 (1693) script.js.Test.Skript_2: stopScript() call 11:09:37.817 info javascript.0 (1693) script.js.Test.Skript_2: gestoppt
log('start') log('stopScript() call') stopScript() log('gestoppt')
-
Gibt es denn wirklich kein Verzeichnis "auf Platte", das man mal eben umbenennen und damit für den Adapter unauffindbar machen könnte?
Sonst ist doch bei Linux immer alles so "detailiert"... -
@padrino
Afaik stehen nicht auf der Platte sondern in der db. -
@crunchip sagte in Auf die Schnelle alle Skripte de-/aktivieren?:
@homoran sagte in Auf die Schnelle alle Skripte de-/aktivieren?:
Skripte brauchen eigentlich nicht so viel.
ich lieg bei über 300MB
schalte ich instanz.1 ein (nur ein paar nicht laufende testscripte) verbraucht diese ebenfalls mehr als 200MB
was macht ihr bitte schön??? ich hab ca. 30 Skripte, da sind ein paar Brummer dabei und gerade mal 150mb...