對于我在 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
這給了我一個錯誤,因為不應使用 sudo 呼叫 gnome-terminal。
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 密碼
uj5u.com熱心網友回復:
更簡單的方法是使用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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/433083.html
上一篇:在eval“$(condashell.bashhook)”之后將引數傳遞給bash命令?
下一篇:在兩列中按字數列印前N個檔案
