|
Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Помогите уменьшить bash скрипт |
|
Помогите уменьшить bash скрипт
|
Новый участник Сообщения: 20 |
Профиль | Отправить PM | Цитировать
Добрый день. Помогите уменьшить bash скрипт.
Задача скрипта: Мониторить процесс, в случае его отсутствия запускать скрипт и выполнять команду по запуску. Если процесс присутствует, то ничего не запускать. Программа запуска с параметрами выглядит так: /home/temp/programma /home/temp/sys01.txt 1. /home/temp/programma в единственном экземпляре 2. /home/temp/sys01.txt много текстовых файлов. различие только в цифрах имени файла. Пример: В процессах висит команда /home/temp/programma /home/temp/sys02.txt, скрипт запускается по крону и проверяет, если есть, то закончить работу не запуская команду /home/temp/programma /home/temp/sys02.txt. А также в тот же момент проверки всех процессов (которые перечислены в файле script.sh) отсутствует например запущенный процесс /home/temp/programma /home/temp/sys15.txt, то он запускается команду /home/temp/programma /home/temp/sys15.txt, для того чтобы процесс появился. ЗЫ. В какой-то момент, некоторые sysXX.txt могут быть удалены (ну то есть ненужны будут) из файла script.sh. (например sys43.txt, sys45.txt, sys18.txt, sys26.txt и их запускать ненужно) Что на данный момент есть. all.sh
#!/bin/bash NUM=`/bin/pidof -o $$ -o $PPID -o %PPID -x /home/temp/programma |pgrep -f sys01|wc -w` NUM=`/bin/pidof -o $$ -o $PPID -o %PPID -x /home/temp/programma |pgrep -f sys02|wc -w` тут и далее много таких строк NUM=`/bin/pidof -o $$ -o $PPID -o %PPID -x /home/temp/programma |pgrep -f sys50|wc -w` if [ $NUM -lt 0 ] then exit else /home/temp/script.sh //в этом скрипте перечислены команды запуска , чуть ниже его код fi NUM=`/bin/pidof -o $$ -o $PPID -o %PPID -x /home/temp/programma |pgrep -f sys01|wc -w` NUM=`/bin/pidof -o $$ -o $PPID -o %PPID -x /home/temp/programma |pgrep -f sys02|wc -w` тут и далее много таких строк NUM=`/bin/pidof -o $$ -o $PPID -o %PPID -x /home/temp/programma |pgrep -f sys50|wc -w` if [ $NUM -lt 0 ] then exit fi exit 0 # прекращаем выполнение скрипта script.sh
/home/temp/programma /home/temp/sys01.txt /home/temp/programma /home/temp/sys02.txt /home/temp/programma /home/temp/sys03.txt тут и далее меняются только цифры в имени файла /home/temp/programma /home/temp/sys50.txt уф... увы, я не могу уменьшить скрипт (незнаю как правильно), будьте добры, пожалуйста помогите его уменьшить переменными или как либо ещё. В данном варианте скрипта all.sh по крону, как я понимаю, запускаются все команды одновременно, что неправильно. |
|
Отправлено: 16:35, 30-10-2015 |
Новый участник Сообщения: 22
|
Профиль | Отправить PM | Цитировать #!/bin/bash PROG="/home/temp/programma" PROG_ARGS="/home/temp/programma /home/temp/sys01.txt /home/temp/programma /home/temp/sys02.txt /home/temp/programma /home/temp/sys03.txt тут и далее меняются только цифры в имени файла /home/temp/programma /home/temp/sys50.txt" IFS=$'\n' for ARG in $PROG_ARGS; do if ps ax -o command | grep -v grep | grep -q "$PROG $ARG"; then continue else $PROG $ARG fi done |
Отправлено: 14:41, 08-12-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Redhat/Fedora - Помогите написать скрипт на Bash | VORONUK | Общий по Linux | 6 | 18-09-2013 19:56 | |
HDD - [решено] Помогите уменьшить обьем ЖД удалением плохих БЛОКОВ | docentdocent | Накопители (SSD, HDD, USB Flash) | 6 | 23-10-2012 09:25 | |
BASH скрипт | DX-D8 | Программирование в *nix | 2 | 21-01-2009 19:18 | |
Прочее - BASH | zelo | Общий по Linux | 3 | 04-02-2008 10:19 | |
bash scripting | Flick | Программирование в *nix | 5 | 06-06-2007 18:37 |
|