- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
是否可以使用以不同输入参数启动的相同脚本创建服务?
例子:
[Unit]
Description=script description
[Service]
Type=simple
ExecStart=/script.py parameters1
ExecStart=/script.py parameters2
Restart=on-failure
[Install]
WantedBy=multi-user.target
有可能吗?
它会以串行模式启动吗?还是在两个不同的过程中?
最佳答案
如果在你的单元文件中Type=simple
,你只能指定一个ExecStart,但是你可以添加尽可能多的ExecStartPre
,ExecStartPost
,但是这些都不适合长时间运行的命令,因为它们是串行执行的,并且在开始下一个之前,所有的启动都会被杀死。
如果Type=oneshot
可以指定多个ExecStart,它们串行运行而不是并行运行。
如果您想要并行运行多个单元,您可以执行以下操作:
你可以使用模板单元,所以你创建一个/etc/systemd/system/foo@.service
。 注意:(@
很重要)。
[Unit]
Description=script description %I
[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure
[Install]
WantedBy=multi-user.target
然后你执行:
$ systemctl start foo@parameter1.service foo@parameter2.service
或者...
您可以创建多个链接到单个目标的单元:
#/etc/systemd/system/bar.target
[Unit]
Description=bar target
Requires=multi-user.target
After=multi-user.target
AllowIsolate=yes
然后您只需将 .service 单元修改为 WantedBy=bar.target
就像:
#/etc/systemd/system/foo@.service
[Unit]
Description=script description %I
[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure
[Install]
WantedBy=bar.target
然后你只需并行启用你想要的 foo 服务,然后像这样启动 bar 目标:
$ systemctl daemon-reload
$ systemctl enable foo@param1.service
$ systemctl enable foo@param2.service
$ systemctl start bar.target
注意:这适用于任何类型的单元,而不仅仅是模板单元。
关于linux - 具有多个 execStart 的 Systemd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48195340/
我尝试将 Debian(以及 LinuxMint 和 Ubuntu & Co. 等衍生发行版)上使用的 SysVintit 脚本转换为 Fedora 或 ArchLinux(以及 Bridge 或 M
我创建了一个 systemd目录 /lib/systemd/system/ 中的服务文件发射nodejs作为一项服务。问题是该文件包含到 nodej 的硬编码路径。在 ExecStart field
我有一个服务文件,它拒绝实际启动 ExecStart 指令中指定的服务。 如果我从终端提示符运行完全相同的命令,一切都会按预期进行。我已经检查了文件等的所有权限,但我所做的任何事情都不会启动该程序。
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 a specific programming problem, a software a
我有一个Python脚本,可以作为CentOS 7中的systemd守护进程。该守护进程由我在virtualenv中创建的python版本执行。我正在尝试调整脚本,以便能够在环境变量中设置 virtu
我编写了以下 systemd 服务 tcpdumpd.service 来启动持久的 tcpdump 记录。 [Unit] Description=TCPDumpd After=multi-user.t
我有一个Python脚本,可以作为CentOS 7中的systemd守护进程。该守护进程由我在virtualenv中创建的python版本执行。我正在尝试调整脚本,以便能够在环境变量中设置 virtu
这是我的 Systemd 脚本: [Unit] Description=RDS Services [Service] WorkingDirectory=/home/rdsdb2/script_rds/
以下测试在CentOS 7.1下进行。 创建以下文件 test.service在/usr/lib/systemd/system/ [Unit] Description=Test Bash Brace
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
Systemd 和 Gunicorn 需要某种 wsgi 文件作为 ExecStart 的最后一个参数:http://docs.gunicorn.org/en/latest/deploy.html?h
我正在尝试创建一个使用 ExecStart 运行多个脚本的服务其中一些可能会失败。我需要忽略这些失败的脚本并为服务返回成功。 以前我用过 upstart这就是我实现它的方式。 start on run
我正在尝试在端口 80 上运行一个 node.js 站点(我正在使用 Digital Ocean)。我在服务文件中使用 systemd 执行此操作 ... ExecStart=/usr/bin/nod
我有以下服务文件: [Unit] Description=MyApp After=syslog.target network.target StartLimitIntervalSec=0 [Servi
我有一个 Systemd 服务,它启动输出过程,我需要将其作为普通 Bash 脚本执行 [Unit] Description=Example app [Service] Type=simple PID
我已经创建了一个 systemd 服务,就像任何触发运行进程的中断然后它必须自行重启一样。但服务显示其状态为正在运行(使用 systemctl status x.service),即使在进程退出后(在
我是一名优秀的程序员,十分优秀!