初期衝動
- SupervisorはUNIXのシステムで(Pythonが動かないとダメ)簡単に多くのプロセスを管理できます.
- Supervisorは簡単なINIスタイルの設定ファイルで構成されており,とてもシンプルで学習に苦労することがありません.
- Supervisorはその利便性と簡潔さを保っているので正確に作業を行うことができます.
- Supervisorはとりあえず,supervisorctlで操作を行うことができます.
- Supervisorは最高にクールなので最高のプログラミング言語上で動作します.
- SupervisorはPython 2.4以降で動作することが知られていますが、Python 3のどのバージョンでも動作しません.
- Branchが切られてちゃんとIssues · Supervisor/supervisor · GitHub対応が進んでいるようなので安心かな?
では,はじめます
環境情報
#!/bin/bash sleep 20 NOWTIME=`date -u +"%Y/%m/%d %I:%M:%S"` DF=`df -h -i` echo "${NOWTIME}" echo -e "$n" echo -e "${DF}"
このスクリプトは何がやりたいのか.よくわからん.
設定ファイル
設定ファイルの名前はsupervisord.conf
です.これらはsupervisord とsupervisorctlの両方で使用されます.
また,supervisord.conf
は以下の順番で参照されます
$ CWD / supervisord.conf $ CWD / etc / supervisord.conf /etc/supervisord.conf /etc/supervisor/supervisord.conf(スーパーバイザ3.3.0以降) ../etc/supervisord.conf(実行ファイルを基準にして) ../supervisord.conf(実行ファイルからの相対パス)
デフォルトでは/etc/supervisor/supervisord.conf
に設定があり
個別の設定は以下の設定で行うことで整理することができます.
[include] files = /etc/supervisor/conf.d/*.conf
詳しくは全部ここに書いてあります.
Configuration File — Supervisor 3.3.3 documentation
設定ファイルを書く.
/etc/supervisor/conf.d/sample_job.conf
[program:sample_job] directory=/tmp/ command=/tmp/sample_job.sh autostart=true autorestart=true startsecs=6 startretries=20 redirect_stderr=true stdout_logfile_backups=5 stdout_logfile=/tmp/log/sample_job.log
設定は終了.詳しくは先ほど張ったURLを見てほしいのですが
直観的で非常にわかりやすいと思います.
ちなみに,autorestart
で復活してきます.
出力の出先は/tmp/log/sample_job.log
です.
一応見ときます.
$tail -n 30 /tmp/log/sample_job.log 2017/10/12 01:54:31 Filesystem Inodes IUsed IFree IUse% Mounted on udev 246K 436 245K 1% /dev tmpfs 251K 636 250K 1% /run /dev/sda1 2.9M 478K 2.5M 17% / tmpfs 251K 6 251K 1% /dev/shm tmpfs 251K 5 251K 1% /run/lock tmpfs 251K 16 251K 1% /sys/fs/cgroup tmpfs 251K 31 251K 1% /run/user/1000 2017/10/12 01:54:52 Filesystem Inodes IUsed IFree IUse% Mounted on udev 246K 436 245K 1% /dev tmpfs 251K 636 250K 1% /run /dev/sda1 2.9M 478K 2.5M 17% / tmpfs 251K 6 251K 1% /dev/shm tmpfs 251K 5 251K 1% /run/lock tmpfs 251K 16 251K 1% /sys/fs/cgroup tmpfs 251K 31 251K 1% /run/user/1000 2017/10/12 01:55:13 Filesystem Inodes IUsed IFree IUse% Mounted on udev 246K 436 245K 1% /dev tmpfs 251K 636 250K 1% /run /dev/sda1 2.9M 478K 2.5M 17% / tmpfs 251K 6 251K 1% /dev/shm tmpfs 251K 5 251K 1% /run/lock tmpfs 251K 16 251K 1% /sys/fs/cgroup tmpfs 251K 31 251K 1% /run/user/1000
コマンド
設定ファイルを記述しただけでは残念ながら動きません.Supervisorに読み込ませたり起動させたりしなければなりません.
そのために使うコマンドがsupervisorctl
であります.
$ supervisorctl help default commands (type help <topic>): ===================================== add exit open reload restart start tail avail fg pid remove shutdown status update clear maintail quit reread signal stop version
設定ファイルを読み込んで確認します.
$ supervisorctl supervisor> reread sample_job: available supervisor> update sample_job: added process group supervisor> status sample_job RUNNING pid 21029, uptime 0:00:07
ちなみにsupervisorctl
に引数として渡してあげるだけで実行することもできます.
$ supervisorctl status sample_job STARTING
各コマンドについては下記のブログが日本語だと充実している
最後に
最近,根気が続かず書いてる途中に飽きる.老化だと思います.
参照
supervisorctlについて調べてみた - Masteries
Supervisor: A Process Control System — Supervisor 3.3.3 documentation