我编写了一个脚本来调用终端并运行一系列命令。终端出现但没有其他命令的结果。我将文件命名为显示服务状态.sh将其放在主目录中,并使用chmod +x
显示服务状态.sh包含以下命令:
gnome-terminal
echo "Display Manager Status"
sudo systemctl status display-manager.service
echo "System Log Status"
sudo systemctl status syslog.service
- 为什么终端出现但没有显示其他命令的结果?
- 我手动启动了终端并执行了
bash show-services-status.sh
它,但是我必须按下键盘上的 q 才能看到下一个命令的结果。如何消除这个问题?谢谢
答案1
因为所有命令都在执行
gnome-terminal
命令的同一 shell 中按顺序运行 - 而不是运行里面新的gnome-terminal
您可以将
--no-pager
选项添加到systemctl
命令中 - 请参阅man systemctl
如果您想在 new 中运行以下命令gnome-terminal
,您可以将它们包装在 shell 中并将它们作为命令字符串传递,例如:
gnome-terminal -- sh -c '
echo "Display Manager Status"
systemctl --no-pager status display-manager.service
echo "System Log Status"
systemctl status syslog.service
'
请注意,我省略了--no-pager
最后的systemctl
命令以保持终端打开 - 否则它可能会立即关闭,在您有时间读取结果之前。
答案2
你可能想要这个:
gnome-terminal -x bash -c 'echo "Display Manager Status"
systemctl --no-pager -l status display-manager.service
echo "System Log Status"
systemctl --no-pager -l status syslog.service
read'
按回车键退出终端。
如果使用xfce4-terminal
,您可以使用-H
之前的选项-x
让终端等待,而不需要使用read
。