Скрипт для подключения SFS и запуска программ

Автор: bicyclist56
Опубликовано: 4377 дней назад (2 мая 2012)
Редактировалось: 5 раз — последний 26 июня 2012
+1
Голосов: 1
У меня работает с новым initrd.gz, который позволяет автоподключение до 32 SFS, находящихся в папке, указанной в параметре загрузчика sfsdir=...
Вот он с комментариями:
Код PHP:
#!/bin/bash

#Пример скрипта для подключения SFS и запуска программ. Можно назначать кнопкам запуска в
#дополнительной панели XFCE (альтернативное меню с расширенными возможностями),
#делать ярлыки запуска на раб.столе и т.п. У меня все такие скрипты расположены в /root/MyApps/Start/

# имя файла SFS, без расширения:
SFS="Kino-1.3.4-Lucid_528"
# Имя файла DESKTOP в /usr/share/applications без расширения, нужно открыть в текст.редакторе
#соответствующий файл, имя будет показано в заголовке окна редактора:
DFNAME="Kino"
# исполняемый файл программы, читаем в строке Exec=...
CMD="/usr/bin/kino"
# главный процесс, который можно вычислить с помощью, например, lxtask:
SERVICE="kino"
# полное имя SFS, если он находится в папке /mnt/home/SFS_START/ - эта папка указана в menu.lst
#загрузчика, параметр sfsdir=../SFS_START (рядом с сист.папкой):
SFS0="/mnt/home/SFS_START/"$SFS.sfs
# полное имя файла DESKTOP:
DF="/usr/share/applications/"$DFNAME".desktop"
# полное имя SFS, если он находится в папке /mnt/home/SFS/ - здесь находятся остальные SFS,
#подключаемые вручную по мере надобности:
SFS1="/mnt/home/SFS/"$SFS.sfs
# проверка наличия процесса в памяти (запущена ли программа):
if ps -r | pgrep $SERVICE > /dev/null
# сообщение, в заголовке окна имя процесса:
   then Xdialog --title "$SERVICE" --msgbox "Программа работает!\n
Завершите работу, если нужно."  6 0; exit;
fi
# если файл DESKTOP имеется (программа установлена, или автоматически подключен SFS с ней):
if [ -e $DF ] && [ -e $SFS0 ]
# запустить исполняемый файл программы:
  then $CMD; exit;
fi
# если SFS в папке с поключаемыми вручную:
if [ -e $SFS1 ]
# подключить/отключить SFS
  then /usr/sbin/mnt_sfs $SFS1; exit;
fi
# если ни одно из вышеприведенных условий не выполнено, то сообщение, в заголовке окна исп.файл программы:
Xdialog --title "$CMD" --msgbox "Программа не найдена. Проверьте наличие $SFS.sfs\n в /mnt/home/SFS/ или /mnt/home/SFS_START/"  6 0;
exit;

# иконку для кнопки запуска нужно выбирать такую, которая появляется только при подключенном SFS,
#тогда сразу будет видно, в каком состоянии находится SFS
Кстати, я не очень разбираюсь в скриптописании, но упорство и труд... сами знаетеsmileЧитайте, к примеру, http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html

Однако, в результате экспериментов выяснилось, что для сохранения возможности подключения других SFS вручную количество автоподключенных не должно превышать 26. Если больше, вылезает окно с ошибкой, при попытке подключить вручную.

И приведу еще раз скрипт, без комментариев, если кто пожелает использовать как образец:
Код PHP:
#!/bin/bash

SFS="Kino-1.3.4-Lucid_528"
DFNAME="Kino"
CMD="/usr/bin/kino"
SERVICE="kino"

DF="/usr/share/applications/"$DFNAME".desktop"
SFS0="/mnt/home/SFS_START/"$SFS.sfs
SFS1="/mnt/home/SFS/"$SFS.sfs

if ps -r | pgrep $SERVICE > /dev/null
   then Xdialog --title "$SERVICE" --msgbox "Программа работает!\n
Завершите работу, если нужно."  6 0; exit;
fi
if [ -e $DF ] && [ -e $SFS0 ]
  then $CMD; exit;
fi
if [ ! -e $DF ] && [ -e $SFS0 ]
  then /usr/sbin/mnt_sfs $SFS0; exit;
fi
if [ -e $SFS1 ]
  then /usr/sbin/mnt_sfs $SFS1; exit;
fi
Xdialog --title "$CMD" --msgbox "Программа не найдена. Проверьте наличие $SFS.sfs\n в /mnt/home/SFS/ или /mnt/home/SFS_START/"  6 0;
exit;
Увеличение количества автоподключаемых SFS | Исправление скрипта
Теги: sfs, ivanna