shell编程:在同一时间执行两个应用程序(Shell programming: Executing

2019-09-16 20:39发布

我有两个应用程序,让我们称之为APP1和APP2。 我想,这两个执行并行我的机器上。 这是没有必要,他们开始在完全相同的时间,但应在大致同时启动。 一个INTIAL想到的是有一个shell脚本,如下所示:

./APP1&
./APP2

这确实的伎俩还是我需要插入一个等待语句,以确保APP2在一定时间内启动?

谢谢

Answer 1:

这可能是更好的:

./app1 & ; ./app2 & 

但是,因为它已经指出,壳牌将在一个子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


Answer 2:

您的解决方案应该在实际工作中..否则,你可以使用任何计划像在,cron和类似在指定时间启动这两个命令。



Answer 3:

这将很好地工作。



Answer 4:

AFAIK外壳并不能保证任何有关启动程序的时间,但在实践中它应该在同一时间几乎开始



Answer 5:

这将工作,你甚至可以有APP 2 APP1之前启动。 如果时间并不重要,但顺序和APP1必须开始之前APP2那么这个建设不会给你这个保证。

你应该包括睡眠声明,如果你想留下机会APP1运行APP2之前运行。



文章来源: Shell programming: Executing two applications at the same time
标签: linux shell