質問: 特定の騒音レベルに達した場合に、(ペナルティとして)一定期間にわたってマシンを「空白の画面」にするにはどうすればよいですか? 私の子供たち(4と5)は、コンピューターでゲームをするときに大声を出しました。私はこれに対する効果的な治療法を見つけました。大きな音が聞こえたら、ゲームコンピュータに向かってsshして、chvt 3; sleep 15; chvt 7 linuxでは15秒間画面が消えます。私は彼らがコンピューターは大きな音が好きではないと言った。彼らはこれを完全に信じ、許しを求めてコンピュータに頼みます。彼らははるかに静かになりましたが、私が幸せになるほどのレベルではなかったので、この教育プロセスを続ける必要があります。しかし、私はこれを手動で行うことを常に避けているわけではありません。これを自動化することは可能ですか?マイクが箱に取り付けられています。音量のレベルがあるしきい値を超えたら、コマンドを実行します。
回答: これは私が見た中でもっと楽しい質問の一つです。私はそのようなすばらしい答えに対して tucuxi に感謝します。 bashスクリプトとして設定したこと#!/bin/bash threshold=0.001 # we should check that sox and arecord are installed if [ $1 ]; then threshold=$1; fi while [ 1 -gt 0 ]; do if(( $(echo "$(sox -t .wav '|arecord -d 2' -n stat 2>&1|grep -e 'rms.*amplitude'|tr -d ' '|cut -d ':' -f 2 ) > $threshold"|bc -l) )) then chvt 3; sleep 5; chvt 7; fi done