Hazy Idea Storage

エンジニアリング全般についての備忘録

ターミナルに過去打ち込んだコマンドをcronで自動記録してみた

結論

ターミナルに打ち込んだコマンド履歴を自動で取得してGithubリポジトリにpushするようにした

目的

  • 作業の振り返りをしやすくしたい
  • コマンドのメモを手動で取るのは面倒だし忘れがち
  • 自動化したい

詳細

  • 実行環境 Centos7.7

コマンド履歴を記述するシェルスクリプトの作成

  • historyコマンドでコマンド履歴を出力 -> 履歴を追記し、日付をファイル名末尾に付けて保存
  • 自動でGitリポジトリにpush
  • task.shファイルを作成して以下を記述
#!/bin/sh
cd /home/{ユーザー名}/memo
history -r ~/.bash_history
history -a
history > history_$(date '+%Y%m%d').log
git add history_$(date '+%Y%m%d').log
git commit -m "history_commit"
git push

cronie-noanacronの導入

  • 指定時間ちょうどにジョブを実行させるにはcronie-noanacronをインストール必要があるので導入
  • cronie-anacronが既に入っていますが、アンインストールします
sudo yum -y install cronie-noanacron
sudo yum -y remove cronie-anacron

crontabの設定

  • crontabで定期実行のタイミングと、実行対象のファイルを指定
sudo crontab -u {ユーザー名} -e
  • エディタが開くので以下を記述。毎日19時にtask.shを実行するよう今回は指定
0 19 * * * /home/{ユーザー名}/memo/task.sh

結果

こんな感じでリポジトリに過去のコマンド履歴を保管できます f:id:dimn_zkym:20200121231905p:plain

所感

  • シェルスクリプトはほとんど書かないのでもっと上手なやり方がありそう
  • 当初は実行したい処理をcrontabのエディタ内に直接書いていたが、crontab実行時の挙動が怪しかったのでシェルスクリプト化した
  • historyコマンドで取得する履歴を当日に限定できれば、リポジトリ内に保存するテキストを見やすくできそう
  • この記事もリポジトリにpushしたコマンド履歴ファイルを見ながら書けたので、振り返りのための仕組みとしてはいい感じ