It is
all about the fork option. It also helps that these are all private servers for friends, but I've had a good ~20 player TF2 match and a 4v4 L4D2 match going at the same time without issue.
Quote:
./srcds_run left4dead2 -game left4dead2 -fork 2 +map c6m1_riverbank +hostport 27212+## +exec server##.cfg &>/dev/null &
This does exactly what you think it does. Starts a server, loads all of the assets, and then forks two processes off to do the heavy lifting. Shared RAM for all of the game resources, a different process for each server, and suddenly you see how I pulled it off.
Of course, with shell escaping, that command becomes something like..
Quote:
./srcds_run left4dead2 -game left4dead2 -fork 2 +map c6m1_riverbank +hostport 27212+\#\# +exec server\#\#.cfg &>/dev/null &
.. but it is a small price to pay. :)
edit:
When it is all running, it looks something like this:
http://pastey.net/137895-jwo8