Unix中的重复后台进程

Unix中的重复后台进程,unix,Unix,在shell脚本中包含以下代码片段时,我面临一个问题。shell脚本将从Autosys运行 它按预期运行,如果作业的一个实例已在运行,则在命令行上使用时返回1 但是当相同的脚本在.sh文件(Autosys上的作业)中运行时,它返回2 job_cnt=`ps -ef | grep "/proj/myscript.sh param1" | grep -v "grep" | wc -l` 对于第一次运行,它应该在变量job_cnt中返回1,但它返回2。由于我没有找到解决此问题的方法,我只是使用了另一

在shell脚本中包含以下代码片段时,我面临一个问题。shell脚本将从Autosys运行

它按预期运行,如果作业的一个实例已在运行,则在命令行上使用时返回1

但是当相同的脚本在.sh文件(Autosys上的作业)中运行时,它返回2

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

对于第一次运行,它应该在变量job_cnt中返回1,但它返回2。

由于我没有找到解决此问题的方法,我只是使用了另一种解决方案,效果很好

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脚本的天才。

搜索“Autosys”中的一个问题,因为这一行的执行在shell中返回1,并且作为从系统crontab启动的.sh脚本返回。@您是对的,这看起来像是Autosys问题,我只是从命令行运行了.sh文件,上面的代码返回0,但从Autosys返回2,真奇怪。有什么解决办法吗?我的主要任务是识别来自Autosys的重复作业提交,并进行第二次运行。除了这个重复的标识外,一切都很小心。@Venkant跳过| wc-l,看看哪些进程捕获了grep。@SlawomerDziuba,我在前面的评论中提到过,它返回2个进程。我认为即使我使用grep-v“grep”
job 20566 20538 0 16:26,也会考虑正在执行的命令?00:00:00/bin/bash/mypath/myfile.sh
作业21044 20566 0 16:27?00:00:00/bin/bash/mypath/myfile.sh
@Venkant应用程序来自哪里?Grep不在列表中,只有两个调用“/bin/bash/mypath/myfile.sh”。有东西再次调用您的脚本。我没有“autosys”或显示脚本的功能。所以我不能重复这个问题。