2017年1月15日日曜日

Windows ネットワークドライブの割り当てをコマンドで実行する

Windowsでネットワークドライブの割り当て方法として、以下の2つの方法があります。
    ・「ネットワークドライブの割り当て」画面から設定
    ・コマンドプロントでnet useコマンドを実行

net useコマンドの場合、デフォルトのオプションが「次回ログオン時に自動で割り当てる」となっていますので、自動で割り当てたくない場合はオプション persistent:no を指定する必要があります。

例えば、異なるドメインの端末で1つのサーバへネットワークドライブを割り当てる際、自動で割り当てるように設定していると端末が設定時のユーザとパスワードを記憶しているため、ユーザのパスワード変更によりアカウントがロックしてしまう可能性が高いです。

上記の運用が想定される場合は、ログオンの都度、ネットワークドライブを割り当てる必要があります。

都度 画面での設定やnet useコマンドの打鍵ではなく、net useコマンド(オプション persistent:noを記載、パスワードは記載しない)のバッチファイルをスタートアップに配置すると楽です。

ご指摘、ご質問などはコメントへお願いします。

2017年1月13日金曜日

Windows Oracle OSが64bitで、32bitのODBCを設定する

Windows OSが64bitの場合、コントロールパネル(管理ツール)のODBCデータソースを起動した場合、64bit版のODBC設定画面になります。

32bit版のODBCデータソース(ODBC設定画面)を設定(起動)したい場合は、以下の実行ファイル(odbcad32.exe)を直接実行する必要があります。

%windir%¥syswow64¥odbcad32.exe

なお、64bit版のODBCデータソース(ODBC設定画面)の実行ファイル(odbcad32.exe)は以下です。

%windir%¥system32¥odbcad32.exe

AccessからODBCデータソースを設定した場合、Officeのbit数によって32bitか64bitのODBCデータソースのどちらかに設定されます。

ODBCデータソース(ODBC設定画面)での表示について、Windowsの仕様により、システムDSNには各bit(32bit/64bit)のODBC設定画面で設定した内容のみが表示されますが、ユーザーDSNには64bitと32bitの両方表示されてしまいます。

例えば、以下のように32bit版と64bit版のDSNを設定した場合、
    64bit版のODBC設定
        システムDSN     DNS名:sysdsn64
        ユーザーDSN    DSN名:usrdsn64

    32bit版のODBC設定
        システムDSN     DNS名:sysdsn32
        ユーザーDSN    DSN名:usrdsn32

以下のように表示されます。
    64bit版のODBC設定
        システムDSN     DNS名:sysdsn64
        ユーザーDSN    DSN名:usrdsn64    DSN名:usrdsn32

    32bit版のODBC設定
        システムDSN     DNS名:sysdsn32
        ユーザーDSN    DSN名:usrdsn64    DSN名:usrdsn32

ご指摘、ご質問などはコメントへお願いします。

2017年1月11日水曜日

Linux ディスク使用量とブロックサイズについて

Linuxのファイルとディレクトリの、サイズやディスク使用量を取得する主なコマンドとして、
    df コマンド
    du コマンド
    ls コマンド(-l オプション)
があります。

ディスク使用量とは、実際にディスクへ割り当てられた大きさを意味しています。

ディスクはブロックサイズ毎に割り当てられるため、ディスク使用量は最低でも必ずブロックサイズと同じになります。
つまり、ブロックサイズが4kの場合、どんなに小さなファイルを作っても、ディスク使用量は必ず4kになります。
また、どのような大きさのファイルを作成しても、必ず4kで割り切れるディスク使用量になります。

各ディスクのブロックサイズは、コマンドで変更が出来ます。

ブロックサイズを大きくした場合、
    メリット…ディスクへの書き込み速度が向上する
      ※ブロックサイズ単位で(ディスク容量が割り当てられて)ディスクへ書き込みが実行されるため
    デメリット…作成できるファイル(ディレクトリも)が少なくなる
      ※ブロックサイズ単位でディスク容量が割り当てられるため

