ずっと動いているタイプの(デーモンみたいな)Rubyプログラム、 現状の状態をうかがい知るためにはログを丁寧に出力させなければいけなくて、 かといって細かいログまで出力させると必要性の低いものもどんどん出てきてしまう。
show_status みたいなコマンドを打って、状態をぱっと出力できたら便利だなあと思ったので作ってみました。
動作中のプロセスに対して「あれしろ、こうしろ」って後から指令を送る用途にも使えそうです。 「一時停止しろ」とか「接続しろ」とか「終了しろ」とか。
| require 'mkmf' | |
| $CFLAGS << " -std=c99" | |
| create_makefile 'semaphore' |
| #! /usr/bin/ruby | |
| # coding: utf-8 | |
| IP_ADDRESS = "192.168.111.102" | |
| LASTSEEN_FILE = "/tmp/lastseen.txt" | |
| OUTPUT_FILE = "/tmp/house.html" | |
| require 'serialport' | |
| OUTPUT_TEMP = <<EOS |
| #include <avr/io.h> | |
| #include <avr/interrupt.h> | |
| #include <avr/pgmspace.h> | |
| #include <string.h> | |
| #include "uart.h" | |
| #define UART_BAUD_RATE 9600 | |
| #define CMD_BUFFER_LEN 32 | |
| #define PROMPT "Raspi-ExtBoard> " |
| "---------------- | |
| " Enterキー押下時、カーソルの右がとじ括弧だったら括弧の外側で改行 | |
| "---------------- | |
| function! MyEnterFunc() | |
| let pos = getpos('.') | |
| let c = getline('.')[pos[2]-1] | |
| if(c =~ "[\\)\\]]") | |
| return "\<Right>\<Enter>" | |
| endif | |
| return "\<Enter>" |
| lambda{ | |
| header = lambda{|color| "\e[#{color}m" } | |
| footer = lambda{ "\e[0m" } | |
| add = lambda{|name| | |
| dname = ("d" + name.to_s).to_sym | |
| Kernel.send :define_method, dname do |*args| | |
| begin | |
| print header.call(31) |
| module StartStopDaemon | |
| # Start or stop daemon process. | |
| # | |
| # * command (String or Symbol): | |
| # [start] Create new instance with arguments ,call #start and create PID file. | |
| # [stop] Call #stop, send TERM signal and remove PID file. | |
| # [restart] Do stop and start. | |
| # [status] Show whether the process is running nor not. | |
| # [-h|--help|help] Show usage. |
| #!/bin/sh | |
| echo "echo happy" >> $0 |
| NAME = File.basename(File.dirname(__FILE__)) | |
| IMAGE = "#{ENV['USER']}/#{NAME}" | |
| DIR = File.dirname(__FILE__) | |
| DOCKER_OPT = "" | |
| task "status" do | |
| puts get_status | |
| end |