명령 그룹을 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

나는 따옴표, 중괄호 및 하위 쉘의 다양한 조합을 시도했지만 성공하지 못했습니다. 나는 이것이 쉘-리눅스의 차이의 문제일지도 모른다고 생각한다.

나는 조사했다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

셸을 시작하고 명령 문자열에 명령을 전달할 수 있습니다.

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'

관련 정보