Projeto de Gerenciador de Processos - Pesquisando os processos por usuário [RESOLVIDO]

1. Projeto de Gerenciador de Processos - Pesquisando os processos por usuário [RESOLVIDO]

José Kaio da Silva Gomes
jose-linux

(usa Debian)

Enviado em 18/12/2021 - 15:47h

Olá, pessoal!
Estou tentando criar um gerenciador de processos com o zenity. Neste projeto, há uma função que exibe todos os processos pesquisando pelo nome do usuário. Fiz um script para implementar essa função, porém ele retorna "Usuário inexistente!", mesmo o usuário existindo na minha máquina. 1° pergunta: Como eu posso resolver isso?
2° pergunta: Como eu iria implementar essa função para encontrar os processos do usuário root?

#!/bin/bash

arqusr=$(ps -U "$USER")

inp=$(zenity --forms --title="Processos por usuário" \
--add-entry="Você deseja ver os processos de qual usuário?")
if [ "$inp" == "$arqusr" ]; then
zenity --list="$arqusr"
else
echo "Usuário inexistente!"
fi


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 18/12/2021 - 21:45h


jose-linux escreveu:

Olá, pessoal!
Estou tentando criar um gerenciador de processos com o zenity.
Neste projeto, há uma função que exibe todos os processos pesquisando pelo nome do usuário.
Fiz um script para implementar essa função, porém ele retorna "Usuário inexistente!", mesmo o usuário existindo na minha máquina. 1° pergunta: Como eu posso resolver isso?
2° pergunta: Como eu iria implementar essa função para encontrar os processos do usuário root?

#!/bin/bash

arqusr=$(ps -U "$USER")

inp=$(zenity --forms --title="Processos por usuário" \
--add-entry="Você deseja ver os processos de qual usuário?")
if [ "$inp" == "$arqusr" ]; then
zenity --list="$arqusr"
else
echo "Usuário inexistente!"
fi

Jose , boa noite.
execute o comando:
arqusr=$(ps -U "$USER")
após saber o nome do usuário.
A var USER, é o usuário logado.....
----------------------------------------------------------------
O Erro está no condicional,
Supondo que a var inp tem o nome de um usuário,
A condição:
if [ "$inp" == "$arqusr" ]; then
É sempre "falsa"
-------------------------------------
Para saber se o Usuário existe....
grep -q "$inp" /etc/passwd && echo Existe || echo Nao Existe
-----------------------------------

Sugestão:
#!/usr/bin/env bash

nome=$(zenity --forms --text "Ver os Processos de qual usuário?" --add-entry "Nome:" "")
if [ "$nome" ];then
grep -q "${nome}" /etc/passwd && ps -U "$nome" || echo "Usuário Nao Existe"
fi




______________________________________________________________________
Importante:
Se te AJUDEI, me AJUDE,
MARCANDO a MELHOR RESPOSTA.
______________________________________________________________________
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________


3. Re: Projeto de Gerenciador de Processos - Pesquisando os processos por usuário [RESOLVIDO]

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 18/12/2021 - 21:27h

Na linha-- if [ "$inp" == "$arqusr" ]; then -- vc compara a variável inp que registra a seleção com a variável arqusr, que contém a lista dos processos disparados pelo usuário logado.



4. Re: Projeto de Gerenciador de Processos - Pesquisando os processos por usuário [RESOLVIDO]

José Kaio da Silva Gomes
jose-linux

(usa Debian)

Enviado em 19/12/2021 - 10:44h

Obrigado pelas contribuições, pessoal!



5. Re: Projeto de Gerenciador de Processos - Pesquisando os processos por usuário [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/12/2021 - 19:54h


jose-linux escreveu:

Obrigado pelas contribuições, pessoal!

Por nada, Jose...
Segue um "bônus".
cat awk.out
{
cmd[$4]++
user[$4] = $1
cmem[$4] += $2
ccpu[$4] += $3
mem += $2
cpu += $3
}

END {
for (x in cmd) {
if (cmem[x] > 0 || ccpu[x] > 0) {
print cmd[x], cmem[x], ccpu[x], user[x], x
}
}
}

END {
print "\nTt: " mem " " cpu "\n999 Mem Cpu User Cmd"
}

ps -U "$nome" -o user,pmem,pcpu,comm|awk -f awk.out|sort -nr|column -t|sed -r '1s/[9]+/Qtd/'; 

Agrupa os processos, soma o consumo de memória e cpu, por processo e total....
Interessante...
Esse "monte de pipes", no final, serve para ordenar e formatar a saída.


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts