URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10264
[ Назад ]

Исходное сообщение
"Возможен предварительный запуск программы?"

Отправлено Hikolaich , 28-Мрт-19 11:58 
Доброго!
Допустим в скрипте работает цикл с проверкой, к примеру, строки из ps -ef и некоторой задержкой по sleep. В цикле используются grep, awk и др. Поясните, bash один раз грузит с диска проги используемые внутри цикла или при каждом повторе цикла? Если второе, то можно ли предварительно загрузить их в память, дабы не дёргать каждый раз винт и тем самым увеличить быстродействие? RAM диск не рассматриваем.
Спасибо.

Содержание

Сообщения в этом обсуждении
"Возможен предварительный запуск программы?"
Отправлено universite , 28-Мрт-19 13:41 
> Доброго!
> Допустим в скрипте работает цикл с проверкой, к примеру, строки из ps
> -ef и некоторой задержкой по sleep. В цикле используются grep, awk
> и др. Поясните, bash один раз грузит с диска проги используемые
> внутри цикла или при каждом повторе цикла? Если второе, то можно
> ли предварительно загрузить их в память, дабы не дёргать каждый раз
> винт и тем самым увеличить быстродействие? RAM диск не рассматриваем.
> Спасибо.

Это зависит от планировщика системы.
При сильном желании, bash скрипт можно скомпиллировать в исполнительный бинарник.


"Возможен предварительный запуск программы?"
Отправлено Andrey Mitrofanov , 28-Мрт-19 14:03 
> Доброго!
> Допустим в скрипте работает цикл с проверкой, к примеру, строки из ps
> -ef и некоторой задержкой по sleep. В цикле используются grep, awk
> и др. Поясните, bash один раз грузит с диска проги используемые
> внутри цикла или при каждом повторе цикла?

Да с диска. И нет, не совсем с диска.

Если все блоки, нужные для запуска бинарей при очередном запуске _ещё_ лежат в кеше ОС, то запуск будет практически как из RAM-диска.
Если "кеши вымылись" /сбросились, будет чтение бинарей с дискового устройства...

Создание процессов, пйапов, динамическая линковка с библиотеками, чтение/перечитывание прогами их конфигов (буде надобность в таковых обнаружится), что-то ещё может быть...  происходит  при каждом запуске.

...и результаты всего этого выбрасываются каждый раз, как конвейер с-под шела отработает.

>RAM диск не рассматриваем.

Прыгать в обручи?  Как высоко изволите?


"Возможен предварительный запуск программы?"
Отправлено Pahanivo , 28-Мрт-19 17:17 
Вообще подход конечно интересный .... ворочить скриптом тулзы, и при этом парится за быстродействие, хм, однако.
Если уж хочетсо парсить текст без костылей - есть перл, если судить по циклическому парсингу - можно натравить нужный stdout на конвейер ... тут требуется прояснить исходные условия задачи для выработки вектора пинка в нужную сторону.

"Возможен предварительный запуск программы?"
Отправлено Hikolaich , 28-Мрт-19 21:01 
Интерес чисто теоретический и возник во время написания скрипта для Orange PI H6 с OS от производителя, где драйверов практически нет, а потребовалось синхронизировать время со спутников. Использовать Gpsd ради редких перезагрузок посчитал не рациональным, пошёл таким путём GNSS > ds3231 > hwclock > systemtime. Цикл проверяет только поступление данных с GNSS, задержка 0.01 сек, далее парсер и разово отправка в ds3231. Супер точного времени мне не надо. Работой скрипта доволен и быстродействие вполне устраивает. Изучать и писать на перле, си, ради разовой потребности не вижу смысла, мне и баша достаточно от засыхания мозгов на пенсии.
Повторю, вопрос был чисто из любопытства. Спасибо ответившим.

"Возможен предварительный запуск программы?"
Отправлено And , 30-Мрт-19 15:09 
> писать на перле, си, ради разовой потребности не вижу смысла, мне
> и баша достаточно от засыхания мозгов на пенсии.
> Повторю, вопрос был чисто из любопытства. Спасибо ответившим.

Если нужна скорость, то совет глянуть в сторону средств Баша работы с переменными, вместо Sed, Awk и прочих утилит, на вызов которых надо вызывать +1 подкапотный экземпляр шелла и подобное. Скорость заметно отличается на глаз. Кроме того, обратить внимание, сколько экземпляров, чего именно и в каких случаях вызывается +n дополнительных раз.

В числе прочего, типа вот это использовать, например:
https://wiki.bash-hackers.org/syntax/pe
https://www.shellscript.sh/tips/pattern-substitution/
https://www.cyberciti.biz/tips/bash-shell-parameter-substitu...


"Возможен предварительный запуск программы?"
Отправлено Hikolaich , 30-Мрт-19 20:35 
> Если нужна скорость, ....
> https://www.cyberciti.biz/tips/bash-shell-parameter-substitu...

Спасибо, очень интересно, попробую разобраться и применить в будущих скриптах.