2013/08/02

windows7 シンボリックリンク


Linuxで運用中のプログラムをwindows7で走らせることになった。

内部構成でシンボリックリンクを使っていたので、
同じものを配置するか~、メンテナンス性悪いな~と思っていたら、
windowsVista以降は何とシンボリックリンクが使えるらしい。
これは助かるので、忘れ無いように残す。


コマンドラインでのみ作成可能なため、コマンドプロンプトを管理者権限で起動

◆ファイルのシンボリックリンクを作成
mklink <シンボリックリンクの名前> <リンク先パス>
◆ディレクトリのシンボリックリンクを作成
mklink /d <シンボリックリンクの名前> <リンク先パス>

2013/07/23

grep 指定ディレクトリ内のファイルの中に入っている単語の検索

追記あり

grep -i -r -n -e "検索したい単語"  /検索したいディレクトリ

option

-i 大文字・小文字の区別をなくす。
-r サブディレクトリ以下も再帰的に検索する。
-n パターンに一致した行のファイル内での行番号を表示する。
-e 検索条件を指定 -e "内容" のセットで使う。

その他option
-w 指定したパターンを単語として含む行を抜き出す。
-c マッチした総行数を表示
--include='*.拡張子' 指定した拡張子を含む
--exclude='*.拡張子' 指定した拡張子を除く


応用編
find | xargs grep -n [pattern]
 
入力したパターンをカレントディレクトリ以下で検索してくれる。
最初の 
grep -i -r -n -e "検索したい単語"  /検索したいディレクトリ
ほぼ同じ。


今更だけど、option -e "" を忘れて
余計な時間が掛かったので、残す。 

2013/07/05

findコマンド 3日前のファイルを舐めて消して、バックアップを取る

シェルスクリプトを作成

#!/bin/sh
#バックアップ シェルスクリプト
#バックアップフォルダ名は、YYYY-MM-DD-HHMMとする。
#例) 2012-01-01-0100
#crontabと連携し、日数を指定する
#2日分持つ
#ほんとはコピーとデリートのシェルスクリプトを分けた方がいい。


echo "File backup start at `date`"
days=2
 

# ○日前以前にアクセスされたファイルを消す。
echo "Old backup ($days days passed) delete"
find [targetFile] -atime +$days -print -exec rm -fR {} \;

# find [検索するディレクトリ] (option) 
# -atime (+/-)n 最後にアクセスされたのが
#  n日前のファイル・ディレクトリを検索(+n:n日以上、-n:n日以下)
# 今回は -mtime +$days としているので 設定日数変更可能。
# -print     検索結果の標準出力
# -fprint [file name]     検索結果を指定したファイルに書き出す
# -exec [command] {} \;     検索結果をコマンドに引き渡して実行


#ディレクトリレベルで個別設定し新規作成が必要な場合使用
#fdir="作成するディレクトリのフルパス"
#if [ ! -e $fdir ]
#then
#    echo "create backup directory $fdir"
#    mkdir $fdir
#fi

#任意のディレクトリに 2012-01-01-0100 のディレクトリを作成する。
dName=[バックアップ先のディレクトリフルパス]`date '+%Y-%m-%d-%H%M'`

echo "Copying to the BackupFile"
#バックアップ元のディレクトリを指定
#個別で指定する場合は、複数行記述する。

cp -R [バックアップ元ディレクトリフルパス] $dName

echo "DB backup end   at `date`"


2013/06/26

php WEBシステム クエリの結果に行数を反映させたい

クエリを投げて、複数行の結果がかえってくるような検索プログラムに、

htmlで表を使って表示させているが、その際にsequence numberを表示させたいと要望があったので、

一番簡単な方法を掲載。

