我可以使用 systemd 运行 多个进程(每个进程都有不同的端口)吗?
Can i run multiple processes (each with different port) using systemd?
我有以下 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 做同样的事情吗?
一个 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。
我有以下 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 做同样的事情吗?
一个 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。