The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Результат команды bash из шел != из скрипта."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Результат команды bash из шел != из скрипта."  –1 +/
Сообщение от DiJey email(??) on 25-Мрт-16, 16:45 
Результат выполнения команды из командной строки розница с результатом из скрипта, кто нибудь может  объяснить причину?  (шел один и тот же /bin/bash)

Скрипт:
-bash-3.00# cat ./audit_send.sh
#!/bin/bash
ps -ef | grep audit_send.sh | grep -v grep | wc -l
if (( $(ps -ef | grep audit_send.sh | grep -v grep | wc -l) > 1 )); then echo exit 1; exit 1; else echo not_exit; fi

Результат команды из командной строки:
-bash-3.00# if (( $(ps -ef | grep audit_send.sh | grep -v grep | wc -l) > 1 )); then echo exit 1; exit 1; else echo not_exit; fi
not_exit

Результат скрипта:
-bash-3.00# ./audit_send.sh
       1
exit 1
-bash-3.00#

Ответить | Правка | Cообщить модератору

Оглавление

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


1. "Результат команды bash из шел != из скрипта."  +1 +/
Сообщение от Аноним (??) on 25-Мрт-16, 18:29 
>[оверквотинг удален]
> Результат команды из командной строки:
> -bash-3.00# if (( $(ps -ef | grep audit_send.sh | grep -v grep
> | wc -l) > 1 )); then echo exit 1; exit
> 1; else echo not_exit; fi
> not_exit
> Результат скрипта:
> -bash-3.00# ./audit_send.sh
>        1
> exit 1
> -bash-3.00#

А ничего, что сама суть этого куска -- проверить, или скрипт с именем audit_send.sh запущен?
Соответственно, если запускать эту команду не этим скриптом, а напрямую, то скрипт запущен не будет.

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

2. "Результат команды bash из шел != из скрипта."  +/
Сообщение от SayKhan (ok) on 27-Мрт-16, 13:12 
>[оверквотинг удален]
> Результат команды из командной строки:
> -bash-3.00# if (( $(ps -ef | grep audit_send.sh | grep -v grep
> | wc -l) > 1 )); then echo exit 1; exit
> 1; else echo not_exit; fi
> not_exit
> Результат скрипта:
> -bash-3.00# ./audit_send.sh
>        1
> exit 1
> -bash-3.00#

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

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

3. "Результат команды bash из шел != из скрипта."  +/
Сообщение от DiJey email(??) on 28-Мрт-16, 08:55 
>>[оверквотинг удален]
> В скрипте у тебя выполняются две команды, а из командной строки ты
> запускаешь всего одну.

-bash-3.00# cat audit_send.sh
#!/bin/bash
#ps -ef | grep audit_send.sh | grep -v grep | wc -l
if (( `ps -ef | grep audit_send.sh | grep -v grep | wc -l` > 1 )); then echo exit 1; exit 1; else echo not_exit; fi

-bash-3.00# ./audit_send.sh
exit 1

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

4. "Результат команды bash из шел != из скрипта."  +/
Сообщение от DiJey email(??) on 28-Мрт-16, 09:04 
еще интересное наблюдение (что за фигня шелл то один использую):

-bash-3.00# env | grep sh
SHELL=/usr/bin/bash
-bash-3.00# cat audit_send.sh
#!/usr/bin/bash
#ps -ef | grep audit_send.sh | grep -v grep | wc -l
if (( `ps -ef | grep audit_send.sh | grep -v grep | wc -l` > 1 )); then echo exit 1; exit 1; else echo not_exit; fi

-bash-3.00# ./audit_send.sh
exit 1
-bash-3.00# cat audit_send.sh
#ps -ef | grep audit_send.sh | grep -v grep | wc -l
if (( `ps -ef | grep audit_send.sh | grep -v grep | wc -l` > 1 )); then echo exit 1; exit 1; else echo not_exit; fi

