cronでありがちな罠
cronでありがちな罠
仕事や趣味でcronを使ったときにありがちな罠をまとめてみた
cronの設定方法がよくわからん
- 一般ユーザーでcronを設定するときはcrontab -eすればいいeはeditのe
- 有名な罠だがcrontab -rすると設定済みのcronが消えるのでやらないこと
cronの書き方がぱっとわからない
- /etc/crontabを見るとサンプルがあるので見るとわかりやすい。crontab上で環境変数を設定できる。
- SHELL:cronが実行されるときに読まれるシェルを指定できる、まあbashから変えることないけど
- PATH:cronが実行されるときに設定されるPATHが指定できる、PATHだけ設定したいならばPATH=$PATH:/opt/your/desired/pathとか設定すればいいのでは
- MAILTO:cronが実行されたときに結果が通知されるメールアドレスを指定できる、Linux上のユーザー名を指定できるしpostfixなどが動いていれば外部のメールアドレスなども指定できる。ちなみにカンマ区切りで複数指定できる。
- 肝心の時刻設定はcrontab.guruなどでcronの記法を試せるサイトがあるので、実際に適当に書いてみて試せばわかりやすい
Crontab.guru - The cron schedule expression editor
$ sudo cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
xenv系(pyenv, rbenv)のパスが通ってないのでcronが実行できない
- cronの実行時にsource ~/.bashrcしてやればとりあえず動く
cronの結果ログが見れない
- 例えばcrontabの設定でMAILTOに何も設定していない場合「新しいメールが /var/spool/mail/{ユーザー名} にあります」とかメールが来る
- そいつをmail -f /var/spool/mail/{ユーザー名}して読めば、中に標準出力が出ており確認できる
mailコマンドの使い方はググってください
cron上で%を文字列に使うとエラーで落ちる
リンク先の解説が詳しいが、「%」は「\%」にしてエスケープしないと動かない
tech.mktime.com
Slackのメッセージを一括削除したいのでslack-cleaner2を使った話
Slackのメッセージを消したいのでslack-cleaner2を使った話
動機
Slack側の設定手順
- https://api.slack.com/ にログインして、管理しているSlackのワークスペースのbotユーザーにトークンを発行する
- botユーザーへのトークンの発行方法とかはググってください
- botユーザーに必要なpermission scopeに関しては、以下のREADMEにあるので読んで設定する
https://github.com/sgratzl/slack_cleaner2#user-token-scopes-by-use-case
すると以下のように見えるはず
- user oauth tokenとbot oauth tokenがあるのだが、普段botとして稼働させる方にはbotのトークンを使用して、管理用のトークンにuser oauth tokenを使えばいいのではと思った
インストール手順
$ python --version Python 3.6.10 $ pip install slack-cleaner2
メッセージの削除
$ python Python 3.6.10 (default, Aug 22 2020, 00:49:22) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from slack_cleaner2 import * >>> // トークンを設定 >>> s = SlackCleaner('xoxp-***') >>> >>> s.users ワークスペースのユーザーを全て出す [xxx, xxx...] >>> [msg for msg in s.c['YOUR CHANNEL NAME'].msgs(with_replies=True)] チャンネルのメッセージを全て出す >>> for msg in s.c['YOUR CHANNEL NAME'].msgs(with_replies=True): ... msg.delete() ... チャンネルのメッセージを全部消す ..........
素晴らしい
Debian10でVirtualBoxが動かないのでvirt-managerを使い始めた
Debian10でVirtualBoxが動かないのでvirt-managerを使い始めた。
Packages for VirtualBox are not available in Debian 10 and won't be in buster-backports either. A recommended alternative is Virtual Machine Manager (buster/virt-manager). See also this link that explains some useful basics for qemu
あれ?Debian10ではVirtualBox使えない(かメンテされてない)みたい。道理で起動しないわけだ。代替としてvirt-managerがあるらしい。
インストールは
$ sudo apt-get install virt-manager
するだけ
試しにUbuntu20をインストールしてみたらうまく動いている。Qemuベースなのかな?