Bash 执行一个脚本,在执行另一个脚本时,应该上载它';s输出

Bash 执行一个脚本,在执行另一个脚本时,应该上载它';s输出,bash,multitasking,Bash,Multitasking,我有两个脚本,一个执行任务(生成大量输出),另一个将输出上传到internet。我想开始执行第一个脚本,上传脚本每5秒上传一次输出。当执行任务的脚本完成时,上传脚本也完成了。可以有很多选项来实现您所说的 一个可用的选项是执行 pkill -f script2.sh 第一个完成后 更好的方法是创建第三个主脚本,用于处理script1和script2的开始和停止 while true do if [[ `pgrep first.sh | grep -c` == 0 ]];then

我有两个脚本,一个执行任务(生成大量输出),另一个将输出上传到internet。我想开始执行第一个脚本,上传脚本每5秒上传一次输出。当执行任务的脚本完成时,上传脚本也完成了。可以有很多选项来实现您所说的

一个可用的选项是执行

pkill -f script2.sh 
第一个完成后

更好的方法是创建第三个主脚本,用于处理script1和script2的开始和停止

while true
do
    if [[ `pgrep first.sh | grep -c` == 0 ]];then
        kill -9 `pgrep firsh.sh`
        kill -9 `pgrep second.sh`
        echo "Processes killed"
        break
    fi
    sleep 10
done

您应该让上载脚本控制任务脚本:

execute_task.sh &
task_pid=$!

# do the preliminary stuff for the upload script

# now, wait until the task is done:
wait "$task_pid"

# then carry on with the upload commands...

你想两个都开始,但让他们按预定的顺序完成?如果第二次上传是第一次上传的结果,为什么不按顺序进行呢?因为第一次上传可以执行一个小时,输出量非常大。第二个应该是不断上传输出。所以当第一个正在执行时,第二个也在执行。第二个是无限时间,第一个脚本完成时应该停止。您最好更改第二个脚本,以检测第一个脚本的输入结束,然后自己优雅地完成。我可以做一段时间[命令]进行上载吗?因此,在命令完成之前,每次都会调用上载。不建议使用无暂停的有限循环。这实际上已经讨论过并回答过了。我否决了你的答案,因为它是错误的,
pgrep whatever | grep-c
总是会产生错误信息。这也可能是一个非常糟糕的方法,或者是对OP问题的严重误解。不管怎样,这都是一个糟糕的答案。我想不断地上传,而不是当它完成的时候。因为第一个脚本将把它的输出保存到一个文件中,而第二个脚本应该不断地上传它。所以它是“活的”,请详细说明第三个主脚本