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 は覚えておくと普段から大変便利なツールですので、ぜひ公式マニュアルを読んでみてください。