インターネット速度計測サイトのSpeedtest.net というサイトがあります.
世界中にあるサーバのうち自分のアドレスから近いであろうサーバを選んで速度計測をしてくれるサービスです.
インターネット速度計測サイトのSpeedtest.net というサイトがあります.
世界中にあるサーバのうち自分のアドレスから近いであろうサーバを選んで速度計測をしてくれるサービスです.
ちょっと試したら少し嵌ったのでメモがてら.
$ go get github.com/takumakanari/cronv/cronv $ go build -o ./cronv github.com/takumakanari/cronv/cronv
$ ./cronv -h Usage: Cronv v0.4.1 [OPTIONS] Application Options: -o, --output= path to .html file to output (default: ./crontab.html) -d, --duration= duration to visualize in N{suffix} style. e.g.) 1d(day)/1h(hour)/1m(minute) (default: 6h) --from-date= start date in the format '2006/01/02' to visualize (default: 2019/05/25) --from-time= start time in the format '15:04' to visualize (default: 02:50) -t, --title= title/label of output (default: Cron Tasks) -w, --width= Table width of output (default: 100) Help Options: -h, --help Show this help message
$ crontab -l | ./cronv
2019-06-01 ADD: 以下のtab が含まれているときにエラーとなる問題は修正されました😖
しかし,missing field(s)
とか syntax error in year field:
とかのエラーになってしまう.
$ printf "* * * * *\tcommand\n" * * * * * command $ printf "* * * * *\tcommand\n" | ./cronv panic: Failed to analyze cron '* * * * * command': syntax error in year field: 'command' goroutine 1 [running]: panic ../../../src/libgo/go/runtime/panic.go:554 main.main /home/mk/go/src/github.com/takumakanari/cronv/cronv/main.go:33
タブ区切りをやめてスペース区切りにするとエラーが出ない
$ printf "* * * * * command\n" | ./cronv [Cron Tasks] 1 tasks. [Cron Tasks] './crontab.html' generated.
ということでとりあえずタブをスペースに変換することにした.
$ crontab -l | tr -s '\t' ' ' | ./cronv [Cron Tasks] 8 tasks. [Cron Tasks] './crontab.html' generated.
作成された crontab.html
を w3m で……ほとんど表示されない.
もう少しリッチな JavaScript の動くウェブブラウザで開くとOK.
これからの6時間分の様子が見える.
-d, --duration
option で表示する時間間隔が指定できる.
開始日時は,--fron-date
, --from-time
option で指定できる.
以下の例では 2019-05-25 00:00:00 から1日分の表示になる.
$ crontab -l | tr -s '\t' ' ' | ./cronv -d 1d --from-date=2019/05/25 --from-time=00:00
ちなみに1ヶ月も試したが,ウェブブラウザで表示するのにとても時間が掛かった.
$ dpkg-query -W cron gccgo-go cron 3.0pl1-128.1ubuntu1 gccgo-go 2:1.10~4ubuntu1 $ lsb_release -d Description: Ubuntu 18.04.2 LTS $ uname -m x86_64
crontab で実行されたコマンドの出力はメールで送られますが,このときの件名は「Cron <ユーザ名@ホスト名> 実行コマンド」のようになります.
15 7 * * * echo "cron subject"
Subject: Cron <matoken@T430s> echo "cron subject" cron subject
Cron <matoken@T430s> nice -n 19 ionice -c 3 rsync -avxze "ssh -i…… Cron <root@T430s> nice -n 19 ionice -c 3 rsync -avxze "ssh -i…… Cron <root@T430s> nice -n 19 ionice -c 3 rsync -avxze "ssh -i……
分かりづらいので自分で件名を付けたいところです.
: は shell の組み込み関数で何もせず正常終了します.
コマンドなので # と違い,; の後にコマンドを書くとその後のコマンドは解釈されます.
$ : #何もしない $ : hoge $ : echo hoge $ : rm -rf * $ : $(hostname) #コマンドも展開せず何もしない $ : `whoami` $ : hoge; echo fuga #;の後は解釈される fuga $ # hoge $ # hoge; echo fuga
これをcrontabの頭に書くとこういう感じになります.
29 6 * * * : cron subject; echo "hello"
Subject: Cron <matoken@T430s> : cron subject; echo "hello" hello
少しわかりやすくなりました.
これはちょっと反則な感じがするのですが件名にコマンド実行結果を入れたり,頭の部分も書き換えたい場合はcronだけではできなさそうなのでmailコマンド経由で送信してみます.今回mailutilsのmailコマンドを利用しましたが,bsd-mailxやmutt等々ももちろん使えます.
45 6 * * * echo "cron test" | mail -s "$(hostname)@$(whoami) cron Subject : $(date +\%F)" matoken+cron@example.com
Subject: T430s@matoken cron Subject : 2018-09-13 X-Mailer: mail (GNU Mailutils 3.4) cron test
mail コマンドの -s オプション部分が件名になります.その後ろが宛先のメールアドレス.bodyはcronの出力をパイプから受け取ります.
STDERR の出力があった場合cronでメールが送られてしまいます.mailコマンドと合わせて1度に2通届くことに.
実行コマンドの後ろに 2>&1 を付けて STDERR を STDOUT に渡してmailコマンドだけにします.
45 6 * * * echo "cron test" 2>&1 | mail -s "$(hostname)@$(whoami) cron Subject : $(date +\%F)" matoken+cron@example.com
crontab の場合コマンドの出力がなければメールが送られませんが,このコマンドでは NULL でもメールが送信されます.
未解決.
MAILTO=""
20 6 * * * echo "cron subject" > /dev/null 2>&1
/var/spool/mail/ユーザ名 のローカルにはメールがどとくけど,インターネット上のメールアドレスを指定しても届かない場合メールサーバの設定が出来ていないかもしれません.メールサーバ(sSMTP/msmtp等はデーモンが起動しないのでメールを受け取らず送信するだけならおすすめ)を設定してから再度試してみましょう.
$ man cron | grep -m1 cron cron - daemon to execute scheduled commands (Vixie Cron) $ dpkg-query -W cron mailutils cron 3.0pl1-128.1ubuntu1 mailutils 1:3.4-1 $ lsb_release -d Description: Ubuntu 18.04.1 LTS $ uname -m x86_64
$ man cron | grep -m1 cron cron - 予定されたコマンドを実行するデーモン(Vixie Cron) $ dpkg-query -W cron mailutils cron 3.0pl1-130 mailutils 1:3.4-1+b1 $ lsb_release -d Description: Debian GNU/Linux unstable (sid) $ uname -m x86_64