The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Результат команды bash из шел != из скрипта., !*! DiJey, 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#

  • Результат команды 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 !




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

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