Genmon plugin

Модератор: Модераторы разделов

1000Mhz
Сообщения: 70
ОС: GuixSD, когда-нибудь

Genmon plugin

Сообщение 1000Mhz »

Чот я не понимаю... с простеньким тестовым скриптом все Ок, но если в него добавить запуск подпроцесса (который может отрабатывать довольно долго), то все, даже окно конфига виснет. Как можно победить и почему это вообще происходит, интересно было бы знать.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21007
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Genmon plugin

Сообщение Bizdelnick »

Посмотрел. Тормозит столько, сколько нужно, чтобы скрипт отработал. Вряд ли можно победить.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
1000Mhz
Сообщения: 70
ОС: GuixSD, когда-нибудь

Re: Genmon plugin

Сообщение 1000Mhz »

А жаль. В таком виде он не особо и нужен.
А что, если скажем переписать скрипт на Perl - там же можно обойтись без дочерних процессов?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21007
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Genmon plugin

Сообщение Bizdelnick »

А причём тут дочерние процессы? Время работы скрипта имеет значение, а не наличие или отсутствие дочерних процессов.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
1000Mhz
Сообщения: 70
ОС: GuixSD, когда-нибудь

Re: Genmon plugin

Сообщение 1000Mhz »

Надо будет поэкспериментировать в терминале, чтобы стало понятнее :)
Спасибо сказали:
1000Mhz
Сообщения: 70
ОС: GuixSD, когда-нибудь

Re: Genmon plugin

Сообщение 1000Mhz »

Но вот такой вариант:

Код: Выделить всё

echo 42
sp() {
    sleep 5
    echo End
    exit
}
(sp &) &
exit

в терминале отрабатывает корректно - выход после "42", без ожидания завершения функции. А genmon за каким-то фигом ждет. Почему?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21007
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Genmon plugin

Сообщение Bizdelnick »

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
1000Mhz
Сообщения: 70
ОС: GuixSD, когда-нибудь

Re: Genmon plugin

Сообщение 1000Mhz »

Спасибо. Там же чуть выше: "/* Wait for child completion */", вопрос можно считать закрытым. Хотя в логику разрабов я все равно не въезжаю.

UPD
Как вариант genmon`ом можно просто читать файл, а писать туда из другого процесса.
Спасибо сказали:
1000Mhz
Сообщения: 70
ОС: GuixSD, когда-нибудь

Re: Genmon plugin

Сообщение 1000Mhz »

Дело в том, что мне нужны были часы. Но без минутной стрелки)) Для этого и понадобился genmon-plugin.
Данные часы показывают только "XX:00+" и "XX:30+", только кратное получасу время. Быдлокод конечно жуткий, я за последнее время разучился писать на bash.

Код: Выделить всё

#!/bin/sh
out=~/.genmon-time
cel="??"
genmon_refresh() {
    xfce4-panel --plugin-event=genmon-5:refresh:bool:true
}
wtrite_time() {
        if ((60 - $(date +%-M) > 30))  # first half of hour?
        then echo "<txt> $(date +%H):00+</txt><tool>$(date +%a,\ %d)  $cel</tool>" > $out
        else echo "<txt> $(date +%H):30+</txt><tool>$(date +%a,\ %d)  $cel</tool>" > $out
        fi
}
get_temp() {
# some code
}
get_temp &>/dev/null
sleep 4
wtrite_time && genmon_refresh
while true
do
    m=$(date +%-M)
    k=$(($m % 30))
    delta=$((30 - $m))
    if (($k != 0))  # not XX:00, not XX:30
    then
        if (($delta < 0))  # "14:35" -> -5
        then delta=$((30 + $delta))  # -> 25
        fi
        sleep $(($delta * 60))
        wtrite_time && genmon_refresh
    else
        wtrite_time && genmon_refresh
        sleep $((30 * 60))
    fi
    get_temp &>/dev/null
done


Сам плагин: команда 'cat ~/.genmon-time' : 2000.

Справка по сабжу: http://goodies.xfce.org/projects/panel-plu...4-genmon-plugin
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21007
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Genmon plugin

Сообщение Bizdelnick »

Ужас какой.

Код: Выделить всё

#!/bin/sh
m=$(date +%-M)
m=$((m / 30 * 30))
date "+<txt> %H:$m+</txt><tool>%a, %d  ??</tool>"

Вызов скрипта запихать непосредственно в genmon.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
1000Mhz
Сообщения: 70
ОС: GuixSD, когда-нибудь

Re: Genmon plugin

Сообщение 1000Mhz »

Знаю, что ужас))

Вызов скрипта запихать непосредственно в genmon.

Никак не пойдет - нужна синхронизация с реальным временем (с моментами час:00 минут, час:30 минут), а не с периодом обновления плагина. Т. е. он используется даже не по назначению, а только для вывода текста на панель.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21007
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Genmon plugin

Сообщение Bizdelnick »

1000Mhz писал(а):
01.02.2018 20:21
нужна синхронизация с реальным временем, а не с периодом обновления плагина

Не понял. Чем время не реальное, и как Вы хотите синхронизироваться, если не с периодичностью обновления плагина?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
1000Mhz
Сообщения: 70
ОС: GuixSD, когда-нибудь

Re: Genmon plugin

Сообщение 1000Mhz »

Плагин обновляется командой из скрипта, не зря ссылку на документацию дал. Сам период обновления плагина не используется, можно выставить хоть 5 часов ;)
Спасибо сказали:
1000Mhz
Сообщения: 70
ОС: GuixSD, когда-нибудь

Re: Genmon plugin

Сообщение 1000Mhz »

Т. е. плагин получает команду refresh только в начале часа и в середине, точно_в_это_время. А так да, сам вывод 'date' можно конечно переместить и в плагин, но в сущности это ничего не изменит. Извращенская хотелка, реализованная соответствующими методами :laugh:
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21007
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Genmon plugin

Сообщение Bizdelnick »

1000Mhz писал(а):
01.02.2018 20:30
Сам период обновления плагина не используется, можно выставить хоть 5 часов

А смысл? Ну если очень хотите — пропишите в crontab команду обновления.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
1000Mhz
Сообщения: 70
ОС: GuixSD, когда-нибудь

Re: Genmon plugin

Сообщение 1000Mhz »

Bizdelnick писал(а):
01.02.2018 20:40
А смысл? Ну если очень хотите — пропишите в crontab команду обновления.

А я забыл про crontab :) Вариант, если можно можно выставить интервал в 30 минут.
Спасибо сказали: