동일한 시스템 스크립트를 실행하여 동일한 환경 변수를 다른 값으로 전달하시겠습니까?

동일한 시스템 스크립트를 실행하여 동일한 환경 변수를 다른 값으로 전달하시겠습니까?

동일한 시스템 스크립트를 순차적으로 여러 번 실행하여 매번 동일한 환경을 제공하는 방법입니다. 가변적이지만 값이 다른가요? 터미널에서 동적으로 변수를 제공하고 싶습니다.

어떤 방법이 있나요?

답변1

Environment="%: 지정자 %I( 또는%i

man systemd.exec정의를 참조하세요 Environment=.

man systemd.unit"%" 지정자의 정의를 참조하세요 .


여기서는 이라는 템플릿 단위를 만들었습니다 [email protected]. 템플릿은 해당 이름( %I)을 환경 변수에 전달합니다 HELLO. 그런 다음 환경을 인쇄합니다.

내가 시작하는 인스턴스는 입니다 World. 저널에서 인쇄되는 것을 볼 수 있습니다 HELLO=World.

$ systemctl --user cat [email protected] 
# $HOME/.config/systemd/user/[email protected]
[Service]
Type=oneshot
Environment=HELLO=%I
ExecStart=/usr/bin/env

$ systemctl --user start [email protected]

$ journalctl --user --since "5 minutes ago" | grep HELLO
Aug 30 22:08:34 stewbian env[56312]: HELLO=World

템플릿은 하나의 변수만 전달할 수 있습니다. 여러 변수가 필요한 경우 템플릿을 사용하여 환경 파일을 전달합니다.

$ cat $HOME/home.env
IP=123.45.67.89
PORT=23412

$ cat $HOME/fred.env
IP=12.34.56.78
PORT=10201

$ systemctl --user cat [email protected]
# $HOME/.config/systemd/user/[email protected]
[Service]
Type=oneshot
EnvironmentFile=%h/%I.env
ExecStart=/usr/bin/env

$ systemctl start --user [email protected]
$ systemctl start --user [email protected]
$ journalctl --user --since "5 minutes ago"
...
Aug 31 08:06:54 stewbian env[3894]: IP=123.45.67.89
Aug 31 08:06:54 stewbian env[3894]: PORT=23412
Aug 31 08:06:54 stewbian systemd[1199]: Finished [email protected].
...
Aug 31 08:06:59 stewbian env[3894]: IP=12.34.45.78
Aug 31 08:06:59 stewbian env[3894]: PORT=10201
Aug 31 08:06:59 stewbian systemd[1199]: Finished [email protected].

관련 정보