24
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NJCAdvent Calendar 2018

Day 17

サクッと分かるHP-UX

Last updated at Posted at 2018-12-16

こちらは「NJC Advent Calendar 2018」の17日目の記事です。

#:clock12:はじめに
まず、HP-UXとはヒューレット・パッカード・エンタープライズ(HPE)社製(旧ヒューレット・パッカード)のUNIXオペレーティングシステムのことです。

・「Linuxは知ってるけどUNIXって??」
・「HP-UXのことを少しでも知っておきたい」

ということを意識した記事にしたいと思います。
UNIXサーバの全般について記載したいですが、HP-UX(バージョンは11iv3)の運用に触れます。

なかなかHP-UXサーバを運用する機会はないと思いますが、運用するにあたり基礎知識や運用コマンドを中心にまとめたいと思います。

#:clock1:UnixとLinuxの違いって?
UnixとLinuxって似ています。(GUIではなくCUI、コマンドがほぼ一緒、安定性がある、なんていったって軽い!!)
しかし、UnixとLinuxはまったく別のOSです。大きな違いは以下2点。

・ Unixは企業が開発して、知的財産権が企業に属している。
 ※商標の所有者(The Open Group)から認証を受けたシステムのみが「UNIX」と位置付けられる。
  主なOS:HP-UX、Solaris、macOSなど

・ Linuxはオープンソースソフトウェアで無料な上、配布や改変も自由。
 ※LinuxはUnixを参考にして0から作ったものです。(UNIXは著作権があり、機能バージョンアップが自由に出来ない為。) ちなみにLinuxを作ったリーナス・トーバルズさんはGitも作っていますね。

歴史を簡単に表した以下の図が分かりやすいです。ウィキペディアより引用
キャプチャ4.PNG

#:clock2:HP-UXのディレクトリ構造は?
ディレクトリ、Windowsでいうとフォルダになりますが、Windowsのように_C:_、_D:_ではなくUNIXやLinuxは全て/(root)ディレクトリを起点として全てのディレクトリ、ファイルがルートディレクトリの配下にはいる以下のようなツリー階層型となります。
LinuxやUnix系OSはFHS(Filesystem Hierarchy Standard)をベースにしているのでどのOSを使おうとも初期の階層は似ています。厳密にはUNIXはFHSには準拠していないので違いますが、基の考え方はUNIXからきているのでほぼ一緒です。
キャプチャ.PNG

Filesystem Hierarchy Standard
Filesystem Hierarchy Standard(ファイルシステム・ヒエラルキー・スタンダード、FHS、ファイルシステム階層標準)は、Linuxを含むUNIX系オペレーティングシステムでの主なディレクトリとその内容を定めたものである。大部分において、BSD系のディレクトリ階層を基にして拡張し定式化している。
ウィキペディアより引用

また、HP-UX(というよりもUnix系OS全般)では、物理的なハードディスクドライブを複数まとめてVG (ボリュームグループ)を構成します。この中から論理ボリューム(lvol)を切り出し、HP-UXシステム上のディレクトリにマウントして使用します。(論理ボリューム毎にサイズを決定します。)DVD/CDも同様に、HP-UXシステム上のディレクトリにマウントして使用します。※下図参照
キャプチャ1.PNG

ここでは初期構築時に自動で作成される階層を紹介します。

ディレクトリ 説明
/ ルートディレクトリ
/dev Deviceの意味
デバイス特殊ファイルが配置されます。
デバイス(装置〈ハードウエア〉)を
ファイルとして扱う為。
※CPUやdiskなど
/etc Et Ceteraの意味
• ネットワークの構成
• マウント対象とするファイルシステムの設定
• ユーザーとグループの定義
• 論理ボリュームの定義
/etc/opt/product オプション・製品をインストールすると
製品構成情報の多くはここに配置されます。
※productが製品名となる
/home ユーザアカウントのホームディレクトリです。
※unixユーザなら/home/unixとなる。
ログイン起動時に読み込まれる.profileなどの
ファイルがある。
/opt Optionの意味
アプリケーションインストール用となる
ディレクトリです。
/sbin System Binary fileの意味
システム管理用コマンドのバイナリファイル
などが配置されています。
/stand カーネル用のディレクトリとなります。
/tmp Temporaryの意味
一時的なファイルが配置されています。
/usr User Services and Routinesの意味
共有可能なユーザコマンド、ライブラリなどの
ためのディレクトリとなります。
/var Variationsの意味
ログファイル、ダンプファイルなどのための
ディレクトリとなります。

