我有一个在后台运行的脚本(没有终端窗口或 TTY),偶尔会执行某些操作。
我现在希望它在做某事时做另一件事,即打开 Gnome 终端窗口并执行 2 个命令。实际上,我只需要执行 1 个命令,但我想让终端窗口保持打开状态,以便我可以看到命令的输出。该命令在 stdout 和 stderr 上打印,并且其输出随着时间的推移而变化,因此仅将其写入文件并发送某种通知并不能很好地完成这项工作。
我可以让 Gnome 终端打开一个窗口并执行 1 个命令:
gnome-terminal -e "sleep 10"
为简单起见,我选择sleep
作为长时间运行的命令。但是,当添加另一个命令时,不会打开终端窗口:
gnome-terminal -e "echo test; sleep 10"
解决这个问题的办法是什么?
答案1
gnome-terminal
将引号中的所有内容视为一个命令,因此为了连续运行其中许多命令,您需要启动解释器(通常是一个 shell),并在其中执行一些操作,例如:
gnome-terminal -e 'sh -c "echo test; sleep 10"'
顺便说一句,即使命令完成其工作,您可能也希望窗口保持打开状态,在这种情况下只需启动新的 shell,或用新的 shell 替换当前的 shell:
gnome-terminal -e 'sh -c "echo test; sleep 10; exec bash"'
答案2
答案3
我运气更好,将命令放入外部脚本中,然后从基于 gnome 终端的第二个脚本运行它们
脚本1:命令.sh
#bin/bash
precommand
app
postcommand
然后是一个在 gnome-terminal runscript.sh 中执行这些脚本的脚本:
gnome-terminal --full-screen --hide-menubar -- /bin/sh commands.sh