Попробуйте объединить две команды в одну:
gnome-terminal --tab -x bash -c "python server.py & sleep 5; python client.py"
Я думаю, что лучше поставить команду сна (если необходимо) вне клиента, поскольку могут быть ситуации, когда сервер уже запущен и клиенту не нужно спать.
Флаг -x означает
-x, --execute
Execute the remainder of the command line inside the terminal.
Команда вызывает bash:
bash -c "python server.py & sleep 5; python client.py"
bash, в свою очередь, имеет флаг -c, что означает
-c string If the -c option is present, then commands are read from string. If
there are arguments after the string, they are assigned to the posi‐
tional parameters, starting with $0.
Возможно, вы захотите поэкспериментировать с
gnome-terminal --tab -e "python server.py & sleep 5; python client.py"
Это тоже может сработать. Когда вы сначала запускаете bash, то ваш ~ / .bashrc читается. Без вызова bash, я думаю, по умолчанию вместо этого вызывается / bin / sh.
Если вы получите
"socket.error: [Errno 98] Address already in use",
это, вероятно, означает, что ваш сервер уже запущен, и запуск сервера во второй раз завершается неудачей.