如何将命令组传递给 systemd-run?

如何将命令组传递给 systemd-run?

为什么我不能传递一个命令组来systemd-run像这样?

$ systemd-run --on-active=1 { cp file1 file2 && echo hi; }
Failed to find executable {: No such file or directory

我尝试了引用、大括号和子 shell 的各种组合,但没有成功。我觉得这可能是 shell-linux 分歧的问题。

我调查了https://www.freedesktop.org/software/systemd/man/systemd.service.html#Command%20lines但在那里也找不到解决方案。

我当然可以将命令放入脚本中,但我真的想知道我在这里缺少什么。有任何想法吗?


上下文,因为也许有完全不同的解决方案:

我正在尝试创建一个解决方案,通过复制回先前创建的备份文件来在一定的倒计时后重置网络设置,除非另一个命令首先删除它(当新的网络设置成功时)。

我正在尝试使用瞬态计时器的解决方案,该计时器执行两个命令,其中仅在成功systemd-run时才执行重新启动:cp

systemd-run --on-active=300 { cp /etc/systemd/network/10-wired.network.backup /etc/systemd/network/10-wired.network && systemctl restart systemd-networkd; }

答案1

您可以启动 shell 并在命令字符串中传递命令:

systemd-run --on-active=300 sh -c '
    cp /etc/systemd/network/10-wired.network.backup /etc/systemd/network/10-wired.network &&
        systemctl restart systemd-networkd.service'

相关内容