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

发布于 2025-01-10 12:01:40 字数 838 浏览 1 评论 0原文

为了在 Ubuntu 操作系统上进行测量,我需要总共打开 8 个终端并运行需要 sudo 的服务/命令。所以我们的想法是在 bash 脚本中做到这一点。

我想要什么: 调用“sudo ./init.sh”,输入 sudo 密码,然后所有 8 个终端应并行打开并执行服务/命令,而无需任何进一步的 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

给了我一个错误,因为 gnome-terminal 不应该用 sudo 调用。

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 密码

for my measurements on a Ubuntu OS I need to open in total 8 terminal and run services/commands that requires sudo. So the idea is to do that in a bash script.

What I want:
call "sudo ./init.sh" ones, enter sudo password and then all 8 terminals should open parallel and execute the services/commands without any further sudo password request.

What I tried: (example with 2 terminals)

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

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

that gave me an error since gnome-terminal should not be called with sudo.

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

That give me an error since both services need 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

no error but here I need to enter sudo password for each terminal

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌上芳菲 2025-01-17 12:01:40

更简单的方法是使用 tmux (参见)来做到这一点。

您可以在终端中执行初始 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

Easier way is to use tmux (see) to do it.

You can do initial sudo in terminal. Then launch the tmux with the commands you need to run in parallel (you can use the sample command below and add it in script).

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文