ブロックサイズを小さくした場合、(大きくした場合の逆ですが)
    メリット…作成できるファイル(ディレクトリも)が多くなる
    デメリット…ディスクへの書き込み速度が低下する

あらかじめ、主にサイズが大きいファイルの数が多いことが見込まれる場合は、ブロックサイズを調節すると、パフォーマンスの向上を期待できます。
ただし、本来あまりディスク容量を必要としないファイル(小さなファイルやディレクトリ)を作成した場合もブロックサイズ分のディスク容量が割り当てられてしまうので、留意が必要です。

ディスクへの書き込み速度が影響するのは、ブロックサイズ以上のファイルを作成した場合です。
また、ディスクへ作成できるファイル(ディレクトリ)の数は、i-node数を越えることは出来ません。

ご指摘、ご質問などはコメントへお願いします。

HULFT ジョブ定義の入力制限、標準出力、環境変数について

以下の話は、HULFTのバージョン 7、8です。

●ジョブ定義の入力制限
HULFTのジョブ定義では60バイトの入力制限があります。
コマンドのフルパス、標準出力やエラー出力を制御すると、制限に引っかかることが多いです。

以下のように環境変数(PATH)を設定することで、コマンドのパスの分だけ、バイト数を減らすことができます。

《Linuxの場合》
/etc/profileで、環境変数PATHにコマンドのパスを設定
(HULFTでは基本的にrootで各処理が実行されます。)

《Windowsの場合》
システム環境変数で、環境変数PATHにコマンドのパスを設定

●HULFTの環境変数
HULFTではファイルID($FILEID)等のHULFT固有の環境変数を使うことが出来ます。

《Linuxの場合》
ジョブ定義の中でsudoコマンドを使ってコマンドの実行ユーザを変える場合、変更したユーザにはHULFTの環境変数が引き継がれないため、/etc/sudoresのenv_keepで引き継ぎたい変数名を定義する必要があります。

●ジョブ定義の標準出力と標準エラー出力
ジョブ定義のコマンドの標準出力と標準エラー出力は、HULFTで厳密に制御されていないようです。

《Linuxの場合》
そのため、出来るだけ制御(どこかに出力しておく、又は/dev/nullに出力(捨てる))した方が好ましいです。
ジョブ定義で出力を制御しなかった場合、経験だと、HULFTデーモンを起動した際に指定した出力先へ出る模様です。
例えば、集信デーモンを以下コマンドで起動した場合、ジョブ定義で出力を制御していない集信ジョブの標準出力はstdo.log、標準エラー出力はstde.logへ出力されます。
  hulrcvd >stdo.log 2>stde.log

ご指摘、ご質問などはコメントへお願いします。

Linux initプロセスとrc.dディレクトリ

ランレベル変更時に、initプロセス( uid=0 )により諸々(/etc/inittabに記載されている内容)が実行されます。
inittab には、各ランレベルに対する rc.d ディレクトリ(配下のスクリプト)の実行やキーボード操作の制御等が記載されています。

ランレベルが0のときは /etc/rc0.d 配下のスクリプトを実行 、ランレベルが1のときは rc1.d 配下のスクリプトを実行、等です。
/etc/rcX.d(X は0から6までの数字)配下のスクリプトは、/etc/init.d 配下のスクリプトのシンボリックリンクとなっています。
また、rcX.d 配下のスクリプト(リンク)の名前は、S 又は K 、2桁の数字で始まります。
S は起動するプロセス、K は停止するプロセスを表し、2桁の数字は実行順序(小さい数字→大きい数字 の順)を表しています。
例えば以下が /etc/rc5.d 配下に存在する場合、ランレベルを5に変更した際に、nfsdの停止、httpdとtestdの起動(httpd、testdの順)が実行されます。
  K95nfsd    S80httpd    S99testd

サーバを起動する場合は、/etc/inittab で default に設定されているランレベルでinitプロセスが実行されます。

init コマンドや runlevel コマンドでランレベルを変更することが出来ます。

ご指摘、ご質問などはコメントへお願いします。

