繁体   English   中英

如何在单行 linux (openshift/docker) 中执行多个命令

[英]How to execute mulitple commands in single line linux (openshift / docker )

我正在寻找一种在单行中运行 django 服务器和芹菜的方法。 服务(django 和 celery)作为两个独立的 pod 部署在 openshift 中,具有相同的图像,目前我正在使用python manage.py runserver和 celery(pod)运行 django 服务(pod)使用celery -A myapp worker --loglevel=info --concurrency=8

我想同时执行 runserver 命令和 celery worker 命令,而不是为每个运行单独的 pod。 怎么做。

我知道&&; || 用于此类场景。 但那些不起作用。

例如 :

cd ./app && python manage.py runserver  #this works

cd ./app && python manage.py runserver && celery -A myapp worker --loglevel=info --concurrency=8
#this will cd to app, execute runserver command. but celery command doesn't get executed.

创建一个 bash 文件并在其中添加如下两个命令:

python manage.py runserver &
celery -A myapp worker --loglevel=info --concurrency=8

使用“chmod +x”使其可执行

并使用 bash my_file.sh 在您的 docker 容器中运行它

&& 连接两个命令,意味着以下命令将在第一个完成后运行,具体取决于它的退出代码。

这是一个逻辑,因此,如果第一个命令返回 false,则第二个命令不会运行(因为逻辑并且已知评估为 false)。

尝试这个:

cd /路径; ( python manage.py runserver &); ( celery -A myapp worker --loglevel=info --concurrency=8 &);

最后 & 也将芹菜放在背景中。 如果你想在前景中使用芹菜,请将其删除。 如上所述,这不是“容器本机”设计——如果每个容器有一个进程,其余的管理将变得更加简单。 找出所需的其余调整通常是值得的(例如,emptyDir{} 可用于在 pod 内的容器之间共享文件)并尽早简化部署。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM