Suprimir aviso do ps -aux no Linux

1

Quando executo o comando ps , recebo um aviso dizendo Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ .

Como faço para suprimir esse aviso? Existe alguma configuração do sistema que devo fazer para isso. O comando que eu disparo é:

[root@localhost home]# ps -aux | grep "curl -s -o Test" 
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
root      4856  0.0  0.0   4044   672 pts/0    S+   07:20   0:00 grep curl -s -o Test
[root@localhost home]# 

Observe que preciso disparar exatamente o mesmo comando acima (não é possível alterar o -aux para aux , não posso redirecionar STDERR output). É por isso que estou procurando uma configuração do sistema que suprime o aviso.

    
por user2318314 20.08.2014 / 21:41

3 respostas

1

O comando ps do Linux pode emular ps implementações de vários tipos de Unix. Defina a variável de ambiente PS_PERSONALITY to bsd para aceitar silenciosamente -aux como "listar todos os processos usando o conjunto de colunas BSD tradicional". De um script de shell:

PS_PERSONALITY=bsd /command/you/cannot/modify

De C:

setenv("PS_PERSONALITY", "bsd", 1);
function_you_cannot_modify();
unsetenv("PS_PERSONALITY");
    
por 21.08.2014 / 02:03
0

A resposta feia é: escrever um script que aceita argumentos parecidos com ps arguments, sanitiza-os (no mínimo, substitui -aux por aux ), e, em seguida, chama /bin/ps com os argumentos higienizados. Chame-o de ps e coloque-o no seu diretório privado bin .

    
por 20.08.2014 / 22:04
0

Você escreve o comando ps como parte de uma sub-rotina - esta solução funciona se for uma função de shell que você chama, ou um script de shell você é source ; Não funciona se você executar o shell script contendo o comando ps .

Você pode definir uma função do shell com o nome ps , que substitui o comando no caminho, e chama o próprio comando real, com algumas modificações da saída, como redirecionar o STDERR:

function ps() {
    command ps "$@" 2>/dev/null
}

Um exemplo usando ls :

$ ls -d /etc /missing
ls: cannot access /missing: No such file or directory
/etc
$ function ls() {          
    command ls "$@" 2>/dev/null
}
$ ls -d /etc /missing
/etc
    
por 21.08.2014 / 02:54

Tags