この記事は peep コマンドを macOS 上で使ったり、自前 function を作ったりしたログです。
環境
- OS: macOS Mojave 10.14.6
- Homebrew: 2.1.15-63-g090259b
- Homebrew/homebrew-core (git revision 51ba; last commit 2019-10-25)
- peep: 0.1.2 (rev: f770419/go1.11.4)
- terminal-notifier: 2.0.0
- tmux: 2.9a(border-ascii)
peep の install
Homebrew を使ってインストールしてみます。作成者の Songmu さんの記事 の通り
- $ brew install Songmu/tap/peep
で install できます。
peep-mac: peep + terminal-notifier
peep を install すると peep-notify というコマンドも一緒に install されます。
peep-notify コマンドは Slack に通知したり、macOS の notification center に通知したりできます。
ただ、notification center への通知は音が鳴らずにメッセージだけ表示されます。
軽く読んでみたところ、peep-notify は内部で gosx-notifier を使っていて、Title と Messge のみ設定されています。
(なお、gosx-notifier 自体は通知の音の設定もできるようです。)
peep 自体は pid を監視するコマンドなので、通知に必ずしも peep-notify を使う必要はありません。
terminal-notifier は homebrew に取り込まれているので
- $ brew install terminal-notifier
で Install できます。
peep + terminal-notifier を使って peep-mac function を作ってみました。 zsh で動きます。
- $ peep-mac <PID>
とすると、その pid のコマンド名を表示。
その後、プロセス終了時に terminal-notifier で通知が生成されて "Glass" が鳴ります。便利。
peep-mac-tmux: peep + terminal-notifier + tmux
さて、peep-mac を作ったことで、長いプロセスの実行時、音が鳴るまで別の事ができるようになりました。
しかし、 peep-mac を使っていて思ったのです。「pid 調べるのが面倒」と。
そこで作成したのが peep-mac-tmux function です。
tmux 環境下 + 使い方次第では pid の指定をせずに peep-mac が動きます。
具体的には
- 長いプロセスが実行中の window に pane を追加。
- 追加した pane 上で peep-mac-tmux を実行。
すると良いです。ここまで来ると完全に自分専用感もありますね。
peep-mac-tmux の実装に関しては
- pane は 2 つであること
- 長い process を実行している pane と
- それをこれから監視しようとする pane
- active な pane を tmux list-panes から特定する
- そこで実行されている zsh の pid を取得
- ps -o <ZSH_PID> で zsh が parent になっている process 一覧を取得
- pid を sort -r して、一番上のものを peep-mac に投げる
みたいな感じです。大体良い感じに peep してくれます。
ただ、sort -r で監視対象の pid 取得をするので、pidが 一巡してる時には、上手く指定できない事も。
そういう事態はあまり発生しないので、現状はこの実装で運用してます。何か良い解決策無いかな。
と、いうことで、『実行時間長いから終わったら呼んで』みたいな事ができるので便利、みたいなお話でした。
参考
- 実行中のプロセスの終了を検知して通知をするpeepというのを作った | おそらくはそれさえも平凡な日々
- GitHub - Songmu/peep: Watch a process and execute specified command for notification when finished
- GitHub - deckarep/gosx-notifier: gosx-notifier is a Go framework for sending desktop notifications to OSX 10.8 or higher
- GitHub - julienXX/terminal-notifier: Send User Notifications on macOS from the command-line.
- GitHub - tmux/tmux: tmux source code
- man tmux
0 件のコメント:
コメントを投稿