从 bash 打开多个 gnome 终端并执行 sudo 服务

Opening multiple gnome terminals from bash and execute sudo services

为了我在 Ubuntu OS 上的测量,我总共需要打开 8 个终端和需要 sudo 的 运行 services/commands。所以我的想法是在 bash 脚本中做到这一点。

我想要的: 调用“sudo ./init.sh”,输入 sudo 密码,然后所有 8 个终端应并行打开并执行 services/commands,无需任何进一步的 sudo 密码请求。

我试过的:(有 2 个终端的例子)

user:~/myFolder$ sudo ./init.sh

#!/bin/bash
gnome-terminal -- ptp4l -i enp3s0f2s -P -2 -s -m -q
gnome-terminal -- phc2sys -a -rr -q -m

这给了我一个错误,因为不应使用 sudo 调用 gnome 终端。

user:~/myFolder$ sudo ./init.sh

#!/bin/bash
sudo -u $SUDO_USER gnome-terminal -- ptp4l -i enp3s0f2s -P -2 -s -m -q
sudo -u $SUDO_USER gnome-terminal -- phc2sys -a -rr -q -m

这给我一个错误,因为这两个服务都需要 sudo

user:~/myFolder$ ./init.sh

#!/bin/bash
gnome-terminal -- sudo ptp4l -i enp3s0f2s -P -2 -s -m -q
gnome-terminal -- sudo phc2sys -a -rr -q -m

没有错误但是这里我需要为每个终端输入sudo密码

更简单的方法是使用 tmux (see) 来完成。

您可以在终端中执行初始 sudo。然后使用您需要的命令并行启动 tmux 运行(您可以使用下面的示例命令并将其添加到脚本中)。

tmux new-session -d -s multi-run 'your command'
tmux splitw -h -p 66 'your command'
tmux splitw -h -p 50 'your command'
tmux selectp -t 1
tmux splitw -v -p 50 'your command'
tmux selectp -t 3
tmux splitw -v -p 50 'your command'
tmux attach-session -t multi-run