HULFT 必要最低限の定義(設定)について

以下の話は、HULFTのバージョン 7、8です。

 HULFTで集信、配信、要求受付の際に定義(設定)が必要です。

集信の場合
    最低限だと集信管理情報、転送グループ情報と詳細ホスト情報が必要です。
    集信管理情報でジョブを指定している場合はジョブ情報の定義も必要になります。

配信の場合
    最低限だと配信管理情報、転送グループ情報、詳細ホスト情報、/etc/hostsの定義が必要です。
    配信管理情報でジョブを指定している場合はジョブ情報の定義も必要になります。

 要求受付の場合
    必要な定義は配信の場合と同様です。

集信、配信、要求受付には、それぞれデーモン(utlrcvd、utlsndd、utlobsd)の起動が必要です。

 ご指摘、ご質問などはコメントへお願いします。

HULFT 改行コード、文字コードの変換について

以下の話は、HULFTのバージョン 7、8です。

配信定義で、改行コードや文字コード、フォーマットを変換することが出来ます。

配信定義の転送タイプでバイナリ転送以外を指定した場合、コード変換で無変換を指定しても、配信元と集信先で情報ホスト情報を元に改行コードの変換が実行されます。
例えば、
    配信元の詳細ホスト情報のホスト種をUNIX
    集信先の詳細ホスト情報のホスト種をWindowsNT    で定義した場合、
    転送ファイルは改行コードはLFからCRLFへ変換されます。

そのため、コード変換(改行コードと文字コードの変換)を行いたくない場合は、転送タイプをバイナリ転送に指定する必要があります。

文字コードを変換(Shift-JISからUTF-8へ変換等)したい場合は、コード変換を配信側変換又は集信側変換を指定します。
変換する文字コードは、情報ホスト情報の漢字コード種類で指定します。

コード変換の指定により、変換処理のタイミング(配信側、集信側)を変えられます。
そのため、変換処理のタイミング(コード変換を配信側で処理するのか、それとも集信側で処理するのか)は、サーバのスペックや処理効率を考慮して決められます。

ご指摘、ご質問などはコメントへお願いします。

2017年1月10日火曜日

Linux パイプでの並行処理、戻り値について

コマンドの実行結果をもう1つのコマンドの引数として渡すために、パイプ( | )をよく使います。
例えば、実行中の全プロセスを表示(ps -ef)した結果から、単語(nfsd)のみを抽出(grep)する場合は、以下のコマンドを実行します。
    ps -ef | grep nfsd

パイプの使い方として、上記のように引数を渡すためではなく、(パイプの右側のコマンドが引数を必要としない場合に限りますが)並列処理を実行させることができます。
例えば、2つのシェルスクリプト(test1.shとtest2.sh)を並列(同時)に実行する場合は以下のように実行すします。
    time ./test1.sh | time ./test2.sh

いくつのコマンドまで並列処理で実行して処理が速くなるかはコア数にも依りますが、大概の場合は速くなります。

パイプを使った場合に取得できるコマンドの戻り値は、パイプの一番右のコマンドの戻り値のみとなります。そのため、(パイプを使うことを想定した際の一番右以外の)コマンドでエラーハンドリングしたい場合は、パイプが使えません。

パイプは非常に便利ですが、使い方次第です。

ご指摘、ご質問などはコメントへお願いします。

Linux initプロセスのuidについて

LDAPのユーザは除く各ユーザの uid は、/etc/passwd ファイルで確認できます。
また、ユーザでログイン後の id コマンドで確認することもできます(LDAPも確認可)。

上記の方法で確認できない init の uid は『0』です。

また、/etc/passwd で root の uid は『0』に設定されています。

そのため、init プロセス中に起動されたプロセス群は init ( uid が 0 ) が親プロセスとなりますが、ps コマンドで表示した場合、uid が 0 のユーザが root のため、root と表示されます。
(ps コマンドで uid での表示を指定しない場合、ユーザ名が表示されます)

ご指摘、ご質問などはコメントへお願いします。