while ($col = pg_fetch_array($rst)) {
$seq +=1;

whileが終わるまで、seqに+1づつしてくれます。

 

##PHPの内容抜粋

$body .= "<TABLE border='1'>
 <TR>
              <TH><font size=2>seq</font></TH>
              <TH><font size=2>内容</font></TH>
</TR>";

while ($col = pg_fetch_array($rst)) {
$seq +=1;
     $body .= "<TR>" .
                "<TD><font size=2>$seq</font></TD>" .
                "<TD><font size=2>$col[内容のカラム名]</font></TD>" .
                "</TR>";

 

$body .= "</TABLE>";

 

 
こんな感じで使うようですね。

2013/06/24

postgresql 他の拠点(ホスト)からのアクセスを許可する設定

postgresの

/usr/local/pgsql/data/postgresql.conf を修正

listen_addresses = '*'
コメントになっている場合は、コメントを消す(#を取る)

接続ホストの制限をしている設定ファイル
/usr/local/pgsql/data/pg_hba.conf を修正

末尾に新しい拠点(ホスト)を記載。
host    all         all         192.168.XXX.0/24       password
 
補足
サブネットマスクは忘れず記載。 
passwordで md5ベースのパスワード
md5は総当たりでやられるらしく、
SHA-2とかのほうがセキュアらしいが、
その辺はルーターで穴を塞いでいるので、
ローカルレベルのパスワード定義で十分。
 
# /etc/rc.d/init.d/postgresql restart
でpostgresqlを再起動して、設定を有効にする。
 

2013/03/21

CentOs6.0 crontab

crontab -e でcronデーモンを登録しようとしたが、上手くいかない。
rootで/var/spool/cronの直下のユーザ名ファイルに直接書き込んだ。
これでも、良いようだ。

2013/03/18

CentOS6.0以降のcrontab設定

Logwatchをrpmでインストールして 、メールを携帯飛ばして状態管理をしており、
CentOS6.0のマシンからも、メールを飛ばすようした際のオボエガキ。
CentOS6.0以降のcrontabはrootでも定義されていない。
 crontabのdailyを7時半に定義したところ、 
3時半と、指定した時間2回送られてくるようになった
All about linuxさん に解説があったので、残す。
何やら、anacron (cronie-anacron)によって、ランダム化をし、
スクリプトシェルが重なったりして実行できない等の問題を解決しているようだ。
/etc/anacrontab

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly
 
赤字の 1 (左端) が実行周期 (日時実行=1) で、
次の数字 5 は、実行開始タイミングになってから、5 分間の遅延を入れる指定
実行開始する時間帯は START_HOURS_RANGEで制御され、
3-22 とは、3時から22時までの範囲 (3:00 ≦ t < 22:00) を指定
ランダム化の幅はRANDOM_DELAY で制御され、
45 とは 0~45 分の範囲 (乱数計算の実装上、正確には 44 分まで) 
でランダムに遅延を行うことを指定している。
 
とのこと。詳しくは、manにて
起動時間帯が、3-22時の場合は、3:05~3:50に(正確には3:06となるらしい)起動することになる。
  
7時半頃飛んで来ればいいので、
START_HOURS_RANGE=7-22
変更。
これで、7時前半となる場合は、
1       5       cron.daily              nice run-parts /etc/cron.daily
 5を30とかにすれば、いいはず。

cronie-noanacronというパッケージをインストールすると、ランダム化されないそうだ。
パッケージの依存関係のため、事前に cronie-noanacron をインストールし、
その後に cronie-anacron を削除するという手順を踏む。

# yum install cronie-noanacron
..略..
Installed:
  cronie-noanacron.x86_64 0:1.4.4-7.el6
Complete!

# rpm -e cronie-anacron
 
/etc/cron.d/dailyjobsというものが生成され、こいつに、見慣れたcromtabを指定すればよい。
 
中身 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
02 4 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
22 4 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly
42 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly  

cronie-anacron パッケージを削除しないと有効化されないようにガードされているそうだ。

cron.weekly および cron.monthlyも同様。

2012/10/09

Tomcat Catalina_opts

CATALINA_OPTS の設定方法

tomcatのbinにある、catalina.batの中の

set CATALINA_OPTS=CATALINA_OPTS=
" -verbose:gc -XX:+PrintGCTimeStamps -Xms1024m -Xmx1536m -XX:NewSize=170m -XX:MaxNewSize=170m -XX:SurvivorRatio=2 -XX:PermSize=64m -XX:MaxPermSize=64m"

ここの
Xmsが初期値 -Xms1024m
Xmxが最大値 -Xmx1536m
こんな感じで書く。
他の記載はそのままで問題なく動く。

OutOfMemoryが頻出の際は、メモリを買ってここを直す。

2012/03/29

PHPの日付計算

PHPの日付の記載方法を調べていたら
参考になるところを発見したので、
貼り付けておく。

http://www.ilovex.co.jp/Division/ITD/archives/2006/03/php.html
株式会社アイロベックス様の
ITプロフェッショナル部のアーカイブより発見。


PHPで1週間前の日付の取得方法がわからなかったので、
調べたところ下記の記述が出てきました。
↓↓↓↓↓↓↓以下PHPコード↓↓↓↓↓↓↓↓↓
//今日の日付を取得(タイムスタンプ)
$date_today = mktime (0, 0, 0, date("m"), date("d"), date("y"));
//一週間前を取得
$date_oneweek = $date_today - 86400 * 7;
↑↑↑↑↑↑↑以上PHPコード↑↑↑↑↑↑↑↑↑
86400というのが一日を表しているらしいです。
その数値×7日で一週間分の数値を求め、それを本日のタイムスタンプから引くと、
一週間前の日付が取得できるといった原理です。
確かにちゃんと動くのですが、本当にこの方法しかないのか??
と思い調べたところ違う書き方もありました。
しかも、上記の記述よりも簡単に書くことができました。

↓↓↓↓↓↓↓以下PHPコード↓↓↓↓↓↓↓↓↓
echo "1日前" . date("Y/m/d",strtotime("-1 day"));
echo "1ヶ月前" . date("Y/m/d",strtotime("-1 month"));
echo "1年前" . date("Y/m/d",strtotime("-1 year"));
echo "1週間前" . date("Y/m/d",strtotime("-1 week"));
↑↑↑↑↑↑↑以上PHPコード↑↑↑↑↑↑↑↑↑
1日前,1週間前,1年前,それに加えて1週間前もこのコードで取得できます。
上記コードだと、本日から○日後の日付が取得できますが、
次のコードだと、指定日付から○日後の日付が取得できます。
↓↓↓↓↓↓↓以下PHPコード↓↓↓↓↓↓↓↓↓
echo "1日前" . date("Y/m/d",strtotime("-1 day" ,strtotime("2005/12/10")));
echo "1ヶ月前" . date("Y/m/d",strtotime("-1 month" ,strtotime("2005/12/10")));
echo "1年前" . date("Y/m/d",strtotime("-1 year",strtotime("2005/12/10")));
echo "1週間前" . date("Y/m/d",strtotime("-1 week" ,strtotime("2005/12/10")));
注意:"2005/12/10"は適当な日付です。ここに指定したい日付を記述して下さい。
↑↑↑↑↑↑↑以上PHPコード↑↑↑↑↑↑↑↑↑

また、PHPで何か発見したら報告します。

2011/09/03

DELL VOSTRO230 WOL

会社で使っているDELL VOSTRO 230 のWOLを仕込んだ。
支店に行く用事があったので、BIOSをF2で立ち上げ、
Low Power Mode [Disable]
Remote On LAN [Enable]
と変更し、セーブして終了。
XPだったので、S5で起せる様に、LANの電源管理等を変更
コントロールパネル
 システム
  ハードウェア
   デバイスマネージャ
    ネットワークアダプタ
     Broadcom NetLink
      詳細設定
       Wake Up capabilities を magic packet
      電源の管理
       このデバイスで、コンピュータのスタンバイ状態を解除できるようにする にチェック

あとは、YAMAHA RTX1200 から マジックパケット投げて起動。
administrator になって
# wol send lan1 [MACアドレス XX:XX:XX:XX:XX:XX]
で立ち上がる。

ちなみにWindows系なので、Real VNCも仕込んでおいた。
益々、新築時に固定IPアドレスが欲しくなってきた。
といっても、固定費が掛かってしまうので、検討中。

2011/08/16

Yamaha RTX1200 で WOL

別のネットワークからでは、アクセスできなかったので、
いろいろ方法を探してみる。
固定IPを振っていれば問題なんだが、
支店はIPをそんなにもっていないので、
トンネルで対応できる方法を考えた。
ルータ越しにマジックパケット
を送信できないので、(恐らくリジェクトされる)
ルータからwolが出来ないか調べたところ、
コマンドがあったので、忘れないうちに残しておく。

RTX1200にログインして、
administratorになる
#wol send lan1 xx:xx:xx:xx:xx:xx
xxはマックアドレス

細かくパケットの送信回数や、ポート等の指定が可能のようだ。
wol send [-i INTERVAL] [-c COUNT] INTERFACE MAC-ADDRESS [IP-ADDRESS [udp PORT]]
INTERVAL ...パケットの送信間隔 (秒), 1~21474836
COUNT ...パケットの送信回数, 1~21474836
INTERFACE ...LANインタフェース名
MAC-ADDRESS ...MACアドレス
IP-ADDRESS ...IPv4アドレス
PORT ...UDPポート番号(10進数)
TYPE ...イーサネットタイプフィールドの値(10進数)


2011/08/11

WakeUp On LAN

会社の支店用サーバの管理のため、
WOLを実装。
DELL PoweredgeT110ii CentOS6.0
バイオス画面でCtrl+Eで立ち上げて
ネットワーク起動をenableにしてセーブして起動
起動後ターミナルからrootになって
#yum install ethtool
既に実装されていた。
# ethtool -s eth0 wol g
でOK。
起動後毎回実行しないといけないらしいので
rc.localに書き込んでおく。
/sbin/ethtool -s eth0 wol g
以上 サーバ側の設定終わり。


クライアント側はWindows7で
wol ver1.93をダウンロード
凄く使いやすいです。
ありがとうございます。
これなら、自宅にサーバ置いて必要なときだけ
割と楽に起動できるから、良いと思った。
iphoneとかandroidでいいのがありそうだ。
探してみよう。

2011/08/08

ネットワーク設定

ネットワークの設定

/etc/sysconfig/network-scripts/ifcfg-Auto_eth1
を編集する
ネットワークマネージャとネットワーク
両方のサービスが走っている状態。
ifcfg-Auto_eth1は2枚目のイーサネットカードで
クライアントが外に出るルーター2台へのルーティング
を行っているのだが、
ネットワークマネージャで表示されなくなった・・・。
原因不明だが、起動時にrc.localにネットワークのサービスを
強制割り込みさせることでとりあえず解消。
本チャンサーバに切り替える時には、
管理プログラムのconf内の 管理ソフト名.propertiesと
tomcat/conf/server.xml
のアドレスをそれぞれ任意のアドレスに変更する事とする。
2011/08/11追記
どうも、BMCという外部からの監視が出来る
バイオスレベルで動くものがあるのだが、
どうもNICの競合が起こるのか、具合が悪かったので、
停止してみたところ、問題解消したようだったので、
自動起動は止めた。

2011/06/13

ビジネスホン αGXの設定モード等

Webデータ設定を有効化
957内線の順に押す

設定禁止
956内線の順に押す


TEN=電話機
KEY=局線ボタンというらしい
TEN番号01の端末で操作
「設定モードの入り方」

[内線ボタン]
→[(決定)or設定ボタン]
→#
→*
→#
→*
→[スピーカボタン]

データ書込みモード。
「 設定モードから抜け方」

[機能]ボタン(エラーがなければ)

→[決定or設定]ボタン
→[*]ボタンで終了 

どうも、NTTの極秘らしく、調べてもあまりよくわからなかった。
一つだけ、掲載を発見。

【設定例】 外線の着信を TEN 5 の KEY 1・2・3で 昼・鳴動するように設定します。

→局線ボタンの 2
→ダイヤルで 10
→005
→123
→スピーカボタン
 (サービスNo)(項目No)(TEN 5)(KEY 1・2・3)(確定)

[内線]ボタンで呼出中に[0]を押下すると

強制呼び出しモードになります。

 

2010/08/18

Windows7にSqlServer2000

タイトルの通りの作業を行う。
SqlServer EPで動いているであろうサーバのデータを
取得しなくてはならず、sqlのdumpコマンドで上手くいかなかったら
ショックなので、windows7にSqlServer2000をいれて
バックアップを取って、PostgreSqlに加工することにする。
まずは、SqlServer2000のインストールだが、








これが出てしまう。
管理者権限で実行して、無理やりインストール。
Serverとしては動かないようだが、
ローカルとしてのインストールは出来た。
あとは、稼働中のサーバにアクセスして、
バックアップとって完了。