我目前正在设置一个服务器,并且我想在后台运行不同的程序,同时仍然能够根据需要查看每个程序的控制台。
因此,我尝试为每个程序自动创建一个屏幕并在创建的屏幕内启动该程序,但屏幕内的命令似乎没有运行。
我正在使用 创建屏幕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"