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

すべて読むことを強くお勧めしますブログシリーズシステムに。

関連情報