使用多个virtualenv选项卡和服务启动gnome-terminal,预先标题

时间:2009-11-09 13:29:26

标签: python terminal virtualenv gnome-terminal

我正在开发一个由多个服务组成的服务器端项目。每个服务都以交互式(即非守护进程)模式运行,这在主动开发时很方便。该项目是virtualenv。因此,启动服务的典型方式是:

$ cd ~/to/vitualenv/subdir/where/service/code/located
$ source ../path/to/virtualenv/bin/activate
$ ./script-to-start-service
+ Set title of terminal to the service name via GUI

如果有2-3个服务就没问题。但我们有十几个。在计算机重启后重启所有这些都是一件非常痛苦的事。

所以我想要的是一个脚本,一旦执行就打开了我的新gnome-terminal窗口,其中包含十几个命名选项卡(每个服务一个),每个窗口都激活了virtualenv,并在该选项卡中运行了一堆服务实例。到目前为止我得到的最好结果是:

$ gnome-terminal --working-directory=~/to/vitualenv/subdir --window --tab --tab

- title和--profile看起来被忽略了,如果指定了--command,那么新打开的窗口会在打开后立即关闭。

有什么想法吗?如何获取激活脚本,提供标题并运行服务?

P.S。它仅用于开发目的,不适用于在真实服务器上部署。

2 个答案:

答案 0 :(得分:2)

以下内容适用于我并按您的要求执行操作:

gnome-terminal --working-directory=/path/to/wd --tab-with-profile=profile1 --title=title1 -e 'bash --rcfile /path/to/rcfile1.sh' --tab-with-profile=profile2 --title=title2 -e 'bash --rcfile /path/to/rcfile2.sh'

答案 1 :(得分:0)

创建名为“service”的gnome-terminal个人资料(编辑>个人资料>新)。

在编辑>个人资料首选项>标题和命令>运行自定义命令而不是我的shell,将自定义命令设置为:

bash --rcfile ../path/to/virtualenv/bin/activate

然后使用gnome-terminal启动您的服务。以下命令在不同目录的选项卡中启动yes的两个实例。我已将命令分为三行,但您应将其输入为一行。

gnome-terminal
--tab-with-profile=service --working-directory=/home/$USER/data --title="feelgood" --command="yes"
--tab-with-profile=service --working-directory=/code --title="negative" --command="yes no"

您可能希望创建一个用作自定义命令的文件,而不是直接调用activate:

source ~/.bashrc
source ../path/to/virtualenv/bin/activate

您还可以添加命令(例如更改目录或启动服务)。请注意,每次打开具有该配置文件的终端时,都会执行这些命令。