Não é um bom caminho, mas se você realmente se sentir relutante em criar um script. Você pode tentar eval
.
watch eval 'cat /proc/$(ps ax | grep processname | grep -v grep | awk '"'"'{print $1}'"'"')/status'
Oi, eu tenho um problema ao executar o comando watch da seguinte forma:
watch cat /proc/$(ps ax | grep processname | grep -v grep | awk '{print $1}')/status
O comando funciona quando eu inicio. No entanto, reinicio o processo que está sendo observado e o comando watch ainda usa o ID do processo antigo. Quero que atualize o id do processo e mostre o status de um novo processo com o mesmo nome. A parte $(ps ax | grep processname | grep -v grep | awk '{print $1}')
é obviamente executada apenas no início. Como posso fazer com que seja reavaliado toda vez que o relógio atualizar a saída?
Eu não gostaria de colocar o comando cat em um script bash e executar esse script do relógio.
Salve o seguinte como, por exemplo, ps-status.sh
em algum lugar em seu $ PATH e torne-o executável com chmod +x
:
#!/bin/sh
[ -z "$1" ] && echo "process name required" && exit 1
pid="$(pgrep -f "$1")"
[ -z "$pid" ] && echo "no such process: $1" && exit 1
countpids="$(echo "$pid" | wc -l)"
[ "$countpids" -gt 1 ] && "Warning: more than one pid matches $1" && exit 1
cat "/proc/$pid/status"
Em seguida, execute watch
da seguinte forma:
watch ps-status.sh processname
$pid
provavelmente deve ser uma matriz, mas isso exigiria bash em vez de apenas sh:
#!/bin/bash
[ -z "$1" ] && echo "process name required" && exit 1
pids=( $(pgrep -f "$1") )
[ "${#pids[@]}" -eq 0 ] && echo "no such process: $1" && exit 1
[ "${#pids[@]}" -gt 1 ] && echo "Warning: more than one pid matches $1"
# display first matching PID, even if there were more than 1 matching.
cat "/proc/${#pids[0]}/status"
script.sh
#!/bin/bash
ps -eaf | grep -i processname| grep -v grep |awk '{print $2}'
/etc/init.d/servicename restart
explicação
agende o crontab para cada 1 minuto
Em seguida, use o comando watch abaixo para ver a diferença no ID do processo depois de reiniciar o nome do processo
watch -n 60 script.sh
Tags watch