首页 > 解决方案 > 如何在 bash 上同时运行 2 个命令

问题描述

我想测试我的服务器程序,(我们称之为A)我刚做的。所以当 A 被这个命令执行时

$VALGRIND ./test/server_tests 2 >>./test/test.log

,它被阻止监听连接。之后,我想使用连接到A中的服务器

nc 127.0.0.1 1234 < ./test/server_file.txt

所以 A 可以被解除阻塞并继续。问题是我必须在两个不同的终端中手动键入这些命令,因为它们都阻塞了。我还没有想出一种在单个 shell 脚本中自动执行此操作的方法。任何帮助,将不胜感激。

标签: bashsh

解决方案


您可以使用 & 在后台运行该进程并继续使用相同的 shell。

$VALGRIND ./test/server_tests 2 >>./test/test.log &
nc 127.0.0.1 1234 < ./test/server_file.txt

如果您希望服务器在您关闭终端后继续运行,您可以使用 nohup:

nohup $VALGRIND ./test/server_tests 2 >>./test/test.log &
nc 127.0.0.1 1234 < ./test/server_file.txt

如需进一步参考:https ://www.computerhope.com/unix/unohup.htm


推荐阅读