我有两个应用程序,让我们称之为APP1和APP2。 我想,这两个执行并行我的机器上。 这是没有必要,他们开始在完全相同的时间,但应在大致同时启动。 一个INTIAL想到的是有一个shell脚本,如下所示:
./APP1&
./APP2
这确实的伎俩还是我需要插入一个等待语句,以确保APP2在一定时间内启动?
谢谢
我有两个应用程序,让我们称之为APP1和APP2。 我想,这两个执行并行我的机器上。 这是没有必要,他们开始在完全相同的时间,但应在大致同时启动。 一个INTIAL想到的是有一个shell脚本,如下所示:
./APP1&
./APP2
这确实的伎俩还是我需要插入一个等待语句,以确保APP2在一定时间内启动?
谢谢
这可能是更好的:
./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
您的解决方案应该在实际工作中..否则,你可以使用任何计划像在,cron和类似在指定时间启动这两个命令。
这将很好地工作。
AFAIK外壳并不能保证任何有关启动程序的时间,但在实践中它应该在同一时间几乎开始
这将工作,你甚至可以有APP 2 APP1之前启动。 如果时间并不重要,但顺序和APP1必须开始之前APP2那么这个建设不会给你这个保证。
你应该包括睡眠声明,如果你想留下机会APP1运行APP2之前运行。