-bash-3.00# ./audit_send.sh
not_exit
-bash-3.00# env
TERM=xterm
SHELL=/usr/bin/bash
SSH_CLIENT=192.168.37.92 49765 22
SSH_TTY=/dev/pts/5
USER=root
MAIL=/var/mail//root
PATH=/usr/sbin:/usr/bin
PWD=/root
LANG=C
TZ=<GMT+3>+3
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=192.168.22.22 49765 10.193.0.22 22
_=/usr/bin/env
-bash-3.00#


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

5. "Результат команды bash из шел != из скрипта."  +/
Сообщение от vodz (ok) on 28-Мрт-16, 14:51 
> Результат выполнения команды из командной строки розница с результатом из скрипта, кто
> нибудь может  объяснить причину?  (шел один и тот же /bin/bash)

Вы проверяете наличие выполнения скрипта из него же, при вызове из командной строки вы не не запускаете этот скрипт.

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

6. "Результат команды bash из шел != из скрипта."  +/
Сообщение от DiJey email(ok) on 29-Мрт-16, 12:06 
> Вы проверяете наличие выполнения скрипта из него же, при вызове из командной
> строки вы не не запускаете этот скрипт.

Когда я запускаю из командной строки он уже запущен, т.е. не имеет значения из командной строки запускаю или нет. Рабочий вариант скрипта создал.
Теперь возникает вопрос какого ... при проверке из скрипта ps -ом он показывает что их аж 2 шт. а при запуске из крона аж 3. Изменение скрипта с корректировкой внутри скрипта количества audit_send.sh не меняет количество предзапущенных скриптов при проверке командой: ps -ef | grep audit_send.sh | grep -v grep | wc -l


Скорректировал скрипт нижеследующим образом:
#!/bin/bash
#date
if  [ ! -e ./pid ]; then mkdir ./pid; fi
if  [ ! -f ./pid/audit_send.pid ]; then echo $$ > ./pid/audit_send.pid; fi
#nm=`ps -ef | grep audit_send.sh | grep -v grep | wc | awk {'print $1'}`
#echo $nm
#ps -ef | grep audit_send.sh | grep -v grep

if [ `ps -ef | grep "$0" | grep -v grep | wc -l` -gt 3 ]; then exit 1; fi

while [ -f ./pid/audit_send.pid ]
do
sleep 1
done &

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

7. "Результат команды bash из шел != из скрипта."  +/
Сообщение от DiJey email(ok) on 29-Мрт-16, 12:25 
> Теперь возникает вопрос какого ... при проверке из скрипта ps -ом он
> показывает что их аж 2 шт. а при запуске из крона
> аж 3. Изменение скрипта с корректировкой внутри скрипта количества audit_send.sh не
> меняет количество предзапущенных скриптов при проверке командой: ps -ef | grep
> audit_send.sh | grep -v grep | wc -l

точнее не такой командой: ps -ef | grep audit_send.sh | grep -v grep | wc -l
она может 1 показать, я из за этого не мог понять какое то время какое условие выставлять нужно в if, а хорошо показывает связка что audit_send.sh 2шт если  запускать в скрипте:

nm=`ps -ef | grep audit_send.sh | grep -v grep | wc | awk {'print $1'}`
echo $nm

Я стал так проверять вспомнив, что линуксовые конструкции типа:
for i in "parametr1 oarametr2 parametretc"; do ; done
в Соляре не работают.

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

8. "Результат команды bash из шел != из скрипта."  +/
Сообщение от Andrey Mitrofanov on 29-Мрт-16, 14:28 
> показывает что их аж 2 шт. а при запуске из крона
> аж 3.

А в военное время значение Пи может достигать 4 !

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

9. "Результат команды bash из шел != из скрипта."  +/
Сообщение от fantom (??) on 19-Апр-16, 09:45 
>> показывает что их аж 2 шт. а при запуске из крона
>> аж 3.
> А в военное время значение Пи может достигать 4 !

ПРОГРАММИСТЫ! ПОМИТЕ! Комп выполняет в точности то, что вы НАПИСАЛИ, а не то, чего вам от него ХОТЕЛОСЬ!

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

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

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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