#:clock3:Unixの運用コマンド集

##:soccer:基本的なコマンド
運用時によく使用するコマンドとオプションをまとめます。

###■ ファイル・ディレクトリ操作

##pwd
・よく使う度:★★★★★
・「present working directory」の略
・自分が今いるディレクトリを知ることは大事です

$ pwd
 /opt/product 

##cd

・よく使う度:★★★★★
・「change directory」の略
・他のディレクトリに移動するときに使います

# ホームディレクトリに移動 
$ cd                 
       
# ひとつ上のディレクトリに移動
$ cd ../    

# /opt/productに移動
$ cd /opt/product 

# 直前のディレクトリに戻る
$ cd -          

##ls
・よく使う度:★★★★★
・「list」の略
・ディレクトリに存在するディレクトリやファイルを一覧で表示します

# 現在のディレクトリのファイルを一覧表示
$ ls                 
app                  lost+found           bin                  
net                  core                 nohup.out            
data1                opt                  data2                
sbin                 dev                  stand                
etc                  tmp                  home                 
usr                  SD_CDROM             lib                  
var

# 現在ディレクトリの隠しファイルを含めて一覧表示
$ ls -a          
.                    app                  lost+found           
..                   bin                  net                  
core                 nohup.out            data1                
opt                  data2                sbin                 
.rhosts              dev                  stand                
.rnd                 etc                  tmp
.sw                  home                 usr
SD_CDROM             lib                  var

# 現在ディレクトリの詳細情報を一覧表示
$ ls -l
合計 50646
drwxr-xr-x  18 root       root          8192 12月  5日  10:48 .
drwxr-xr-x  18 root       root          8192 12月  5日  10:48 ..
-rw-r-----   1 root       sys            112  8月 27日 2013年 .rhosts
-rw-------   1 root       sys           1024  7月 19日 2013年 .rnd
drwxr-xr-x   6 root       sys             96  7月 19日 2013年 .sw
drwxrwxrwx   2 root       sys             96  7月 20日 2013年 SD_CDROM
drwxrwxrwx  10 root       root          1024  4月 21日 2014年 app
lr-xr-xr-x   1 bin        bin              8  8月 27日 2013年 bin -> /usr/bin
-rw-------   1 root       sys        3508464  8月 22日 2013年 core
drwxrwxrwx  10 root       root          1024  4月 21日 2014年 data1
drwxrwxrwx   6 root       root          1024  2月  2日 2014年 data2
dr-xr-xr-x  24 bin        bin           8192 10月 31日 2017年 dev
dr-xr-xr-x  41 bin        bin           8192 10月 31日 2017年 etc
drwxr-xr-x  11 root       root          8192  4月 20日 2015年 home
lr-xr-xr-x   1 bin        bin              8  8月 27日 2013年 lib -> /usr/lib
drwxr-xr-x   2 root       root            96  7月 19日 2013年 lost+found
dr-xr-xr-x   1 root       root             1 10月 31日 2017年 net
dr-xr-xr-x  103 bin       bin           8192  5月 26日 2014年 opt
dr-xr-xr-x  16 bin        bin           8192  4月 21日 2014年 sbin
dr-xr-xr-x   9 bin        bin           8192 10月 31日 2017年 stand
drwxrwxrwt   9 root       root          8192 12月  5日  11:55 tmp
dr-xr-xr-x  23 bin        bin           8192 11月 12日 2013年 usr
dr-xr-xr-x  31 bin        bin           8192 11月 12日 2013年 var

