- Результат команды bash из шел != из скрипта., Аноним, 18:29 , 25-Мрт-16 (1) +1
>[оверквотинг удален] > Результат команды из командной строки: > -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 запущен? Соответственно, если запускать эту команду не этим скриптом, а напрямую, то скрипт запущен не будет.
- Результат команды bash из шел != из скрипта., SayKhan, 13:12 , 27-Мрт-16 (2)
>[оверквотинг удален] > Результат команды из командной строки: > -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# В скрипте у тебя выполняются две команды, а из командной строки ты запускаешь всего одну.
- Результат команды bash из шел != из скрипта., DiJey, 08:55 , 28-Мрт-16 (3)
>>[оверквотинг удален] > В скрипте у тебя выполняются две команды, а из командной строки ты > запускаешь всего одну.-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
- Результат команды bash из шел != из скрипта., DiJey, 09:04 , 28-Мрт-16 (4)
еще интересное наблюдение (что за фигня шелл то один использую):-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#
- Результат команды bash из шел != из скрипта., vodz, 14:51 , 28-Мрт-16 (5)
> Результат выполнения команды из командной строки розница с результатом из скрипта, кто > нибудь может объяснить причину? (шел один и тот же /bin/bash) Вы проверяете наличие выполнения скрипта из него же, при вызове из командной строки вы не не запускаете этот скрипт.
- Результат команды bash из шел != из скрипта., DiJey, 12:06 , 29-Мрт-16 (6)
> Вы проверяете наличие выполнения скрипта из него же, при вызове из командной > строки вы не не запускаете этот скрипт.Когда я запускаю из командной строки он уже запущен, т.е. не имеет значения из командной строки запускаю или нет. Рабочий вариант скрипта создал. Теперь возникает вопрос какого ... при проверке из скрипта 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 &
- Результат команды bash из шел != из скрипта., DiJey, 12:25 , 29-Мрт-16 (7)
> Теперь возникает вопрос какого ... при проверке из скрипта 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 в Соляре не работают.
- Результат команды bash из шел != из скрипта., Andrey Mitrofanov, 14:28 , 29-Мрт-16 (8)
> показывает что их аж 2 шт. а при запуске из крона > аж 3.А в военное время значение Пи может достигать 4 !
- Результат команды bash из шел != из скрипта., fantom, 09:45 , 19-Апр-16 (9)
>> показывает что их аж 2 шт. а при запуске из крона >> аж 3. > А в военное время значение Пи может достигать 4 !ПРОГРАММИСТЫ! ПОМИТЕ! Комп выполняет в точности то, что вы НАПИСАЛИ, а не то, чего вам от него ХОТЕЛОСЬ!
|