watch
コマンドは次のように文書化されています:
SYNOPSIS
watch [-dhvt] [-n <seconds>] [--differences[=cumulative]] [--help]
[--interval=<sec-onds>] [--no-title] [--version] <command>
[...]
NOTE
Note that command is given to "sh -c" which means that you may need to
use extra quoting to get the desired effect.
コマンドを sh -c
に与える部分 jobs
を意味します watch
経由で実行しているコマンド ジョブを生成したシェル セッションとは異なるシェル セッションで実行されているため、他のシェルは表示されません。問題は基本的に jobs
はシェルに組み込まれており、表示したいジョブを生成したシェルで実行する必要があります。
最も近い方法は、ジョブを生成したシェルで while ループを使用することです:
$ while true; do jobs; sleep 10; done
シェル起動スクリプトで関数を定義して、使いやすくすることができます:
myjobwatch() { while true; do jobs; sleep 5; done; }
myjobwatch
と入力するだけです。 .
ループよりも watch
を使う傾向があります grep
で 実行中のジョブ、例:
watch 'ps u | grep rsync'
完全ではありませんが、while ループよりはましです :)