※「$ ll」でも同様、「$ ls -la」のように隠しファイルも表示させたいときは組み合わせることも可能

※補足(ファイル属性について)
上記「$ ls -l」結果のでファイルの属性情報を表示しています。
それぞれ、ファイルの種類と許可権限、ハードリンク数、所有者とグループ名、ファイルサイズ、タイムスタンプ、ファイル名となります。
その中でファイルの種類と許可権限(パーミッション)を補足します。
キャプチャ3.PNG
 ① ファイルの種類:「-:ファイル」「d:ディレクトリ」「l:シンボリックリンク」
 ※ハードリンク・シンボリックリンクの説明はこちらを参照下さい。
 ② 所有者(User)の権限
 ③ グループ(Group)の権限
 ④ 他人(Others)の権限
 ※権限(パーミッション)は「読み出しの許可」「書き込みの許可」「実行の許可」があり、それぞれ「読み出し(r)」
  「書き込み(w)」「実行許可(x)」を示しています。「-」の場合は、該当する許可がありません。

##mkdir
・よく使う度:★★★
・「make directory」の略
・ディレクトリを新規作成します

# sampleディレクトリを作成
$ mkdir sample  
       
# 中間ディレクトリも合わせて作成
$ mkdir sample/sample1

# パーミッションを指定しディレクトリを作成
$ mkdir -m 777 sample

※補足(パーミッションについて)
パーミッションについては、数値で指定することができます。

数値(モード) アルファベット 権限
4 r 読み出し
2 w 書き込み
1 x 実行
0 - 許可なし

上記の数値の合計を「所有者」「グループ」「他人」の順でそれぞれ入力することでパーミッションを付与します。
例えば「777」の指定なら以下の許可となります。
・所有者 :「読み出し」「書き込み」「実行」
・グループ:「読み出し」「書き込み」「実行」
・他人  :「読み出し」「書き込み」「実行」
(表示上はdrwxrwxrwx)

また、「740」の指定なら
・所有者 :「読み出し」「書き込み」「実行」
・グループ:「読み出し」
・他人  :なし
となります。
(表示上はdrwxr‐‐‐‐‐)

##rmdir
・よく使う度:★★★
・「remove directory」の略
空のディレクトリを削除します

# sampleディレクトリを削除
$ rmdir sample  
       
# 削除すると親ディレクトリも空になる場合、親ディレクトリも一緒に削除
$ mkdir -p sample/sample1

※sampleとsample1が同時に削除される。(空の場合)

##cp
・よく使う度:★★★★
・「copy」の略
・ファイルやディレクトリをコピーします

# 同一ディレクトリに名前を変更してコピー
$ cp sample.txt sample_201812.txt  
       
# 別のディレクトリに名前を変えずにコピー
$ cp sample.txt sample/sample1

# 全てのテキストファイルを別のディレクトリにコピー
$ cp *.txt sample/sample1

# ディレクトリを再帰的にコピー
$ cp -R sample2 sample/sample1

##mv
・よく使う度:★★★★
・「move」の略
・ファイルやディレクトリを移動します

# 同一ディレクトリに名前を変更して移動(ファイル名を変更)
$ mv sample.txt sample_201812.txt  
       
# 別のディレクトリに名前を変えずに移動
$ mv sample.txt sample/sample1

##rm
・よく使う度:★★★
・「remove」の略
・ファイルやディレクトリを削除します

# ファイルを削除
$ rm sample.txt

# 全てのテキストファイルを削除
$ cp *.txt

# ディレクトリを削除
$ rm -r sample/sample1

##find
・よく使う度:★★★
・ファイルやディレクトリを検索します

# sample.txtをsampleディレクトリ以下から検索
$ find sample -name sample.txt
/sample/sample1/sample.txt

# sampleが頭に付くファイル・ディレクトリをsampleディレクトリ以下から検索
$ find sample* -name sample.txt
/sample/sample1
/sample/sample1/sample.txt
/sample/sample2

