Confusão sobre systemd, arquivos de ambiente e argumentos de linha de comando para o executável do serviço

2

Estou tentando converter um script upstart em systemd , mas não consigo descobrir como passar argumentos de linha de comando para o executável. Aqui está o script original 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}

Até agora, isso é o que eu recebi:

[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}

Eu li algo sobre arquivos de ambiente, mas não tenho certeza se eles se aplicam ao meu caso, porque eles dizem aqui que" Um serviço não deve mudar suas opções com muita frequência "e" Parâmetros de serviço não mudam regularmente, nem seus arquivos de configuração ", Atualmente, tenho cerca de 130 instâncias dessa tarefa sendo executadas ao mesmo tempo e preciso ser capaz de iniciar e parar a qualquer momento. Precisarei criar um arquivo de ambiente para cada instância? Ou preciso alterar as variáveis em um único arquivo de ambiente e depois iniciar / parar o script?

    
por Ledazinha 01.05.2016 / 04:44

1 resposta

0

Talvez você esteja procurando por instâncias . Veja este discutindo como uma única unidade getty é instanciado tantas vezes quanto desejado, criando um link simbólico para ele, com o nome do arquivo contendo um parâmetro arbitrário que é passado para a unidade, onde ele pode ser recuperado como %I ou %i .

Por exemplo, fazendo

systemctl start [email protected]

primeiro procurará um arquivo com esse nome de arquivo exato, depois removerá a parte ttyUSB0 e procurará um [email protected] file . Dentro da unidade /usr/lib/systemd/system/[email protected] , você verá linhas como

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

que fará com que o getty seja executado com arg ttyUSB0 no lugar do %I .

Posso altamente recomendo a leitura de todas as séries href="http://0pointer.de/blog/projects/systemd-docs.html"> em systemd.

    
por 01.05.2016 / 11:26