Obrigado a @ Stéphane pela ótima resposta. Mas no meu caso, a melhor solução foi agrupar meus scripts como um aplicativo do Mac OSX. Você pode controlar o nome do seu processo no Info.plist do seu projeto.
Estou tentando alterar a saída de lsof -i4TCP:PORT para incluir um nome personalizado. Isso me ajudará a identificar o processo do servidor iniciado pelo meu daemon. Abaixo está uma foto com a seta apontando para o que eu gostaria de controlar.
Eu criei uma gem customizada, executei o processo lá e ela ainda diz Ruby. Em vez de descer a "toca do coelho", imaginando se alguém mais teve essa necessidade. Eu gostaria essencialmente de fazer exatamente o que a janela de encaixe fez e mostrar o processo marcado com o nome do meu programa.
Você precisa definir o nome do processo. Em alguns sistemas, atribuir um valor a $0 funcionaria, mas não no Linux (pelo menos não na minha versão de ruby ), em que ruby apenas define a lista arg (conforme visto em ps -f ou ps -o args ), mas não o nome do processo (como em lsof ou ps / ps -o comm ) ( perl -e '$0 = "foo"' funcionaria como perl define o nome do processo e a lista de argumentos).
Para isso, no Linux, você precisa fazer um:
prctl(PR_SET_NAME, "newname")
chamada do sistema.
Enquanto você poderia fazer:
$ ruby -e 'syscall(157, 15, "foo"); system("ps")'
PID TTY TIME CMD
5679 pts/4 00:00:01 zsh
8639 pts/4 00:00:00 foo
8641 pts/4 00:00:00 ps
O valor da chamada do sistema seria dependente da arquitetura (aqui 157 para amd64).
No entanto, o grepping para prctl no código-fonte de ruby não traz nada, então suspeito que não haja suporte pronto para isso em ruby . Process.setproctitle() também não define o nome do processo.
@Jessehz no SO tem uma solução usando fiddle para fazer uma chamada para a função pctrl() na biblioteca C (assumindo um ruby dinamicamente vinculado, suponho):
$ ruby -e 'require "fiddle"; Fiddle::Function.new(
Fiddle::Handle["prctl".freeze], [Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP],
Fiddle::TYPE_INT).call(15, "foo"); system("ps")'
PID TTY TIME CMD
5931 pts/5 00:00:02 zsh
8943 pts/5 00:00:00 foo
8945 pts/5 00:00:00 ps