# sample以下から60日以上前に更新されたtxt形式のファイルを検索
$ find sample -name "*.txt" -atime +60
/sample/sample1/test.txt
/sample/sample2/test2.txt

# sample以下からuser1が作成したファイル・ディレクトリを検索
$ find sample -user user1
/sample/sample1/test.txt
/sample/sample2/test2.txt

※「-ls」オプションを使用するとファイル属性を含めた情報が表示されます。

##touch
・よく使う度:★★
・ファイルの更新日時の変更や空ファイルを作成します(主に空ファイルを作成するのに使用)

# ファイルのタイムスタンプを現在の時間に変更
$ touch sample.txt

# 空のファイルを作成(ファイルが存在していない場合)
$ touch sample.txt

###■パーミッション
##chmod
・よく使う度:★★★★
・「change mode」の略
・ファイルやディレクトリのアクセス権限を変更します

# ファイルのアクセス権を変更
$ chmod 744 sample.txt

# 全てのテキストファイルのアクセス権を変更
$ chmod 740 *.txt

# ディレクトリのアクセス権と中のファイル・ディレクトリの権限も再帰的に変更
$ chmod -R 700 sample1  

※数値については、上述した補足(パーミッションについて)を参照して下さい。

##chown
・よく使う度:★★★★
・「change owner」の略
・ファイルやディレクトリの所有者を変更します

# ファイルの所有者をuserに変更
$ chown user sample.txt

# ディレクトリの所有者と中のファイル・ディレクトリの所有者も再帰的に変更
$ chown -R user sample1

# ファイルの所有者をuserに変更し、グループをusergroupに変更
$ chown user:usergroup sample.txt

###■運用コマンド(各種情報の表示など)
##top
・よく使う度:★★★★★
・プロセス一覧をリアルタイムで表示します。デフォルトではCPU使用率の高いプロセスから表示します。

$ top
System: HPUXSV                                      Wed Dec  5 10:20:38 2018
Load averages: 0.18, 0.19, 0.20
463 processes: 387 sleeping, 76 running
Cpu states:
CPU   LOAD   USER   NICE    SYS   IDLE  BLOCK  SWAIT   INTR   SSYS
 0    0.17  57.4%   0.0%   3.0%  39.6%   0.0%   0.0%   0.0%   0.0%
 2    0.20  22.8%   0.0%   3.0%  74.3%   0.0%   0.0%   0.0%   0.0%
 4    0.19  31.7%   0.0%   5.9%  62.4%   0.0%   0.0%   0.0%   0.0%
 6    0.17  33.0%   0.0%   7.0%  60.0%   0.0%   0.0%   0.0%   0.0%
---   ----  -----  -----  -----  -----  -----  -----  -----  -----
avg   0.18  37.0%   0.0%   4.0%  59.0%   0.0%   0.0%   0.0%   0.0%

System Page Size: 4Kbytes
Memory: 6476440K (4000936K) real, 9430388K (6248476K) virtual, 20137084K free  P
age# 1/52

CPU TTY  PID USERNAME PRI NI   SIZE    RES STATE    TIME %WCPU  %CPU COMMAND
 6   ?  6193 user     152 20   853M   610M run   35741:59 11.96 11.94 java
 4   ?  6519 user     154 20 77432K 17048K sleep  293:53  2.00  1.99 postgres:
 6   ?  6195 user     152 20  2532M  2380M run   28825:19  0.98  0.98 java
 6   ? 11994 user     168 20  5516K   608K sleep    0:00  0.55  0.47 csh
 0   ?  3124 root     168 20 15804K  1204K sleep 2461:09  0.45  0.45 utild
 4   ?  6289 user     154 20 61404K  3964K sleep  178:36  0.35  0.35 postgres:
 2   ?  6162 user     152 20   576M   418M run   25052:29  0.26  0.26 java

※qで終了します

※補足(topコマンドの項目の意味について)
■各項目の意味
・Load average:
  過去1分、5分、15分の間のload average(run queueにたまっていたプロセス数)

・process:
  sleeping -sleep状態になっているプロセスの数
  running -現在run状態のプロセスの数

