tmux + keep-one-running コマンドで仮想通貨 bot のお手軽デーモン化

こんにちは、@supermomongaです。

仮想通貨 botter Advent Calendar 2021 のカレンダー 17 日目の記事です。

今回は Ubuntu における仮想通貨 bot のデーモン化運用について、雑でお手軽な方法をご紹介します。本格的な(=ちゃんとした)方法でデーモン化を行いたい方は systemd などの init プロセスを用いるなどしてください。

tmux, run-one パッケージのインストール

sudo apt install -y tmux run-one

お手軽自動再実行

#keep-one-running [常に実行しておきたいコマンド]
keep-one-running python ./bot1.py

まず、keep-one-running とは run-one パッケージに付属しているコマンド群の 1 つで、指定したコマンドを 1 プロセスだけ常に起動し続けてくれます。上記の例で言うと、python ./bot1.py というコマンドを常に 1 プロセスだけ起動し続けてくれます。python ./bot1.py が何らかの理由で終了した場合、自動で再度起動してくれるという意味ですね。

Cloud9 などのウェブ IDE のターミナルで bot プロセスを稼働させている方はこの keep-one-running コマンドを利用するだけで良いのですが、ssh で直接サーバーに接続している方の場合、ssh 接続を解除すると keep-one-running コマンド自体のプロセスが終了してしまうため、追加で tmux コマンドを用いて keep-one-running のデーモン化(正確にはデーモン化ではありませんが)を行います。

お手軽デーモン化

#tmux new-session -d -s [セッション名] '[デーモン化したいコマンド]'
tmux new-session -d -s bot1-session 'keep-one-running python ./bot1.py'

tmux は仮想的なターミナルセッションを立ち上げて管理してくれます。立ち上げたセッションは ssh を切断した後もバックグラウンドで生き続けます。実は Cloud9 も内部的にこの tmux コマンドを用いてターミナルやプロセスの永続化を行なっています。

上記コマンドで立ち上げたセッションに接続(アタッチと言います)したい場合は以下のコマンドを利用します。

#tmux attach -t [既存のセッション名]
tmux attach -t bot1-session

アタッチされたセッション内では普通のターミナルと同様に操作できます。セッションから抜ける(デタッチと言います)場合はショートカットキー Ctrl+b d を打鍵します。(Ctrl キーと b キーを同時に押下してから、d キーを押下します)

以上になります。tmux は覚えておくと普段から大変便利なツールですので、ぜひ公式マニュアルを読んでみてください。