Это может быть лучше:
./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