・Cpu Status:
  Load averageとCPUがそれぞれ何の目的で使用されたかの時間の割合を表示
    CPU - 過去1分のLoad average
    USER - user processがuser modeでの実行に使用した割合
    NICE - user processがuser modeでの実行に使用した割合(nice設定されたもの)
    SYS - user processsがkernel modeで実行した割合
    IDLE - 何もしていなかった割合
    BLOCK- spinlockによってblockされていた割合
    SWAIT- kernel semaphoreによってblockされていた割合
    INTR - Interruptを実行していた割合
    SSYS - kernel processがkernel modeでの実行に使用した割合

・Memory:
  real  - system上の全プロセスのtext,data,stack領域に使用されている実メモリ上領域
        ()の中はアクティブな状態のプロセスが使用している物理メモリの合計
  virtual- system上の全プロセスのtext,data,stack領域に使用されている仮想メモリ上領域
  free - 未使用の実メモリ上の領域

・process list:
  TTY - プロセスの制御端末
  PID - プロセスID
  USERNAME - プロセスの実行ユーザ名
  PRI - プロセスのプライオリティ
  NI - NICE値
  SIZE - プロセスのprivate領域の合計値
  RES - プロセスに割り当てられている実メモリの量
  STATE - プロセスの状態
  TIME - プロセスがCPUを使用した時間の合計
  %WCPU - 加重CPU使用率(processのschedulingに使用)
  %CPU - 単純CPU使用率(この値が高いものより表示)
  COMMAND - 実行中のコマンド名

##bdf
・よく使う度:★★★★★
・ディスクの使用状況を表示します。(HP-UXのみ、他のUNIX系はdfコマンドを使用)

$ bdf
Filesystem          kbytes    used   avail %used Mounted on
/dev/vg00/lvol3    4194304  309288 3854784    7% /
/dev/vg00/lvol1    2097152  376208 1707560   18% /stand
/dev/vg00/lvol9    16777216 6815568 9885320   41% /var
/dev/vg00/lvol10   8388608   19165 7846488    0% /var/adm/crash
/dev/vg00/lvol8    16777216 5326480 11361312   32% /usr
/dev/vg00/lvol7    2097152   44672 2036648    2% /tmp
/dev/vg00/lvol6    16777216 6271224 10424088   38% /opt
/dev/vg00/lvol5    2097152   55600 2025696    3% /home
/dev/vg00/lvol4    40861696 5564508 33106840   14% /app
/dev/vg01/lvol1    1073725440 9953656 997286523    1% /data1
/dev/vg02/lvol1    1073725440 190567197 827960932   19% /data2

※kbytes:ファイルシステム内の使用可能容量の合計
※used:使用されている容量
※avail:使用可能容量

##grep
・よく使う度:★★★★
・「global regular expression print」の略
・テキストファイル中から、正規表現に一致する行を検索して出力します

$ vi sample.txt
"sample.txt" 5行,36文字
1 apple
2 melon
3 orange
4 cherry
5 plum

# sample.txtから「a」という文字を検索
$ grep 'a' sample.txt
1 apple
3 orange

# and条件をつける
$ grep 'a' sample.txt | grep 'g'
3 orange

※|は「パイプ」といい、コマンドを繋げることができます

##ps
・よく使う度:★★★★
・「process status」の略
・実行中のプロセスを表示します。トラブル時は意外と使用します

# 自分が実行しているプロセス一覧を表示
$ ps
   PID TTY       TIME COMMAND
 15072 pts/te    0:00 ps
 15035 pts/te    0:00 telnetd
 15041 pts/te    0:00 sh

