Ver comandos completos na saída ps

16

Ao executar pscom a -fopção no PuTTY (para ver o comando correspondente a cada processo), as linhas que são maiores que a largura do terminal não são totalmente visíveis (elas não são agrupadas em várias linhas).

Como forçar a quebra de linha para poder ver os comandos completos (em várias linhas, se necessário) durante a execução ps -f?

sdabet
fonte
Não é uma resposta, mas se eu executar ps -f no emulador de terminal reduzido, a saída será agrupada em várias linhas. Qual terminal você está usando?
MatthewRock
1
Isso poderia ser uma duplicata de: stackoverflow.com/questions/2159860/… #
21415
@MatthewRock Eu uso o PuTTy aqui, você acha que isso é específico?
Sdabet
1
O @Tensenson não pode fechar como uma duplicata entre sites.
muru 14/09/15
1
@fiddler ah, não podemos migrar velhas questões sem intervenção moderador, e mesmo assim não é recomendado: meta.stackexchange.com/questions/8004/...
Muru

Respostas:

15

Se você possui uma psimplementação em conformidade com POSIX , tente

ps -f | more

Observe que recentemente alteramos o comportamento e, se você tiver uma implementação que segue o POSIX questão 7 tc2, tente:

ps -wwf | more

Being Nós somos as pessoas que têm teleconferências semanais para discutir a evolução do padrão POSIX.

esperto
fonte
1
ps -wwffunciona muito bem.
Sdabet
8

Provavelmente encontrei a resposta para sua pergunta no Stack Overflow . Nas palavras de Dennis Williamson :

É provável que você esteja usando um pager como menos ou mais, pois a saída do ps aux é maior que uma tela. Nesse caso, as opções a seguir farão com que (ou force) linhas longas sejam quebradas em vez de truncadas.

ps aux | less -+S

ps aux | most -w Se você usar um dos seguintes comandos, as linhas não serão quebradas, mas você poderá usar as teclas de seta ou outras teclas de movimento para rolar para a esquerda e para a direita.

ps aux | less -S # use as teclas de seta, ou Esc+ (e Esc+ ), ou Alt+ (e Alt+)

ps aux | most # use as teclas de seta, ou <e >(a guia também pode ser usada para rolar para a direita) As linhas são sempre quebradas para obter mais e pág.

Quando ps auxé usado em um tubo, a opção w é desnecessária, pois o ps só usa a largura da tela quando a saída é para o terminal.

(Nota: isso se aplica ao Linux não incorporado, o psutilitário em outras variantes do Unix pode funcionar de maneira diferente.)

tommygun
fonte
@muru espero que agora esteja melhor. Obrigado por esclarecer tudo!
tommygun
E desculpe por causar a bagunça.
MatthewRock
1
Sua resposta se aplica apenas /usr/ucb/pse mesmo com este programa você precisaria wwcomo /usr/ucb/pslimite da largura de saída para 80 se a saída for um tubo. Para o ps padrão POSIX, veja minha resposta.
schily
1
@schily Esta resposta está perfeitamente correta para o pscomando usual no Linux não incorporado, que é o que a maioria dos leitores aqui possui.
Gilles 'SO- stop being evil'
1
Mas o OP não definiu / linux como tag.
schily
3

Há também outra solução simples:

echo "$(ps afx)"
cinático
fonte
ou apenasps afx
nyxee 26/01
1
apenas "fax ps" vai cortar de depois de certa quantidade de caracteres (eu acho que 72 comprimento terminal padrão) do echo "$ (seu comando)" sintaxe é para não cortá-lo
cinatic
Obrigado por isso. Agora, o comando se comporta de maneira completamente diferente no MacOS (ouço que se baseia BSD) e no Ubuntu ( Linux). O Linux não mostra nenhuma diferença quando você está echoou não. Mas, o MAC OS X está imprimindo o máximo que o terminal pode mostrar. Eu estou usando iTerm2e zsh. O MAC não permite a --fopção.
nyxee
3

Para simplificar, tente o seguinte: ps auxfww

fibonacci
fonte
0

O comando para MacOS é um pouco diferente echo "$(ps aux)"

Jibeex
fonte
Você não quer passar echodesnecessariamente. Observe também que várias outras respostas já mencionam ps auxde alguma forma. Sugiro comentários ou edições sobre as respostas existentes para apontar que elas são boas para o MacOS (que é o que suponho que você quis dizer).
Jeff Schaller
0

Ou você poderia fazer

IFS='$';for line in $(ps axf); do echo $line; done
Stephane Mailloux
fonte
Estou curioso, por que você está definindo IFSpara $?
AdminBee 20/02