Adicionando um rótulo ao serviço start-stop-daemon na lista de processos

3

Eu tenho um monte de instâncias de serviço redis, e gostaria de adicionar um rótulo a eles na saída do comando ps . Atualmente vejo:

$ ps aux | grep redis
root     <snipped>   /usr/local/bin/redis-server *:6381                    
root     <snipped>   /usr/local/bin/redis-server *:6380  

Existe uma maneira de ter uma saída como esta:

root     <snipped>   /usr/local/bin/redis-server *:6381 item cache # <== label
root     <snipped>   /usr/local/bin/redis-server *:6380 page cache # <== label

i.e. adicionando um rótulo de texto para identificar facilmente o que é cada uma dessas instâncias.

Existe uma maneira de fazer isso em vez de ter que fazer cópias do binário?

    
por Zabba 23.07.2014 / 01:05

1 resposta

1

Supondo que redis-server não tenha suporte interno para alterar seu próprio nome de comando após a inicialização (alguns programas, especialmente daemons, têm esse suporte), há algumas coisas que você pode fazer:

  • Use um nome de comando alternativo.

    Embora o primeiro argumento na linha de comando ( argv[0] ) seja normalmente o nome do binário usado para invocar um comando (seja o nome completo do caminho ou o nome base), ele não precisa ser. E se não for, então o próprio aplicativo provavelmente não vai notar ou se importar. Mas os shells lançam comandos com argv[0] set seguindo essa convenção, então você precisa inicie-o de uma maneira" especial ".

    Para fazer isso, você provavelmente desejará modificar o script /etc/init.d que inicia este daemon.

  • Crie links físicos para o binário e inicie-os. Isso é semelhante à sua sugestão de copiar o binário, mas as cópias são desnecessárias. Se você usar links físicos, o binário não ocupará espaço adicional em disco e o código (texto) das várias instâncias compartilhará memória, o que não acontecerá com as cópias.

por 24.07.2014 / 07:47