Часто надо посмотреть какой из скриптов сейчас работает.
Странно, но из ‘/system script job’ невозможно получить имя скрипта. Тогда логично, что надо написать скрипт: Проверить работает ли сейчас каждый из существующих скриптов.
Странно_2, но готового скрипта не нашел. Пробую написать свой:
Код: Выделить всё
/log info "#### Test of '/system script & job' "
:local a [/system script find]
:local NameK
:local NameV
:local run
/log info "Scripts running $[:len [/system script job find]] of $[:len $a]"
:foreach k,v in=$a do={
:set NameK [/system script get $k name ]
:set NameV [/system script get $v name ]
:set run [:len [/system script job find script=$NameV ]]
# :set run [:len [/system script job find script=$NameK ]]
:log info ("K=$k V=$v Run=$run NameK=$NameK NameV=$NameV")
}
/log info "END"
Запрашиваем массив существующих скриптов ‘a’. По каждому элементу получаем элемент массива k=Key (ключ=№ п/п) и v=Value (значение=ID). По этим k и v ищем название скрипта. А потом проверяем, есть ли работающий скрипт с таким именем.
Запускаем, проверяем лог…. Произносим много непечатных слов!!!
Код: Выделить всё
May/02/2020 22:31:50 script,info #### Test of '/system script & job'
May/02/2020 22:31:50 script,info Scripts running 1 of 33
May/02/2020 22:31:50 script,info K=0 V=*1 Run=0 NameK=DDNS-NoIp NameV=DDNS-NoIp
<....тут грызли мыши....>
May/02/2020 22:31:51 script,info K=29 V=*49 Run=0 NameK=Test_job NameV=Test_job
May/02/2020 22:31:51 script,info K=30 V=*4B Run=0 NameK= NameV=Test_script_job
May/02/2020 22:31:51 script,info K=31 V=*50 Run=0 NameK=Test_script_job NameV=Test_scr
May/02/2020 22:31:51 script,info K=32 V=*52 Run=1 NameK= NameV=script1
May/02/2020 22:31:51 script,info END
Например, «K=31 V=*50 Run=0 NameK=Test_script_job NameV=Test_scr» - здесь NameV верно, а NameK взялось от предыдущего скрипта!
То есть две одинаковые строчки могут давать разный результат, хотя при отладке вы будете уверены, что все сделали правильно! Вы же проверили десятки элементов и все работало как надо!
:set run [:len [/system script job find script=$NameV ]] - так правильно!
:set run [:len [/system script job find script=$NameK ]] - так получим ошибку!!!!
Вопросы по теме:
1. Как еще можно ПРАВИЛЬНО определить какие скрипты сейчас запущены? И сколько CPU они загружают?
2. Почему поиск ‘/system script get $k name’ по Key и Value может давать разный результат?
3. Можно ли сопоставить ID скрипта в '/system script' и '/system script job' ?
4. Можно ли как то сопоставить список '/system script' и '/system script job' кроме как по имени?
RB951G-2HnD v6.46.5 (stable)