为什么我不能传递一个命令组来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'