【问题标题】:Automate creating Unix screen and running multiple commands in multiple windows自动创建 Unix 屏幕并在多个窗口中运行多个命令
【发布时间】:2017-05-19 17:12:59
【问题描述】:

我需要在VM(Ubuntu 14.04) 中运行多个服务器。我正在使用屏幕来执行此操作。现在,每次我关闭虚拟机时,我都必须重新启动屏幕。因此,我正在编写一个 shell 脚本来自动执行此操作。以下是我现在的脚本

#!/usr/bin/env bash
# Create a screen in detached mode and set default title
screen -d -m -S screenName -t "DjangoServer"
# Start django app in window 0
# Source environment variables for screen shell.
# TODO: Check if this is required.
screen -S screenName -X stuff $"source ~/.profile\n"
# Start virtual environment(virt_env command) exported via ~/.profile 
screen -S screenName -X stuff $"virt_env\n"
# Run Django app using grunt
screen -S screenName -X stuff $"grunt\n"
# Start node app in window 1
screen -S screenName -X screen -t "NodeAPI"
screen -S screenName -p 1 -X stuff $"cd /vagrant/node-app\n"
screen -S screenName -p 1 -X stuff $"npm start\n"
# Start a screen running a shell, simply
screen -S screenName -X screen -t "bash"

我是 shell 脚本的新手,我确信一定有更好的方法来做到这一点。谁能告诉我怎么做。由于命令很少,我不倾向于为要在屏幕窗口中运行的命令编写 shell 脚本。但如果这是标准方式,请建议如何做。 TIA。

编辑

我也不想修改.screenrc

【问题讨论】:

  • 请搜索。只花了几秒钟。 unix.stackexchange.com/questions/74785/…
  • 我已经浏览了您在上面发布的链接。我的部分尝试受到那里方法的影响。我不想更改.screenrc。我忘了提那个。但是,是的,我确实花了 2 个小时来搜索它。希望它现在满足你的利他主义:D
  • 为什么不想修改.screenrc?这是完成您正在尝试做的事情的最佳方式。创建额外的配置文件以便您可以运行screen -c some-other-screenrc 是否可以接受(注意这些配置文件可以通过source ... 包含您的主要.screenrc)?
  • 我不想修改.screenrc 只是因为我认为,也许是因为我不完全理解,可能有更好的方法来做到这一点。每次在我们需要做这类事情的每台机器上,在 VM 中修改 .screenrc 对我来说听起来并不好。此外,screen 实用程序通过它提供的命令已经拥有太多的自定义范围。我认为我不能仅仅利用它。希望看到配置文件的方法。

标签: shell unix gnu-screen


【解决方案1】:

这非常好,但也许您应该花一些时间来研究如何通过 init(或类似方法)运行系统脚本。 screen 主要供人类消费。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2011-03-15
    • 2014-06-11
    • 1970-01-01
    相关资源
    最近更新 更多