如何使用 bash 启动多个龙卷风实例

How to start multiple tornado instance using bash

我有一个龙卷风服务器,我想在不同的端口上启动多个实例,所以我创建了以下 bash 文件来启动 3 个实例。

#!/bin/bash

#start tornado instances in different ports
python startup.py --port="8081"
python startup.py --port="8082"
python startup.py --port="8083"

如你所见,上面的代码是有问题的,因为第一个命令会阻塞第二个命令。 那么有人知道如何一起开始 3 个吗? 提前致谢。

如果您只需要在当前会话中 运行 它们,请在每行末尾添加 &

python startup.py --port="8081" &
python startup.py --port="8082" &
python startup.py --port="8083" &

但是使用 systemdupstart 或其他初始化系统要方便得多,因为它为您提供了 startstoprestart 你的实例。

如果您需要示例,我会更新此答案。


更新

只要你使用的是 OS X,你就可以使用默认的初始化系统 – launchd.

第 1 步 – 为您的作业创建一个配置文件:

vim /Library/LaunchDaemons/my_job.plist

文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>my.awesome.label</string>

        <key>ProgramArguments</key>
        <array>
                <string>/usr/bin/python</string>
                <string>/Users/ivanvinogradov/tort.py</string>
        </array>

        <key>OnDemand</key>
        <false/>

        <key>UserName</key>
        <string>ivanvinogradov</string>

        <key>StartInterval</key>
        <integer>60</integer>

        <key>StandardErrorPath</key>
        <string>/tmp/AlTest1.err</string>

        <key>StandardOutPath</key>
        <string>/tmp/AlTest1.out</string>
</dict>
</plist>

您的 .py 脚本的路径转到 <key>ProgramArguments</key>
<key>UserName</key> 部分输入将 运行 你的工作的用户名。
另请注意,<key>Label</key> 部分是必需的。

步骤 2 – 确保 .plist 文件具有适当的权限:

sudo chown root:wheel /Library/LaunchDaemons/my_job.plist
sudo chmod 600 /Library/LaunchDaemons/my_job.plist

第 3 步 – 开始和停止您的工作:

sudo launchctl load -w /Library/LaunchDaemons/my_job.plist
sudo launchctl unload /Library/LaunchDaemons/my_job.plist

这是launchd的一个非常简单的例子。您可以在 SO 或 Apple doc page.

上了解更多信息