問題の説明
私は5台のSolarisシステムを持っていますが、一部はSolaris 10を使用し、一部はSolaris 9を使用しています。
彼らはすべてcrontabに多くのcronjobを持っています。
利用可能なアクティブなcronjobの数を知りたいので、手動で計算します。予約されたこと。
これで、アクティブなcronjobの数を数えるコマンド[私が使用しているbashシェル]を探しています。
私はこれを試しましたが、crontab -l|wc -l
私のcrontabには私のコマンドで計算された多くのコメント行が含まれています。
私が試したこと
crontab -l|wc -l
私が期待していたこと
アクティブなcronjobの数を数えるBashシェルコマンド(コメント行を除く)。
答え1
数字(分)で始まらない項目はすべて削除する必要があります。ただし、これを達成するには、先行するすべてのスペースを削除します。これにより、コメント、空白行、変数の割り当てなどが削除されます。
crontab -l 2>/dev/null | sed 's/^ *//;/^[*@0-9]/!d' | wc -l
答え2
crontab -l | grep -v '^#'
単純な。
数字?
crontab -l | grep -v '^#' | wc -l
または
crontab -l | grep -c -v '^#'
(最後のものはここの答えからインスピレーションを得ました)。
これにより、現在実行中のジョブを意味するアクティブなクローンジョブの代わりに、スケジュールされたクローンジョブ(番号)が提供されます。
答え3
キャラクターはなぜ削除されますか?以下を試してください。
$ crontab -l | grep -c "^[0-9*]"
答え4
次のことができます。
PATH=`getconf PATH`:$PATH # needed on Solaris to get POSIX compliant versions
# of the basic Unix utilities
crontab -l | LC_ALL=C grep -c '^[[:blank:]]*[0-9@*]'
つまり、ASCII 10進数(Solarisは現在後者をサポートしていませんが、他の実装ではサポートしています)で*
始まり、ゼロ個以上のスペース(CロケールではSPCまたはTAB)が前にある行を計算します。@
cron