Windows CIFSやようこそ画面によるログオン失敗について

Windowsへログオンする際に「ようこそ」画面を使っていると、アカウント選択時に(パスワードを設定している場合)パスワード入力プロンプトを表示しますが、その際に一度パスワード入力失敗が発生しています。
選択したアカウントにてパスワード入力無しでログオンを試行し、一度ログオンが失敗しています。ようこそ画面を使わない場合は自動でログオン試行(失敗)しません。

同様に、エクスプローラ(cifs)で他PCやサーバに接続時、ログオンしている機器と接続先のアカウントとパスワードが異なる場合、アカウントとパスワード入力画面が表示されますが、その際もログオンしているアカウントとパスワードでログオンを試行し、一度ログオンが失敗しています。

上記のログオン失敗により、認証先でログオン失敗のログ(セキュリティのイベントログ)が出力されます。

他PCやサーバに接続時にネットワークドライブを設定することで、ログオン失敗を回避できます。
ネットワークドライブは、画面やコマンド(net use)から設定が出来ます。

ご指摘、ご質問などはコメントへお願いします。

Linux uidの重複でのオーナー表示、パスワード変更について

Linuxでは、ユーザを作成するとユーザ毎に uid が割り当てられますが、作成時にuid を指定することが出来ます。

uid 指定時に、既に割り当てられている uid と同じ uid を指定して、uid が同一のユーザを作成することも出来ます。

ユーザ作成後にusermodコマンドでuidを変更することが出来ますが、既に作成されているuidへ変更(指定)することは出来ません。そのため、uidの重複したユーザを作成するには、作成時にuidを指定する方法のみです。

その場合、uid が重複したユーザが複数になるため、ls コマンドでオーナーを表示した際に、どちらか一方のユーザ(/etc/passwd ファイルの上に位置しているユーザ)が表示されます。
nscd(起動の有無、/etc/nscd.conf)の関係で、uid が重複しているユーザについて、表示されるオーナーが変わることがあります。
経験ですが、nscd.conf で、auto-propagateをnoに設定することで表示が変わります。なお、デフォルトではauto-propagateはyesです。

また、uid が重複しているどちらか一方のユーザでパスワードを変更した場合、もう一方のユーザのパスワードも変更されますので、注意が必要です。

ご指摘、ご質問などはコメントへお願いします。

Windows Oracle sqlnet.oraのNTSによる認証エラーについて

Windows Oracle sqlnet.oraのNTSによる認証エラー(ORA-01017)について
Windows OSにOracle Clientをインストールして、Accessなどを使ってOracleのデータベースへ接続する際、認証エラー(ユーザとパスワードを入力する画面が出ない)で接続出来ず、エラー(ORA-01017)が発生する場合があります。

sqlnet.oraに以下の記載があると、Windows認証情報(※)でOracleに自動で接続しようとしまするため、Windows OSにログオンしているユーザ&パスワードと同じ情報がOracleに登録されていない場合、認証エラーになることがあります。

SQLNET.AUTHENTICATION_SERVICES=(NTS)

