2018年1月22日月曜日

【Windowsバッチ】Javaのメモリ監視と解放(プロセス監視・ディスク監視等)

ポックンのWindowsメモリ解放についてもメモ

Javaベースで動いているシステムで
メモリの枯渇に悩まされている時に
使えるかもしれないバッチ。

OSSの全文検索システム(FESS)を
運用している際に効果があったもの。

定期再起動運用を決める前に試してみてもよいかも。
また、統合サービスなどを使用せず、特定のプロセス活動を監視し
メモリなどが一定になったら~~~するや
簡易的なパフォーマンスやディスク監視にも応用ができるかと。

ちなみに「empty.exe」は、Microsoft社が公開しているメモリ解放ツール。

なお、符号付32bitの範囲(-2147483648 ~ 2147483647)を超える場合は
「SET /A GHI=%TM:~0,3%」などする必要あり。

@ECHO OFF
:MOD_STA

FOR /F "delims=" %%A IN (tasklist ^|find java) DO SET ABC=%%A
SET DEF=%ABC:,=%
ECHO %DEF%
FOR /F "tokens=5" %%I IN (ECHO %DEF%) DO SET /A TM=%%I
ECHO %TM%
IF %TM% GTR 70000 (
Empty.exe *
)

GOTO MOD_STA

2018年1月8日月曜日

プログラムが成功するまで繰り返し実行するバッチ

ポックンのプログラムが成功するまで繰り返し実行し続けたい時のバッチ

以下は、3つのプログラムが全て終了コード正常(0)を
返すまで、失敗したプログラムのみ実行し続ける。

@echo off
setlocal enabledelayedexpansion

set RET1=1
set RET2=1
set RET3=1

:restart

if not !RET1! == 0 (
program1.exe
set RET1=!ERROLEVEL!
)

if not !RET2! == 0 (
program2.exe
set RET2=!ERROLEVEL!
)

if not !RET3! == 0 (
program3.exe
set RET3=!ERROLEVEL!
)

if !RET1! == 0 if !RET2! == 0 if !RET3! == 0 (
goto end
)

goto restart

:end

2018年1月3日水曜日

ただ画像が動き回るだけのスクリプト(JavaScript)

ポックンのただ画像が動き回るだけのスクリプト(JavaScript)

<html>
<head>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<script type="text/javascript">
    var x =40, y =40; /* 初期位置       */
    var dx=10, dy=10; /* 移動速度       */
    var direction=0;  /* 移動方向       */
    var distance=0;   /* 移動距離       */
    var flag_cnt=0;
    function move() {
        setTimeout("move()", 100);
        if(flag_cnt >= distance) {
            /* 移動方向を決定 */
            direction=Math.floor(Math.random()*(7-0+1))+0;
            /* 移動距離を決定 */
            distance=Math.floor(Math.random()*(30-0+1))+0;
            /* フラグカウンタ初期化 */
            flag_cnt=0;
        }
        var obj=document.getElementById("face");
        var msg=document.getElementById("msg");
        msg.innerHTML="flag_cnt:"+flag_cnt+" 移動方向:"+direction+" 移動距離:"+distance;
        /* 移動処理 */
        switch(direction) {
            case 4:  /* 右上 */
                if(0 < y-dy) y-=dy;
            case 0:  /* 右 */
                if(500 > x+dx) x+=dx;
                break;
            case 5:  /* 右下 */
                if(500 > x+dx) x+=dx;
            case 1:  /* 下 */
                if(350 > y+dy) y+=dy;
                break;
            case 6:  /* 左下 */
                if(350 > y+dy) y+=dy;
            case 2:  /* 左 */
                if(0 < x-dx) x-=dx;
                break;
            case 7:  /* 左上 */
                if(0 < x-dx) x-=dx;
            case 3:  /* 上 */
                if(0 < y-dy) y-=dy;
                break;
        }
        obj.style.left=x;
        obj.style.top=y;
        flag_cnt++;
    }
</script>
</head>
<body onLoad="move()">
<div id="msg">
ここの内容が変わります
</div>
<img src="01.png" style="position:absolute;left:46;top:46">
<img id="face" src="02.GIF" style="position:absolute;left:40; top:40">
</body>
</html>
</body>
</html>

Linuxでゴミ箱機能(+おまけ)

ポックンのLinuxのゴミ箱機能(GarbageBox.sh)

#!/bin/bash

#本シェルを ~/.bash_profile で rm に alias きる

