The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Возможен предварительный запуск программы?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

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

Оглавление

Сообщения [Сортировка по времени | RSS]


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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

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

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

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

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Возможен предварительный запуск программы?"  +/
Сообщение от Pahanivo (ok), 28-Мрт-19, 17:17 
Вообще подход конечно интересный .... ворочить скриптом тулзы, и при этом парится за быстродействие, хм, однако.
Если уж хочетсо парсить текст без костылей - есть перл, если судить по циклическому парсингу - можно натравить нужный stdout на конвейер ... тут требуется прояснить исходные условия задачи для выработки вектора пинка в нужную сторону.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

5. "Возможен предварительный запуск программы?"  +/
Сообщение от 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...

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
MIRhosting
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру