【问题标题】:Can i run multiple processes (each with different port) using systemd?我可以使用 systemd 运行多个进程(每个进程都有不同的端口)吗?
【发布时间】:2016-07-25 14:24:06
【问题描述】:

我有以下 supervisord 配置(复制自 this answer):

[program:myprogram] 
process_name=MYPROGRAM%(process_num)s
directory=/var/www/apps/myapp 
command=/var/www/apps/myapp/virtualenv/bin/python index.py --PORT=%(process_num)s
startsecs=2
user=youruser
stdout_logfile=/var/log/myapp/out-%(process_num)s.log
stderr_logfile=/var/log/myapp/err-%(process_num)s.log
numprocs=4
numprocs_start=14000

我可以用 systemd 做同样的事情吗?

【问题讨论】:

    标签: supervisord systemd


    【解决方案1】:

    一个systemd单元可以包含specifiers,它可以用来编写一个通用的单元服务,该服务将被实例化多次。

    基于您的 supervisord 配置的示例:/etc/systemd/system/mydaemon@.service

    [Unit]
    Description=My awesome daemon on port %i
    After=network.target
    
    [Service]
    User=youruser
    WorkingDirectory=/var/www/apps/myapp
    Type=simple
    ExecStart=/var/www/apps/myapp/virtualenv/bin/python index.py --PORT=%i
    
    [Install]
    WantedBy=multi-user.target
    

    然后,您可以使用以下示例启用/启动该服务的尽可能多的实例:

    # systemctl start mydaemon@4444.service
    

    Fedora Magazine.org 上包含更多示例的文章:systemd: Template unit files

    【讨论】:

      猜你喜欢
      • 2018-04-04
      • 2017-08-07
      • 1970-01-01
      • 2013-04-04
      • 1970-01-01
      • 2015-09-22
      • 2019-05-26
      • 1970-01-01
      • 2011-09-01
      相关资源
      最近更新 更多