Сайт | Скачать | Видео | Wiki

Автор Тема: Представляю вашему вниманию скрипт bin-load.sh*)  (Прочитано 2334 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн myth

  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Автор темы
Здрассте)

Только недавно начал знакомство с PappyRus-A и на правах неофита представляю свой первый, написанный в этой системе, волшебный мега-скрипт :)  позволяющий подгружать бинарники из модулей /optional автоматически. Идея скрипта простая, в каталог /usr/local/bin кладётся ссылка на этот скрипт с именем бинарника, а при вызове подгружается pfs и бинарник запускается, после выполнения - выгружается.

Код: bin-load.sh
#!/bin/bash
# Загрузка бинарников в /usr/bin, если их там нет или их запуск из /usr/local/bin.

bin_name=$(echo $0| cut -d\/ -f5)
if [ ! -f "/usr/bin/$bin_name" ];
  then
# load pfs
    sudo -u live notify-send -i findnrun "  Загружается " "   $bin_name"
    sudo rm -f /usr/local/bin/$bin_name
    # ../pra/.. та директория в которой расположен PRA
    sudo pfsload -r /mnt/home/pra/optional/$bin_name.pfs
# start bin
    /usr/bin/$bin_name "$@"
# unload pfs
    sudo pfsunload $bin_name.pfs
    sudo rm -f /usr/local/bin/$bin_name
    sudo -u live notify-send -i media-flash "  Выгрузка" "   $bin_name"
    sudo ln -s /usr/local/bin/bin-load.sh /usr/local/bin/$bin_name
  else
    sudo -u live notify-send -i $bin_name "  Приложение " "   $bin_name"
    /usr/bin/$bin_name "$@"
  fi;
exit

Что бы заработало, нужен модуль с именем бинарника и одноимённая ссылка в /usr/local/bin. К примеру, выбираем разработка - поиск и создание модуля - tmux, пакуем в ../optional/tmux.pfs, скрипт и ссылку в /usr/local/bin:
Код
sudo ln -s /usr/local/bin/bin-load.sh /usr/local/bin/tmux

Ну и дальше обычный запуск из терминала(или какого-нибудь скрипта) - по комманде tmux, загружается модуль pfs и программка становится доступной, т.е. прозрачная загрузка модулей... теоретически :) ...из скриптов не пробовал... Зато большинство модулей приложений (с 80% модулей это работает, скрипт не универсальный, некоторые же программки запускаются из /opt, с ними этот фокус не проходит)) ... у меня большая часть приложений из modules перенесена в optional, понаделал на них ссылок и они работают, а PRA03Fat теперь из 60+ модулей грузится 19 без потери функционала, единственное, чтобы запускать из меню, нужно добавить из модуля pfs в /usr/share/application/файл.desktop и иконку /usr/share/icons. Вроде всё...

PS: Ну да, я не самый крутой кодер :[  понимаю, что скрипт далёк от совершества, может даже не оригинален, хотя до этой идеи я дошёл самостоятельно! )  В любом случае, может прокатит за антиоффтопик, мне бы хотелось сказать спасибо, всем кто разрабатывает и поддерживает PRA-linux... Операционка просто шикарна, компактна, удобна и  вообще вне конкуренции... типа спасибо) Ну и с юбилеем форум и всех его обитателей!

PPS: Ах да, пока ковырялся со скриптом, обнаружился небольшой баг с notify-send, лежащей в /usr/local/bin, у меня оно с каждым запуском создавало по копии dbus-daemon, xfconfd и ещё чего-то, вроде бы как все процессы маленькие, но когда их переваливает за пару десятков - система начнает заметно притормаживать, зато /isr/bin/notify-send данным глюком не страдает, оставил только её (/usr/local/bin/notify-send -> /usr/bin/notify-send*)
« Последнее редактирование: 10 Ноябрь 2018, 17:15:53 от myth »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
 Идея в принципе неплохая. Я тоже редко используемые модули держу в optional, подключая/отключая их при потребности.
