systemd, 환경 파일 및 서비스 실행 파일의 명령줄 인수에 대한 혼란

systemd, 환경 파일 및 서비스 실행 파일의 명령줄 인수에 대한 혼란

upstart스크립트를 변환 하려고 하는데 systemd명령줄 인수를 실행 파일에 전달하는 방법을 모르겠습니다. 원본 upstart스크립트는 다음과 같습니다.

# job description

description "job description"

start on (started wrouterd and wrouterd-started)
stop on (stopping wrouterd)

instance    $SLUG[$PHONE]

chdir       /var/application/bin
console     log
manual
respawn
respawn limit 5 60

exec /usr/bin/php my_script.php --phone=${PHONE} --slug=${SLUG}

이것이 내가 지금까지 얻은 것입니다:

[Unit]
Description=service description
After=wrouterd.service

[Service]
Type=simple
WorkingDirectory=/var/application/bin
StandardOutput=tty, StandardError=tty
Restart=on-failure
RestartSec=30s
ExecStart=/usr/bin/php my_script.php --phone=${PHONE} --slug=${SLUG}

환경 파일에 대한 내용을 읽었지만 다음과 같이 나와 있기 때문에 해당 파일이 내 사례에 적용되는지 잘 모르겠습니다.여기"서비스는 옵션을 자주 변경해서는 안 됩니다." 및 "서비스 매개 변수는 정기적으로 변경되지 않으며 구성 파일도 변경되지 않습니다." 현재 이 작업의 인스턴스가 약 130개 정도 동시에 실행되고 있습니다. 언제든지 시작하고 중지할 수 있어야 합니다. 시간. 각 인스턴스에 대한 환경 파일을 생성해야 합니까? 아니면 단일 환경 파일에서 변수를 변경한 다음 스크립트를 시작/중지해야 합니까?

답변1

어쩌면 당신이 찾고 있는 것 같아요. 이것 좀 봐블로그유닛에 대한 심볼릭 링크를 생성하여 필요한 만큼 단일 getty 유닛을 인스턴스화하는 방법을 설명합니다. 파일 이름에는 유닛에 전달된 임의의 인수가 포함되어 있으며, 이는 %I또는 로 되돌릴 수 있습니다 %i.

예를 들어,

systemctl start [email protected]

먼저 정확한 파일 이름을 가진 파일을 찾은 다음 해당 ttyUSB0부분을 제거하고 [email protected] file장치 내부에서 다음과 같은 줄을 볼 수 있습니다./usr/lib/systemd/system/[email protected]

ExecStart=-/sbin/agetty -s %I 115200,38400,9600

ttyUSB0이로 인해 getty는 대신 arg를 사용하게 됩니다 %I.

모두 읽어보시길 강력히 추천합니다블로그 시리즈시스템에.

관련 정보