Дублирование фонового процесса в Unix - PullRequest
1 голос
/ 30 марта 2019

У меня возникла проблема с приведенным ниже фрагментом кода при включении в сценарий оболочки.Сценарий оболочки будет запускаться из Autosys.

Работает, как ожидалось, и возвращает 1 при использовании в командной строке, если один экземпляр задания уже запущен.

Но когда тот же сценарий запускается через файл .sh (Задание в Autosys) он возвращает 2

job_cnt=`ps -ef | grep "/proj/myscript.sh param1" | grep -v "grep" | wc -l`

Для первого запуска он должен возвращать 1 в переменной job_cnt, но возвращает 2.

1 Ответ

2 голосов
/ 16 апреля 2019

Поскольку я не нашел пути к этой проблеме, я просто использовал альтернативное решение, и оно работало хорошо.

dummyfile="$data_folder/$lv_autosys_job_nm"_DUMMY.txt
dummydup="$data_folder/$lv_autosys_job_nm"_DUMMY_DUP.txt

    sleep $(( RANDOM % 10 + 10 ))
    cnt=1
    while [ -r $dummyfile ]
    do
      if [ $cnt == 1 ]; then
       /* Code to send an email*/
      cnt=2
        echo "process id:$$"> $dummydup
        chmod 755 $dummydup
      fi

      echo "Duplicate session waiting inside the loop " >> ${LOGFILE}
      sleep 30

    done
    if [ $cnt == 2 ]; then
        rm -f $dummydup
        exit 0
    fi
    echo "process id:$$"> $dummyfile
    chmod 755 $dummyfile

в конце перед выходом

rm -f $dummyfile

Редактировать: я забыл упомянуть, спасибо коллеге за помощь в написании сценариев Unix.Он был гением в написании сценариев Unix.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...