【问题标题】:Bash / Django : Run a several watch commands in one shell, each with separate environment variables [closed]Bash / Django:在一个 shell 中运行多个监视命令,每个命令都有单独的环境变量 [关闭]
【发布时间】:2013-04-10 19:57:58
【问题描述】:

我有一个 Django 设置,我需要每两秒运行一次命令。命令如下所示:

watch SITE=<site_name> ./manage.py collectstatic --noinput

我将SITE 设置为VM 环境变量,然后Django 系统使用该变量来了解它需要针对哪个站点运行该命令以及其他内容。所有“站点”都从同一个代码库运行,并且在虚拟环境中运行。

问题是现在有 7 个“站点”我需要每两秒运行一次此命令,并且还有更多正在处理中。这意味着我打开了七个终端选项卡,每个选项卡分别运行相同的 VM,并且每两秒运行一次该命令!

有没有一种方法可以让我拥有某种脚本,以便以相同的方式为每个站点运行这些命令,但在一个终端选项卡中?或者更好,只是在后台运行?

【问题讨论】:

  • 我不确定这个问题是否合适。没有可以给出的答案可以“回答它”。也就是说,看看“工头”?

标签: python django bash terminal


【解决方案1】:

因为 watch 不能在后台运行,一个简单的脚本就可以完成你正在寻找的东西。使用 for 循环应该可以轻松增加站点的数量。如果你在脚本上运行 watch 那么你可以继续重复执行。

如果您可以将要求放宽到每分钟一次,可以查看 cron

#!/bin/bash
for SITE_NAME in <site1> <site2> <site3>
do
    SITE=$SITE_NAME ./manage.py collectstatic --noinput
done

【讨论】:

  • 谢谢你,Voider 这是完美的。
【解决方案2】:

不确定您想要什么。 这是一个通用的 bash 脚本,每 2 秒在后台运行一些命令:

#!/bin/bash

command1 &
command2 &
command3 &

#wait
# decomment the line above if you want to wait until
# all the spawned process ends before going further

sleep 2
exec $0

脚本本身可以在后台运行,方法是使用挂起的 & 号调用它:

./script.sh &

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2014-11-29
    • 2012-12-11
    • 2023-03-09
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    相关资源
    最近更新 更多