Inicie o aplicativo no arranque

2

Atualmente, estou usando o RHEL 7.0 para nosso projeto. Eu tenho um aplicativo embeded que eu quero executar na inicialização. Eu tenho um arquivo exe para o mesmo. Eu tentei usar o comando systemctl mas não ajudou. Eu também tentei editar o arquivo inittab, mas isso não ajudou muito. Eu também tentei adicionar um arquivo rc.local e editar o rc.d para adicionar a execução de rc.local, mas ele disse que o arquivo não pode ser modificado. (Eu estava no modo sudo quando tentei isso).

Eu gostaria de iniciar o aplicativo na inicialização sem solicitar que um usuário faça o login. Também onde devemos manter nosso exe no sistema de arquivos para que ele seja detectado na inicialização. Alguém pode me orientar sobre como posso conseguir isso?

    
por Sid411 04.12.2014 / 13:46

1 resposta

5

Você pode usar o seguinte arquivo de unidade como modelo:

[Unit]
Description=A Test Service That Prints the date
After=network.target
[Service]
EnvironmentFile=-/etc/sysconfig/myservice
ExecStart=/usr/bin/bash -c "/usr/bin/date >> /now.txt" $MYSERVICE_ARGS
[Install]
WantedBy=multi-user.target

Salve em /etc/systemd/system/ com uma extensão de arquivo .service (por exemplo /etc/systemd/system/myservice.service )

Todas as variáveis de ambiente que são necessárias para o seu aplicativo podem ser colocadas em /etc/sysconfig/myservice , incluindo a criação de uma variável para manter suas opções de linha de comando:

MYSERVICE_ARGS=--posix

(Se você usar uma variável para as opções de linha de comando, adicione a variável ao seu comando em ExecStart da seguinte forma: ExecStart=/usr/local/bin/myservice $MYSERVICE_ARGS )

Teste com:

# systemctl start myservice

Agora você deve ter um arquivo /now.txt que tenha a data / hora anexada toda vez que isso for executado.

Ativar para iniciar na inicialização com:

# systemctl enable myservice

Agora, ele deve iniciar automaticamente depois que a rede aparecer.

Altere a linha ExecStart para executar seu aplicativo. Lembre-se que systemd não executa ExecStart em uma shell, portanto, se você precisar de redirecionamento, por exemplo, será necessário executar bash -c conforme o exemplo. Além disso, não haverá uma variável $PATH , portanto, use caminhos completos. O aplicativo será executado como usuário root .

Existem muito mais opções que você pode usar - leia a página de manual . Além disso, navegue pelos arquivos da unidade do seu sistema em /usr/lib/systemd/system .

    
por 04.12.2014 / 14:41

Tags