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
.
모두 읽어보시길 강력히 추천합니다블로그 시리즈시스템에.