自动创建Unix屏幕并在多个窗口中运行多个命令

时间:2017-01-05 08:27:12

标签: shell unix gnu-screen

我需要在VM(Ubuntu 14.04)中运行多个服务器。我正在使用屏幕来做到这一点。现在,每次我将VM关闭时,我都必须再次启动屏幕。所以,我正在编写一个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

1 个答案:

答案 0 :(得分:0)

这非常好,但是也许您应该花一些时间来发现如何通过init(等等)运行系统脚本。 screen主要供人类食用。