J'ai récemment découvert la montre , mais j'ai du mal à la faire fonctionner avec des commandes relativement sophistiquées.
Par exemple, je voudrais demander watch
d'exécuter la commande suivante zsh
toutes les trois secondes * :
for x in `command_1 | grep keyword | cut -d' ' -f1`; do command_2 "word[word=number]" $x; done
comme vous pouvez le voir, la ligne ci-dessus comprend des guillemets simples, des guillemets doubles, entre autres caractères spéciaux.
J'ai donc essayé:
watch -n 3 "for x in `my_command | grep keyword | cut -d' ' -f1`; do command2 "rusage[mem=7000]" $x; done"
mais j'ai eu:
aucune correspondance trouvée pour x in! @ # $ # ....; terminé
J'ai essayé d'autres combinaisons sans succès. Voici l'une de ces tentatives:
watch -n 3 "for x in $(bjobs -w | grep pre_seg | cut -d' ' -f1); do bmod -R "rusage[mem=7000]" $x; done"
ce qui entraîne également une erreur similaire.
Des idées sur la façon de faire fonctionner cela?
* Je serais également intéressé par des solutions qui fonctionnent surbash
watch
ne vient pas avec les options-x
ni-c
sur ma machine. Je l'ai consulté en ligne et je n'ai trouvé aucune page de manuel qui les mentionne. Que font ces options?-x
indique dewatch
ne pas passer la commande via un shell. Je viens de découvrir que c'est spécifique à Debian / Ubuntu, même si ce n'est pas indiqué comme tel. Le-c
est transmis àzsh
, pas àwatch
.-x
et les-exec
options à la fois existez dans monwatch
(sur gentoo), donc ce n'est certainement pas spécifique à Debian. Peut-être que vous avez comparé avec une autre version dewatch
? Le mien vient du package procps .watch
vient aussi deprocps
Debian. La source officielle n'a pas--exec
. Le paquet dans Debian (et ses dérivés, y compris Ubuntu) ajoute l'option dans un correctif spécifique à Debian (watch_exec_beep.patch
; il s'agit du «correctif d'exécution de Mortys watch» du bogue # 410967 ). Gentoo a peut-être adopté un patch similaire.