ファイルにテキストを書き込むスクリプトがあります。シェルから手動で呼び出すと正常に動作しますが、cronから呼び出すと正しく動作しないようです。ファイルが作成されましたが、何も記録されませんでした/tmp/tx_buf
。スクリプトは次のとおりです。
#!/bin/bash
declare -i Threshold=1000
tmpfile="/tmp/tx_buf"
if [ -e $tmpfile ]
then
echo "$tmpfile exists, read value"
typeset -i last=$(cat $tmpfile)
echo $last
fi
typeset -i val=$(cat /sys/class/net/eth0/statistics/tx_packets)
echo $val > $tmpfile
declare -i diff=`expr $val - $last`
echo "difference: $diff"
if [[ "$diff" -gt "$Threshold" ]]
then
echo "music is playing, invoke action"
`xdotool mousemove_relative 1 1`
else
echo "no music playing, ignore"
fi
なぜ、驚いたの?
答え1
次の方法でトラブルシューティングを実行できます。
スクリプトヘッダーを次のように変更します。
#!/bin/bash 1>/tmp/$0.log 2>&1 を実行します。 セット-x ...残りのスクリプトをここに挿入してください...
cronがスクリプトを起動したら、次のファイルを見つける必要があります。
/tmp/.log
これは、実行時に何が起こっているのかに関する詳細な情報を提供する必要があります。