Linux Shell编程:同时执行两个应用程序

Linux Shell编程:同时执行两个应用程序,linux,shell,Linux,Shell,我有两个应用程序,我们把它们叫做APP1和APP2。我想要那些 两个在我的机器上并行执行。这是没有必要的,他们开始在正确的时间 相同的时间,但应该在大致相同的时间开始。最初的想法是有一个外壳 如下所示的脚本: ./APP1& /附件2 这是诀窍还是我需要插入等待语句以确保APP2在特定时间范围内启动 谢谢,这很好。AFAIK shell不保证程序的启动时间,但实际上它应该几乎同时启动。您的解决方案应该在实践中起作用。。否则,您可以使用任何调度程序(如at、cron和类似程序)在特定时间启动这两个

我有两个应用程序,我们把它们叫做APP1和APP2。我想要那些 两个在我的机器上并行执行。这是没有必要的,他们开始在正确的时间 相同的时间,但应该在大致相同的时间开始。最初的想法是有一个外壳 如下所示的脚本:

./APP1&
/附件2

这是诀窍还是我需要插入等待语句以确保APP2在特定时间范围内启动


谢谢,这很好。

AFAIK shell不保证程序的启动时间,但实际上它应该几乎同时启动。

您的解决方案应该在实践中起作用。。否则,您可以使用任何调度程序(如at、cron和类似程序)在特定时间启动这两个命令。

这将起作用,您甚至可以在APP1之前启动APP2。如果时间不重要,但订单是,且APP1必须在APP2之前启动,则此构造不会为您提供此保证

如果您想在运行APP2之前让APP1运行,您应该包含一个sleep语句。

这样可能更好:

./app1 & ; ./app2 & 
但是,正如已经指出的那样,shell将作为子shell中的子进程启动这些进程。shell不保证进程之间的任何同步,也不保证启动时间

为什么需要这些并行运行?也许理解这个要求会给你一个更好的答案

您可以在这两个程序中构建一些非常简单的启动同步。下面是示例的“app1”部分

#!/bin/sh
# app1.sh
# Do any setup, open log files, check for resources, etc, etc...

# Sync with the other app
typeset -i timeout=120 count=0
touch /tmp/app1
while [[ ! -e /tmp/app2 ]] ; do
    if [[ $count -ge $timeout ]] ; then
        print -u2 "ERROR:  Timeout waiting for app2"
        exit 1
    fi
    (( count += 1 ))
    sleep 1 
done

# Do stuff here...

# Clean up
rm /tmp/app1
exit 0