Fornecer descrição para um comando para visibilidade do comando 'ps'

2

Portanto, o problema para o qual quero encontrar uma solução é que, ao efetuar login em um servidor (tenho algumas instâncias do Solaris e do RHEL), tento descobrir quais aplicativos estão sendo executados:

$ ps -auxww | grep <thing I look for, usually Java>

E recebo uma boa lista de processos, PIDs, detalhes extras e com todo o nome do processo e parâmetros que foram executados com ele. Embora esse geralmente forneça informações suficientes para que eu descubra o que está sendo executado, alguns servidores são executados de forma diferente. Eu posso ter um servidor que tenha várias instâncias de um servidor de aplicativos usado para finalidades diferentes. Outros processos são remanescentes de um processo suspenso que eu misturei com processos não congelados . Eu não quero desligar todas as instâncias do java porque não consigo descobrir qual processo precisa ser eliminado.

A solução que gostaria de fornecer é durante meus scripts de start-up, gostaria de acrescentar ou anexar a um processo algum texto que me permita lançar uma breve descrição. Existe algo que possa me permitir fazer isso? ?

Se o que eu estou pedindo parece impossível / bobo / completamente-fora-de-seu-roqueiro, estou aberto a soluções alternativas que me dão alguma habilidade para realizar a mesma coisa. Estou aberto a ideias, mas este surgiu como factível.

    
por Nick Klauer 21.01.2010 / 05:32

2 respostas

0

Aqui está um exemplo da sugestão de gravvity :

$ MARKER=snooze sleep 120&
$ ps ew | grep -o ".*[M]ARKER=snooze"
11741 pts/2    S      0:00 sleep 120 MARKER=snooze

A opção e faz ps imprimir o ambiente do processo. A opção -o e a regex fazem grep cortar qualquer parte do ambiente após a parte que estamos procurando, mas eu não apostaria nela sempre tendo resultados tão limpos (mais do ambiente pode ser impresso). Colocar parte do padrão entre colchetes executa a função que as pessoas costumam usar grep -v para - eliminar o grep dos resultados.

    
por 22.01.2010 / 06:33
0

Parece que você deseja marcar cada processo com exclusividade para que você possa descobri-lo facilmente. Eu realmente ouvi falar disso sendo feito em um grande corp por sua equipe de monitoramento - cada aplicativo tem um código único que pode ser facilmente encontrado com um ps e grep.

Em java você pode usar -D para definir qualquer variável, então você pode simplesmente adicionar algo como "-Dmonitoringid=". O processo iria ignorá-lo, mas você pode facilmente fazer isso.

Como alternativa, você pode dividir seus servidores de aplicativos para cada execução com um ID específico para o aplicativo que está sendo exibido. Atualmente, executamos um grande farm de servidores de aplicativos J2EE, com muitos aplicativos em cada caixa, no entanto, cada um é executado sob seu próprio ID para dividir propriedade, acesso, controles, etc.

Isso também significa que encontrar qualquer servidor de aplicativos em um host é tão simples quanto: ps <whichever ps args you like best> | grep java | grep <uid> | grep -v grep

    
por 21.01.2010 / 16:28