ubuntu-16.04 - 如何忽略 Systemd 中 'ExecStart' 的失败

标签 ubuntu-16.04 systemd ubuntu-18.04 systemctl

我正在尝试创建一个使用 ExecStart 运行多个脚本的服务其中一些可能会失败。我需要忽略这些失败的脚本并为服务返回成功。

以前我用过 upstart这就是我实现它的方式。

start on runlevel [23]
stop on shutdown

script
    set +e # Disable exit on non 0
    stop sys_process_script
    start sys_init_script
    start sys_process_script
    set -e # Enable exit on non 0
end script

但我不知道如何忽略失败的脚本。到目前为止,这是我的实现。
[Unit]
Description=System starter

[Service]
Type=forking
ExecStart=/bin/systemctl stop sys_process_script
ExecStart=/bin/systemctl start sys_init_script
ExecStart=/bin/systemctl start sys_process_script

如果在 systemctl 中失败,是否有任何方法可以忽略脚本或在 .service - onFailure ?

最佳答案

内联包装的简单方法

ExecStart=/bin/sh -c"command_which_will_fail; exit 0;"

关于ubuntu-16.04 - 如何忽略 Systemd 中 'ExecStart' 的失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56928677/

相关文章:

ubuntu - 在 AWS EC2 Ubuntu 中设置 kafka.service 和 zookeeper.service

python - 无法在 Ubuntu 18.04 上安装 Python-Rocksdb

linux - 系统重启后 systemctl 服务未启动

linux - 解析 systemd 别名(服务名称)

Docker 在 Ubuntu 主机上使用 Miniconda 环境构建和运行

powershell - 如何使用Powershell中的命令将sudo用户添加到WSL?

python - 如何在遍历文件中的行时从文件中删除行?

Docker:为什么我需要在 Ubuntu 中使用 sudo?

java - 如何解决 Ubuntu 16.04 中的 java.lang.UnsatisfiedLinkError

安卓工作室 3.1.2 : gradle sync failed: read time out on ubuntu 16. 04