Existe uma maneira de ter um processo em segundo plano em execução contínua que possa ser controlado por mim (um usuário normal não root)?
Tudo o que preciso fazer é iniciar, parar e reiniciar o processo. Monitorar por PID e enviar SIGHUP ou SIGINT para encerramento é adequado. Não há problema em usar um script bash complicado, não precisa ser algo que abrange todo o sistema. Só para mim.
Eu também preciso muito que ele não pare quando eu sair do ssh.
Existe uma maneira de fazer isso no RHEL 6.4?
Responder1
tela ou tmux
Claro que você pode iniciar processos e executá-los continuamente usando um multiplexador de terminal, como screen ou tmux. Os processos podem continuar a persistir em uma sessão de tela ou tmux, e você pode conectar/desconectar a qualquer um (tela ou tmux) conforme necessário.
plano de fundo
Você pode executar qualquer processo que desejar, colocá-lo em segundo plano e desconectá-lo do terminal atual usando o comando disown
.
$ disown -a
Além disso, se você deseja apenas iniciar um processo e não precisar colocá-lo em segundo plano, disown
você pode usar o comando nohup
.
$ nohup myexec &
Ao sair do shell, myexec
ele continuará em execução.
Exemplo
Inicie um processo falso.
$ sleep 12345 &
[1] 24339
$
Certifique-se de que podemos ver:
$ pgrep -f "sleep 12345"
24339
Mas ainda está conectado ao nosso terminal:
$ jobs
[1]+ Running sleep 12345 &
Então vamos disown
lá:
$ disown -a
$ jobs
$
Veja que ainda está em execução:
$ pgrep -f "sleep 12345"
24339
Agora vamos sair e fazer login novamente. Veja que ainda está lá:
$ pgrep -f "sleep 12345"
24339
Você pode encerrar esse processo a qualquer momento usando meios padrão:
$ pkill -HUP -f "sleep 12345"
$ pgrep -f "sleep 12345"
$
O acima enviará o sinal HUP
para um nome de processo que corresponda ao padrão “sleep 12345”. A verificação dupla mostra que agora desapareceu.