在两个终端中同时运行的两个命令

Jos*_*eph 2 linux terminal

我必须同时在一个终端(服务器)中运行脚本并在第二个终端(用户)中运行 jar 文件,毫秒很重要。是否可以。谢谢

phe*_*mer 6

您可以使用文件锁轻松完成此操作。

使用以下内容创建 2 个脚本。首先运行终端 A 脚本,然后运行 ​​B。

航站楼 A:

touch /tmp/lockfile
flock -x /tmp/lockfile read -p 'press enter to begin'
command_a
Run Code Online (Sandbox Code Playgroud)

B航站楼:

flock -x /tmp/lockfile true
command_b
Run Code Online (Sandbox Code Playgroud)

Enter当您准备好开始时,按下终端 A。

 

它的工作方式是第flock一个获取独占锁/tmp/lockfile,并保持该锁直到您按下Enter。第二个flock也尝试获取独占锁,但由于锁已经被持有而被阻塞。一旦第一个flock释放锁,第二个就会运行/bin/true,它立即返回,因此命令继续。

是的,这意味着command_a将在command_b. 但是在 shell 脚本中,这种延迟无论如何都是不可避免的,所以这无关紧要。

根据您的 linux 风格,您可能没有/bin/read. 你可以通过这样做来完成同样的事情flock ... bash -c "read -p 'press enter to begin'"