Windows認証情報を使わず、Oracle認証情報でログインする場合は、sqlnet.oraの記載をコメントアウト(行頭に # を付ける)又は以下のようにNONEを設定します。

#SQLNET.AUTHENTICATION_SERVICES=(NTS)
    又は
SQLNET.AUTHENTICATION_SERVICES=(NONE)

コメントアウト又はNONEに設定した後は、OracleのIDとパスワードでログイン出来るようになります。設定変更した後、Windows OSの再起動やサービスの再起動などは不要です。

sqlnet.oraのデフォルト設定ではNTSとなっているため、注意が必要です。

※Windows認証情報…Windows OSにログオンしているユーザとパスワード

ご指摘、ご質問などはコメントへお願いします。

Linux メモリのコマンド、cached、buffers、書き込みについて

現在のメモリ(memory)の使用量は、free、top 、vmstat コマンドや/proc/meminfo を参照することで確認できます。
また、sar コマンドでは現在の値や過去(デフォルト10分毎)の情報を確認できます。

メモリは、高速に読み書きできるようにキャッシュとして使われます。
そのため、メモリ使用量を表示した際に、常に高い使用量(使用率)のように見えますが、実際にはキャッシュ(cached、buffers)で多く使われていることが多いです。
※サーバ起動後、メモリ使用率は徐々に増加して90%程度に推移します。

メモリ上のデータは、一時的にduty(メモリには書き込まれ、ディスクには書き込まれていない状態)となりますが、あるタイミングでclean(ディスクに書き込まれて、いつでもメモリから消えても問題ない状態)となります。
duty から clean になるタイミングは、メモリからディスクへの書き込みタイミングの設定によって異なります。
※pdflush が実行されるタイミング。

メモリのサイジング(見積り)には、cached/buffers を考慮する必要があります。
大きなサイズのファイルを読み書きする場合、メモリを chached/buffer として使うことで、パフォーマンスが上がる可能性が高いです。サイズの大きな同じファイルに連続でアクセスする場合は、さらにメモリによるパフォーマンス向上が期待できます。

cached/buffers のみに多くメモリが使われているからといって、メモリが過剰なサイズになっているとは一概には言えません。

ご指摘、ご質問などはコメントへお願いします。

Linux CPU使用率のコマンド、複数コアの計算について

現在のCPUの使用率は、top 、mpstat コマンドや/proc/cpuinfo を参照することで確認できます。
また、sar コマンドで過去(デフォルト10分毎)の情報を確認できます。

CPU使用率は、OSが認識しているコア数が関係します。
1コアであれば全CPU使用率は1コアの使用率と同じになりますが、4コアの場合の全CPU使用率は4コアの合計値となります。
例えば、各コアの使用率が、
   1コア目:100%
   2コア目:60%
   3コア目:40%
   4コア目:0%
の場合、全CPU使用率は50%((100+60+40+0)/4=50)となります。

mpstatやcpuinfo はコア毎に使用率(量)が表示されている項目があるため、全CPU使用率を確認する際は、全使用率の項目を確認する、又は合算するなどの注意が必要です。

ご指摘、ご質問などはコメントへお願いします。

資格の勉強(NW、SC、LPIC、ITIL)

勉強は、仕事への通勤電車(片道1時間以上)のみを利用しています。
あくまで資格取得を過程(モチベーション)として、基本知識の習得が目標です。
1年に1つの資格取得を目指し、日々勉強しています。積み重ねが大切、と自分に言い聞かせています。。

以下、取得順に、時系列で記載します。

・基本情報技術者、応用情報技術者
  勉強方法は、基本知識の習得を目的として参考書(何使ったか、失念)を読んで、過去問題( IPA のサイトからダウンロードして)数年分を解きました。
ひたすら過去問題を解く、根気があれば大丈夫だと思います。
アセンブラは慣れれば比較的優しい問題だと思いました。命令語は問題文に掲載されていますし、言語の特性として問題を難しく出来ない気がします。

・ORACLE MASTER Bronze
  勉強方法は、黒本のみです。
ブロンズなら実際の操作を触れる環境が無くても、憶えるだけで大丈夫だと思います。
むしろ、環境を作ることが出来れば、受かるのではないでしょうか。

・情報セキュリティスペシャリスト(現:情報処理安全確保支援士)(情報処理技術者試験)
  勉強方法は、基本情報技術者や応用情報技術者と変わず、参考書はポケットスタディを使い、過去問題で気になる用語(参考書の内容だけでは理解できない単語)を都度インターネットで調べました。
個人的にはポケットスタディだけでは、資格取得の参考書としては不足している感じでした。
ポケットスタディは、あくまで携帯し易く、見返すときに使いやすいという感覚です。
午前問題は、情報セキュリティスペシャリスト(現在は、情報処理安全確保支援士)ドットコムを利用して対策すると、いつでも場所を選ばず(本が不要)勉強できます。
午後問題は、ひたすら過去問題を解いて、解答を導き出す方法(基本的には問題文から関連する用語や文章を見つける)を身につけました。
この午後問題に対する取り組み方は、おそらくIPA資格を取得する場合にも通用すると思います。

・LPIC-1
  勉強方法は、黒本、小豆本、ping-t (無料の問題集のみ)のサイトを利用しました。
ping-t は解説が非常に分かり易いため、もっと早くに存在を知り活用できればよかったです。ping-tのコマ問で全て金にした後に模擬試験で正解率を90%以上を3回程度取れるようになれば、合格できると思います。

・LPIC-2
  勉強方法は、小豆本とping-t (有料の問題集)のサイトを利用しました。
有料のWEB問題集へ抵抗はありましたが、サイトの質と料金、本(問題集の本は資格取得後に読まなくなる)の必要性を考慮し利用に踏み切りました。この有料WEB問題集のおかげで合格できたので、大正解でした。LPIC-1と同じく、ping-tのコマ問で全て金にした後に模擬試験で正解率を90%以上を3回程度取れるようになれば、合格できると思います。

・ITIL ファンデーション
勉強方法は、黄色本とping-t (無料の問題集のみ)のサイトを利用しました。
ping-t の無料問題集は、活用すべきです。LPICと同様に、ping-tのコマ問で全て金にした後に模擬試験で正解率を90%以上を3回程度取れるようになれば、合格できると思います。

・ネットワークスペシャリスト(情報処理技術者試験)
  勉強方法は、参考書(3週間で分かるという本)で基礎知識を学び、ネットワークスペシャリスト ドットコムで午前2問題の対策、ネスペ本(ネスペの道とネスペの剣)で午後問題の対策しました。午前1問題は、応用情報技術者試験ドットコムで対策しました。
午前対策では、ドットコムで過去5年分を2回解きました。
ネスペ本を(理解出来るまで)読み込み、午後問題の過去問題を解きませんでしたが、過去問題は解いた方が無難です。
ネスペ本は、単なる勉強だけではなく、試験への考え方(試験作成者と対話等)でも有意義で、モチベーションを維持する上では何度も助けられました。
1度目の試験では、午後2の解答の書き方で試験作成者の意図を汲み取りきれなかった感じがしました。その点、2度目では解答例に近い答えを書くことに気をつけ、一度書いた解答の文章を見直しました。もちろん知識を問う部分もありますが、基本的には解答文を考えた後に、問題文中にヒントや解答として抜粋できる文章(単語)を見つけて、文章を再考することに時間を費やしました。

ご指摘、ご質問、アドバイスなどはコメントへお願いします。

自分のこと、仕事内容、経験、取得資格

このページは自分のことを整理(備忘的)、随時更新。

■仕事内容(IT業界、SE)

 現在:クラウドサービスベンダー
過去3:システムのインフラ系 運用保守(Linux、Windows) ※役割 メンバー兼リーダ
   ハードウェア(PC)更改の検討等
 過去2:システム更改のインフラ系 設計開発(Linux、Windows) ※役割 参画当初はメンバー→最終的には実質リーダ
 過去1:システムのインフラ系 運用保守(Linux、Windows) ※役割 メンバー

■経験
 Linux(RHEL)、Solaris、HP-UX
 Windows(XP/Vista/7、2000/2003/2008)
 HULFT
 NetBackup
 JP1/AJS3、JP1/IM、JP1/Base、JP1/Cm2(SSO、ESA)
 ウイルスバスター(Corp)
 ARCserve
 McAfee
 VMWare
 ORACLE 11g

■取得資格
 ※プロジェクトマネジャー試験に向けて、マイペースで勉強中
 情報処理安全確保支援士(登録番号 第000485号 ※2017/4/1取得)
 ネットワークスペシャリスト(2016/12取得)
 情報セキュリティスペシャリスト(2013/12取得)
 応用情報技術者
 基本情報技術者
 LinuC レベル3 300(有意性 2022/9/29)
 ITIL ファンデーション(2016/11取得)
 ORACLE MASTER Bronze

何かありましたら、コメントへお願いします。