#引数指定なし
# ヘルプ表示
if [ $# -eq 0 ]; then
    echo '使用方法:GarbageBox.sh -e|-l|ファイル名|ディレクトリ名'
    echo '-e :ゴミ箱を空にする'
    echo '-l :ゴミ箱を参照する'
    echo ' :ゴミ箱を参照する'
    echo 'ファイル名|ディレクトリ名:ゴミ箱へ移動'
    exit 1
fi

#ゴミ箱がなければ作成
test ! -d ~/.GarbageBox && mkdir ~/.GarbageBox

case $1 in
  #オプション-e
  # 入力を促し、小文字に変換、yであれば空にする
  -e) echo -n 'ゴミ箱(~/.GarbageBox)を空にしますか?[y/n]:'
      read answer
      answer=$(echo $answer | tr 'A-Z' 'a-z')
      [ $answer == y ] && rm -rf ~/.GarbageBox/*
      ;;
  #オプション-l
  # ゴミ箱の中身を表示
  -l) ls -l ~/.GarbageBox
      ;;
  #その他
  *) for filename in $*; do
      #ファイル名のみ取得
      basefilename=$(basename $filename)
      if [ ! -e $filename ]; then
          #指定ファイル存在なし
          echo "$filename は存在しません"
      elif [ -e ~/.GarbageBox/$basefilename ]; then
          #ゴミ箱に同じファイル名がある
          tmpfilename=$basefilename.$(date +"%y%m%d%H%M%S")
          mv $filename ~/.GarbageBox/"$tmpfilename"
      else
          #その他
          mv $filename ~/.GarbageBox
      fi
      done
      ;;
esac

おふざけ(おまけ)

#!/bin/sh

Aset() {
sleep 1
clear
}

clear
echo '  (-o-) .'
Aset
echo '  (-o-) ..'
Aset
echo '  (-o-) ..z'
Aset
echo '  (-o-) ..zZ'
Aset
echo 'Σ(-o-) !!'
Aset
echo '  (~-~)'
Aset
echo '  (~o~)'
Aset
echo '  (/o~)'
Aset
echo '  (^-\\)'
Aset
echo '  (^-^)'
Aset
echo '  (^o^)お'
Aset
echo '  (^o^)おは'
Aset
echo '  (^o^)おはよ'
Aset
echo '  (^o^)おはよ〜'

Linuxのコマンド集

ポックンのLinuxコマンドのメモ

■ショートカット
  [Ctr]+a                    行頭に移動
  [Ctr]+e                    行末に移動
  [Ctr]+u                    行頭まで削除
  [Ctr]+k                    行末まで削除
  [Esc]+f                    右に1ワード移動
  [Esc]+b                    左に1ワード移動
  [Esc]+d                    右に1ワード削除
  [Esc]+[Ctr]+h(?)     左に1ワード移動
  [Ctr]+r                    ヒストリの検索+実行

■Screen
  [Ctr]+a c                  新規bash
  [Ctr]+a [0-9]           指定したbashに移動
  [Ctr]+a [Ctr]+a        直前のbashに移動
  [Ctr]+a n                  次のbash
  [Ctr]+a p                  前のbash
  [Ctr]+a A                  名前変更

■シェル
  basedirname=$(dirname $filename)    文字列からディレクトリのみ取得
  basefilename=$(basename $filename)  文字列からファイル名のみ取得

■その他
  for i in `seq 1 N` ; do echo $1 ; done   一定回数ループ
  fg %1                フォアグランド
  bg %1                バックグランド
  jobs                  現行のJOBを確認
  [Ctr}+z              JOB一時停止
  echo $?              終了ステータス確認 (0:正常 1:異常)
  ^置換前^置換後       一つ前のコマンドを置換して実行
  find . -type f |xargs nkf -w --overwrite
  !番号                ヒストリーからの実行

viエディタのコマンド集


ポックンのvi関連のメモ

■画面分割 コマンド
  :sp                     横に分割する
  :vsp                    縦に分割する
  :clo                     解除
  :n                       次の編集ファイルに移動
  :e#                     前の編集ファイルに戻る
  :e [ファイル名]     指定ファイルに移動
  :args                   編集ファイルの一覧を表示する

■画面分割 ショートカット

  [Ctr]+w → s             横に分割する
  [Ctr]+w → v             縦に分割する
  [Ctr]+w → w            画面切替
  [Ctr]+w → k            上のウインドウへ移動する
  [Ctr]+w → j             下のウインドウへ移動する
  [Ctr]+w → [Ctr]+w  次のウインドウへ移動する
  [Ctr]+w → p            前のウインドウへ移動する
  [Ctr]+w → +           ウインドウのサイズを大きくする
  [Ctr]+w → -            ウインドウのサイズを小さくする
  [Ctr]+w → n            別ウインドで新規ファイルを編集
  [Ctr]+w → q            ウインドウを閉じる
  [Ctr]+w → o            カレントウインドウ以外を閉じる

■置換

  :%s /" "/" "/g                      確認なし全て置換
  :%s /" "/" "/gc                     確認あり全て置換
  :s /" "/" "/gc                        確認あり現行のみ置換
  :3,4s /" "/" "/gc                   確認あり指定行のみ置換
  :s /\n/[Ctr]+v Enter  /         改行コード入力
  :%s;/var/home;/home;gc/   パスの置換

■その他

  .                                    操作の繰返し
  [SHIFT]+j                      行の連結
  [Ctr]+v                          ブロック選択
  >>                               一括インデント挿入
  <<                               一括インデント削除
  :r [ファイル名]               次の行に読み込んだ内容を挿入
  :w >> [ファイル名]        ファイルの最後に挿入
  :w [ファイル名]              指定ファイルに保存
  :行1, 行2 [ファイル名]     指定行を別ファイルに保存
  :set paste                      ペーストモード
  :e ++enc=utf8              文字コードを指定して開きなおす
  :set nu                          行表示
  :syntax on                     ハイライト
  :set tabstop=4              タブ幅
  :set autoindent             オートインデント
  :set ruler                      ルーラ表示
  :set nowrap                  折り返し表示をしない