https://github.com/sebastien/multiplex

Here are some example commands that will help understand the syntax:

Running multiple commands in parallel:

multiplex "python -m http.server -p 8000" "python -m http.server -p 8001"

Running a command after 5s delay:

multiplex "+5=python -m http.server"

Running a command after another completes:

multiplex "A=find . -name '*.*'" "B:A=du -hs ."

Running multiple commands with complex coordination:

# Starts the DB, wait two seconds after it started, run the server, and
# once the server is started, start the test. When the test ends,
# gracefully shut down everything.
multiplex "DB=mongod" "API:DB&+2=node server.js" ":API&|end=npm test"