xT 10.05.2011 21:57
Скрипты на bash — Троббер для длительных операций
Набрасывая очередной мелкий баш-скрипт на коленке озадачился тем, чтобы у относительно длительных операций отображался индикатор действия\выполнения, он же троббер.
Придумывать ничего сам не стал и обратился к гуглу. Собственно, вот что нашлось:
- получаем PID процесса, для которого нужно показывать троббер
- назначаем время задержки символа на экране
- назначаем строку с символами, которые будут меняться поочередно
- пока выполняется процесс делаем:
-
- удаляем первый символ из строки и сохраняем результат во временную переменную
- выводим первый символ строки в консоль (с форматированием)
- затем осуществляется ротация символов в строке, где первый символ перемещается в конец строки
Более подробно можно прочитать пройдя по ссылке в заголовке.
Как применять в скрипте:
1 |
|
Как результат:


+ 1 -
Красота ;-)
Спасибо :)
В тему будет сказано, есть замечательный алиас к alert для отображения всплывающего сообщения в области уведомлений NotifyOSD по окончании работы какого-либо скрипта: http://aonick.livejournal.com/12401.html
В тему будет сказано, есть замечательный алиас к alert для отображения всплывающего сообщения в области уведомлений NotifyOSD по окончании работы какого-либо скрипта: http://aonick.livejournal.com/12401.html
место жуткого пайпа в while проще использовать
while kill -0 $pid; do
while kill -0 $pid; do
Хорошо, конечно, но с многопоточным софтом не справляется. Я как-то писал скрипт для мониторинга emerge(когда на компе идёт компиляция, а я за буком сижу и по ssh вижу, какой пакет и сколько компилится). Так вот до сих пор не знаю, как решить проблему с тем, что в ps два процесса emerge(один качает исходники, второй компилит уже скачанное).
Разграничивать по cmdline, выдирая данные из /proc//cmdline например?
Выдрать данные не проблема и без проц. Как скрипт узнает, из какого PID'а брать данные, если есть два процесса emerge одновременно и у каждого свой PID?
Ну или не emerge. Что угодно. Любая многопоточная программа. Банальный скрипт какой-нибудь на перле, скачивающий в несколько потоков что-нибудь с инета. Будет 10 процессов perl scriptname.pl и у каждого свой pid.
Ну или не emerge. Что угодно. Любая многопоточная программа. Банальный скрипт какой-нибудь на перле, скачивающий в несколько потоков что-нибудь с инета. Будет 10 процессов perl scriptname.pl и у каждого свой pid.