Не многие знают или просто не понимают такой возможности, подгружая при запуске PRA кучу модулей, которыми пользуются раз в квартал.

 А как скрипт отработает ситуацию, когда приложением попользовались и оно больше не нужно. Т.е. как с вопросом отмонтирования.
Часто подключенный 'на горячую' модуль вываливает ошибку при попытке отключения. Помогает через sfs-get, там скрипт какой-то привязан - убивает запущенные процессы приложения.

Оффлайн myth

  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Автор темы
Он и не обрабатывает такие ситуации, просто верит, что приложение занято)) Вдруг там вторая копия запущена... а то можно было pkill -9 $bin_name забабахать перед pfsunload. Над выгрузкой надо ещё работать, это пре-бета версия скрипта, буду думать дальше) Посмотрел sfs-get, наверно она тоже самое делает, ещё не разобрался...

А, ок...
Тут нужно полное взаимодействие с пользователем, надо добавить в начало скрипта такую строчку: notify-send "Внимание!" "Когда приложение отработало и стало ненужным в памяти - удалите его через sfs-get" ... Анекдот же такой помните, про вирус и бедных вежливых афганских хаккеров))
« Последнее редактирование: 10 Ноябрь 2018, 16:40:08 от myth »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
 Когда-то писал на подобную тему для PuppyRus. Поковыряйте. Для PRA надо поменять пути. Ну и ещё может что-нибудь.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
  Вроде есть еще в ПРА(для просмотра-загрузки для /opional) :
/usr/local/bin/dmenu-sfs-get-opt
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
/usr/local/bin/dmenu-sfs-get-opt
Первый раз вижу!  :) 
Еще бы модули отключались после закрытия приложения. Или спрашивалось, что с ними делать. У меня в /optional действительно приложения на разок. Скриншот отредактировать (размер) или качнуть что-то с торрента и т.д.
« Последнее редактирование: 10 Ноябрь 2018, 20:11:27 от krasnyh »

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
Еще бы было можно отключать модули после закрытия приложения.
  Вроде можно ч/з sfs-get(Win+s), но отключать можно "не всё и не всегда"  (программа должна быть "не занята",  ... и может еще какие условия ...).
(пр.: тотже Палемун - нормально отключается.)
« Последнее редактирование: 10 Ноябрь 2018, 20:14:36 от knn »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
Вроде можно ч/з sfs-get(Win+s)
Еще бы модули отключались после закрытия приложения.
Чтобы сами отключались. :)
Про sfs-get я знаю. Я про удобства и лень. )

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
  Способы подключения модулей - интересная тема.

  Качать/подключать еще могут:
--gnumeric
--оффисы
--браузеры ( ??? "полтергейст"- прикручивал подключение модулей к Links2 - так он подключает под другими (какими-то своими) именами.

p.s. http://forum.puppyrus.org/index.php?topic=13419.msg143535#msg143535
« Последнее редактирование: 10 Ноябрь 2018, 20:50:25 от knn »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
У меня в /optional действительно приложения на разок.
:) у меня /optional - почти пустой, но наложеннием "патча" "линкуется" на корни каталогов со сборками (../32, .../64, ../ROLL - соответственно) ... и там соответствующие("разрядности") модули
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Представляю вашему вниманию скрипт bin-load.sh*)
« Ответ #10 : 12 Ноябрь 2018, 09:18:38 »
Не многие знают или просто не понимают такой возможности, подгружая при запуске PRA кучу модулей, которыми пользуются раз в квартал.
Еще бы модули отключались после закрытия приложения
Если модуль не запускает демонов (у нас это редкость) и Вы не собираете другие модули и не используете copy2ram - это никак не помешает
Единственное - каждый модуль на обслуживание своего слоя aufs есть 1,5 RAM
кроме того у нас есть скрипты defaultbrowser и т.п. Которые (браузеры точно) предложат загрузить модуль
В sfs-get - в отключалке есть убийство бинарников, которые не дают отключить
Иногда приходится перегрузить X
Модули можно выделить все или какие надо