# 他のユーザが実行しているプロセスを含め一覧(親子プロセス)を表示
$ ps -ef
     UID   PID  PPID  C    STIME TTY       TIME COMMAND
    root     0     0  0 12月 22  ?        10:52 swapper
    root     1     0  0 12月 22  ?        58:16 init
    root    13     0  0 12月 22  ?         0:00 net_str_cached
    root    12     0  0 12月 22  ?         0:00 usbhubd
    root    11     0  0 12月 22  ?         2:02 escsid
    root    10     0  0 12月 22  ?         0:00 ttisr
    root     9     0  0 12月 22  ?        12:22 ksyncer_daemon
    root     8     0  0 12月 22  ?         0:00 ioconfigd
    root     7     0  0 12月 22  ?         0:00 kai_daemon
    root     6     0  0 12月 22  ?        483:11 kmemdaemon
    root     5     0  0 12月 22  ?         0:00 signald
    root    14     0  0 12月 22  ?         0:00 net_str_cached
    root    23     0  0 12月 22  ?         0:29 lvm_kt_proc

# grepと組み合わせることで確認したいプロセスをピンポイントで表示
$ ps -ef | grep hul
    root  8173     1  0  Apr  8  ?         6:40 ./hulsndd
    root  8246     1  0  Apr  8  ?         0:00 ./hulrcvd

##:soccer:(運用編)注意が必要なコマンド
運用時に使用する際に注意が必要なコマンド及び注意内容をまとめます。

コマンド         コマンド概要   注意事項             
arp      アドレス変換の表示と制御 変更前に"-a"オプションで現在の状態を確認する。
cat      ファイルの連結、コピー、および出力 連結先のディレクトリに十分な空き容量があることを事前に確認する。
chmod     アクセスパーミッションの変更 変更前に"ls -l"で現在の設定を確認する。
chown     所有者またはグループの変更 変更前に"ls -l"で現在の設定を確認する。
compact    ファイルの圧縮、展開、出力および連結 ・コピー先のファイルが存在しないことを事前に確認する。存在する場合は、上書きによる影響範囲を事前に確認する。
・コピー先のディレクトリに十分な空き容量があることを事前に確認する。
compress   データの圧縮および展開 ・圧縮元ファイルが削除されることによる影響範囲を事前に確認する。
・圧縮先に十分な空き容量があることを事前に確認する。
cp      ファイルおよびディレクトリサブツリーのコピー コピー先のディレクトリに十分な空き容量があることを事前に確認する。
kill     シグナルをプロセスに送信、プロセス強制終了 psコマンドにより、対象プロセスを特定した後に実行する。
mv      ファイルおよびディレクトリの移動または名称変更 ・移動先のディレクトリに十分な空き容量があることを事前に確認する。
・作業前にバックアップ可能か確認する。
rm      ファイルまたはディレクトリの削除 ・"-r"オプションは使用せず、ディレクトリ削除はrmdirを使用する。
・作業前にバックアップ可能か確認する。
vi      スクリーン指向の (ビジュアル) テキストエディター 編集前にバックアップを取得する。

##:soccer:(運用編)極力使用しない方がよいコマンド
調べると普通に使っている場合があるので注意!!
(あくまで運用でミスをしないようにするために個人的に使用しないほうがよいと判断していたコマンドです。
必要に応じて使用する場面はあります。)

コマンド      コマンド概要   注意事項
date     日時の表示と設定 日時の確認が必要な場合は、"sar 1 1`を使用する。
hostname 現在のホストシステム名の設定または表示 ホスト名は、ログイン時のメッセージで確認する。
ifconfig ネットワークインタフェースのパラメータの設定 ・NIC設定状況確認は、lanscan、netstatを使用する。
・設定は、ネットワーク関連ファイルを修正し、サーバを再起動し反映する。
killall   全アクティブプロセスの抹消 psコマンドで対象のプロセスを確認した上でkillコマンドを使用する。
reboot   システムのリブート ・各サービスの終了処理が終わらない場合に使用する。
・通常は、"shutdown -r -y 0"を使用する。
uname    コンピュータシステムの情報の表示とノード名(システム名)の設定 参照用の"-a"オプションのみ使用する。

#:clock4:まとめ
特にコマンドはOS特有のものもあります。
慣れれば色々と試したくなりますが、影響がないことをよく見極めた上で使用することをお薦めします。

24
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?