从 bash 打开多个 gnome 终端并执行 sudo 服务
为了在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
更简单的方法是使用 tmux (参见)来做到这一点。
您可以在终端中执行初始 sudo 操作。然后使用您需要并行运行的命令启动 tmux(您可以使用下面的示例命令并将其添加到脚本中)。
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).