Linuxで再帰的に親のプロセスIDから一番最下層のプロセスから停止するスクリプト

pgrepで子プロセスのIDを取得して、
再帰的に同様のことを繰り返し、子プロセスがいない親プロセスIDを
killすることで順番としては最下層の子プロセスからkillする作りです。
まぁもっと良い方法があるのかもしれないですがね。

#!/bin/bash

function f_kill_proc()
{
 local pid=${1}
 local child_pid=`pgrep -P ${1}`

  sleep 1


   if [ "x${child_pid}" != "x" ];then
     echo "まだ子プロセス共がいるぜ。"

     for child in ${child_pid}
      do
        echo "やっちゃうぜ!"
        func_stop_proc ${child}
      done
   fi

   kill -9 ${pid}
}

f_kill_proc 100

Linuxにsshやtelnetログイン時にウェルカムメッセージを出す方法

LinuxsshTELNETなどでリモートログインを行った際に
ウェルカムメッセージを出力するには以下のファイルを編集します。

/etc/motd

ここに出力したい文字列を入力するとリモートログイン時に一番最初に出力します。

Ubuntu8.10で固定IPアドレスを割り振る

$ sudo view /etc/network/interface

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
#iface eth0 inet dhcp =>DHCPで割り当てを行われているのでコメントアウトする
#以下を追加する。
iface eth0 inet static
address 192.168.11.51    # 固定IPアドレス
netmask 255.255.255.0    # サブネットマスク
gateway 192.168.11.1     # デフォルトゲートウェイ

networkの再起動を行う。
$ sudo /etc/init.d/network restart

非機能要件を書いてみる

今回仕事でシステム要件定義を書くことがあったんだけどもなかなか難しかったところ、
いいのがあったのでメモ。

システム基盤の発注者要求を見える化する非機能要求グレード検討会
http://www.nttdata.co.jp/nfr-grade/result/index.html

ここのマトリックスを基に項目を埋めていくといいもんできますよー

プロジェクトマネージメント手法のメモ。

今回の例題として、

チームとして超過時間が長いためモチベーションが下がる。
まず4つのステージに分けて考える。

Stage1 find Problem(解析)

  1. 残業(結論「consequence」であって問題ではない)

Stage2 resource、Time(エスティメーション(約:予想))

  • 改善を行うためにどれくらいの可能性があるか大雑把に数値化する?
  1. 今までのプロセスを刷新する(実現可能性:1%)
  2. プロセスの半自動化を図る(実現可能性:90%)
  3. 人的リソースを増やし役割を明確にする(実現可能性:40%)

etc....

Stage3 Coordonation(チームで解決方法の決定(バックアップソリューションも用意)ManagementMeeting)
ユーザの要望:100<=真ん中:80=>90:こちら側の要望(ハーバード流交渉術)
相手にもこちらもWIN-WINになるような解決案とする。

  • ユーザにはタスクをチョイスしてもらう。プライオリティ付けはこちら側で主導権を握る。

1.longMeeting
  +-------------------------> fixSol1 <------------------------ユーザ
  +-------------------------> fixSol1_bk(オリジナルに近い)-----+
  +--プライオリティ(UntilDate)
  |
  +-------------------------> fixSol2 <------------------------ユーザ
  +-------------------------> fixSol2_bk(オリジナルに近い)-----+
  +--プライオリティ(UntilDate)

  • プライオリティの主導権はこちらが持つ。
  • 理由:いろいろな物の作成順序を決めれるから。例えばドキュメントが欲しいというに決まってるから。プロセスマネージメントから行う方が容易い。
  • 交渉のための戦略(strategy negotiation)で予想を作成。

Stage4 Final Project Settings(最終決定、デッドライン、誰がいつまでやるの?)

  • detail a plan:計画を詳細に練り上げる
  • PMP(プロジェクトマネージメントプロフェッショナル)
  • クラシックプロジェクトマネージメントを用いる(スタンダードテクニック)

問題=>解決方法=>デッドライン=>誰

  • なんでブレストするか?

ブレインストーミングの目的は。。。

  • FIX問題
  • 新しい解決方法

みんなのアイデアブレインストーミングマトリックス

meeting =片方向=>team
ブレスト<=双方向=>team
マネージメント(情報)=>team<=ブレスト=>team

  1. ブレストはまずは問題から。(ex。レビューが長い)
  2. なんでレビュー長いかを考える(問題の理由を掘り下げる)

vbsでpingを打ち続ける

pingを打って落ちたら何かアクションをしたい場合があると思われます。
但しこのコードだとWSH5.6ではないと動作しません。
WSH5.6でも動作する方法はないこともないのですがそのうち。。。

Option Explicit

Dim args
Dim s_SvrName
Dim s_ip
Dim pingStat
Dim Ping
Dim objWMIService
Dim PingSet


'##### 引数でサーバ名を取得 ####
Set args = WScript.Arguments
s_SvrName = args.item(0)

'まずは0をセットしてLoopさせる。
pingStat = 0

'0以外ならLoopから抜ける
Do While pingStat = 0 
  pingStat = ping_check(s_SvrName)
  Wscript.Sleep(1000)
Loop

'えせエラーロジック
'本来であればErr.NumberでキャッチすべきだがPing疎通の戻り値で判定する。
If pingStat = 11010 Then
  WScript.Echo "Exit Code:0を戻す"
  Wscript.Quit(0)
Else
  WScript.Echo "Exit Code:1を戻す"
  Wscript.Quit(1)
End If


Function ping_check(s_ip)
  Set objWMIService = GetObject("winmgmts:\\.")
  Set PingSet = objWMIService.ExecQuery ("Select * From Win32_PingStatus Where Address = '"& s_ip &"'")

  For Each Ping In PingSet
 
    Select Case Ping.StatusCode
      Case 0
        Wscript.Echo Now() & " Ping Successful"
        ping_check = 0
      Case 11010
        Wscript.Echo Now() & " Request Timed Out"
        ping_check = 11010
      Case Else
        MsgBox "エラー"
        ping_check = 1
    End Select
  Next
End Function