Eu aprendi recentemente sobre o relógio , mas estou tendo problemas para fazê-lo funcionar com comandos relativamente sofisticados.
Por exemplo, eu gostaria de pedir watch
para executar o seguinte comando a zsh
cada três segundos * :
for x in `command_1 | grep keyword | cut -d' ' -f1`; do command_2 "word[word=number]" $x; done
como você pode ver, a linha acima inclui aspas simples, aspas duplas, entre outros caracteres especiais.
Então eu tentei:
watch -n 3 "for x in `my_command | grep keyword | cut -d' ' -f1`; do command2 "rusage[mem=7000]" $x; done"
mas então eu tenho:
nenhuma correspondência encontrada para x em! @ # $ # ....; feito
Eu tentei outras combinações sem sucesso. Aqui está uma dessas tentativas:
watch -n 3 "for x in $(bjobs -w | grep pre_seg | cut -d' ' -f1); do bmod -R "rusage[mem=7000]" $x; done"
o que também resulta em um erro semelhante.
Alguma idéia de como fazer isso funcionar?
* Eu também estaria interessado em soluções que funcionam embash
watch
ele não vem com as opções-x
nem-c
na minha máquina. Procurei on-line e não encontrei nenhuma página de manual que os mencionasse. O que essas opções fazem?-x
dizwatch
para não passar o comando através de um shell. Acabei de descobrir que isso é específico para o Debian / Ubuntu, mesmo que não seja indicado como tal. O-c
é passado parazsh
, não parawatch
.-x
e-exec
existem no meuwatch
(no gentoo), então isso definitivamente não é específico do Debian. Talvez você tenha comparado com alguma outra versão dowatch
? O meu vem do pacote procps .watch
vem doprocps
Debian. A fonte oficial não tem--exec
. O pacote no Debian (e derivados, incluindo o Ubuntu) adiciona a opção em um patch específico do Debian (watch_exec_beep.patch
é o "patch do Mortys watch exec" do bug # 410967 ). O Gentoo pode ter adotado um patch semelhante.