如何在特定屏幕上执行命令?

如何在特定屏幕上执行命令?

我目前正在设置一个服务器,并且我想在后台运行不同的程序,同时仍然能够根据需要查看每个程序的控制台。

因此,我尝试为每个程序自动创建一个屏幕并在创建的屏幕内启动该程序,但屏幕内的命令似乎没有运行。

我正在使用 创建屏幕screen -dmS screen1并尝试使用 运行命令screen -S screen1 -X cmd,但屏幕没有执行任何操作。
例如,如果我运行screen -S screen1 -X touch /home/user/test,则不会创建文件。

自动启动问题已解决

答案1

您需要发送进入才能正常工作。为此,请按ctrl+ v,然后键入Enter。例如,您的命令将如下所示:

screen -S screen1 -X stuff 'touch /home/user/test^M'

请记住,这只会将文本“填充”到您的第一个窗口中,如果控制台中已经有一些“文本”,则会失败。

看一眼GNU screen FAQ:如何从命令行向正在运行的 screen 会话中的窗口发送命令了解更多示例。

在屏幕启动时执行此操作的一种方法是使用.screenrc类似以下内容:

# Start some screens by default
screen -t touch -L /bin/sh -c "touch ~/test3;bash"
screen -t mc -L /bin/sh -c "mc;bash"

相关内容