-1

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

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

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

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

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

4

2 回答 2

1

不确定你想要什么。这是一个通用的 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 &
于 2013-04-11T09:08:44.360 回答
1

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

如果您可以将要求放宽到每分钟一次,那么其他要查看的内容将是cron 。

#!/bin/bash
for SITE_NAME in <site1> <site2> <site3>
do
    SITE=$SITE_NAME ./manage.py collectstatic --noinput
done
于 2013-04-11T19:36:36.197 回答