Linuxを使う上での、基本的なTip
LastUpdate : 12/08/11
Linux(主にCentOS)を使う上での、基本的な事柄をまとめています。
まぁ・・・、よく使うわりには、あれしよー、これしよーと思うと、使い方を失念している、viの使い方。
内容はかなりいい加減です(とりあえず、やりたいことがやれればいいや的な感じで書いてます。普段の私もこんな感じで作業やってます)
とりあえず文字が入力したい | → | とりあえず、ESCキーを押して、「i」キーを押す。そうれば、インサートモード(文字を入力するモード)になる。 |
undoしたい | → | とりあえず、ESCキーを押して、「u」キーを押す。 |
直前の動作を繰り返す | → | とりあえず、ESCキーを押して、「.」(ピリオド)キーを押す。 |
画面をページ単位で移動する(下へ) | → | とりあえず、ESCキーを押して、Ctrlキー+「f」キーを押す(たぶん、Forwadのf)。 |
画面をページ単位で移動する(上へ) | → | とりあえず、ESCキーを押して、Ctrlキー+「b」キーを押す(たぶん、Backのb)。 |
文字を検索したい | → | とりあえず、ESCキーを押して、「 /検索したい文字 」+enterキーを押す。すると、検索対象の文字に、カーソルが移動します。 そして、カーソル位置から下の文字が検索したい場合は「 n 」キーを押す。 そして、カーソル位置から上の文字が検索したい場合は「 N 」キーを押す。 |
保存したい | → | とりあえず、ESCキーを押して、「!w」を入力してenterキーを押す。(開いたファイルの保存が行われる) |
保存しないで終了したい | → | とりあえず、ESCキーを押して、「q!」を入力して、enterキーを押す。 |
カーソルを←に移動 | → | とりあえず、ESCキーを押して、「h」キーを押す。 |
カーソルを→に移動 | → | とりあえず、ESCキーを押して、「l」キーを押す。 |
カーソルを↑に移動 | → | とりあえず、ESCキーを押して、「k」キーを押す。 |
カーソルを↓に移動 | → | とりあえず、ESCキーを押して、「j」キーを押す。 |
行番号を表示 | → | とりあえず、ESCキーを押して、:set number |
行番号を消去 | → | とりあえず、ESCキーを押して、:set nonumber |
swap領域はOSのインストール時に、固定的に決めますが、運用中、増やしたいなぁと思うときが、時々あります。HDDを追加で取り付けて、それをswap用のHDDとするか、ファイルを作成し、そのファイルをswap用としてOSに渡すか、の二種類ほど、方法があるみたいです。
HDDを追加する方法は、コストがかかる&難しい場合が多い(サーバと使用していて、直接接続されているHDDを使っているRAID構成などだと、ハードディスクをやたらと増やさないといけなかったり、RAIDの再構成が必要だったりと・・・という理由で、私はやりたくありませんw)と思われますので、HDD上にファイルを作成し、それをswap領域として使ってもらいます。
とりあえず512MB分のswap領域を追加してみます。
[root@ora_server swap]# dd if=/dev/zero of=swap bs=1024 count=524288 524288+0 records in 524288+0 records out 536870912 bytes (537 MB) copied, 4.95828 seconds, 108 MB/s [root@ora_server swap]# ls -hl total 513M -rw-r--r-- 1 root root 512M May 31 18:09 swap [root@ora_server swap]# mkswap swap Setting up swapspace version 1, size = 536866 kB [root@ora_server swap]# swapon swap [root@ora_server swap]# |
これで、swap領域として、使用するためのファイルの作成し、OSに、swapとして使ってね、と伝えました。
・・・ちなみに、swapon/swapoffする前後の状態は以下のとおりです。
[root@ora_server swap]# cat /proc/swaps Filename Type Size Used Priority /dev/xvda2 partition 530136 0 -1 [root@ora_server swap]# |
↓(swapon)
[root@ora_server swap]# swapon swap [root@ora_server swap]# cat /proc/swaps Filename Type Size Used Priority /dev/xvda2 partition 530136 0 -1 /var/swap/swap file 524280 0 -2 [root@ora_server swap]# |
↓(swapoff)
[root@ora_server swap]# cat /proc/swaps Filename Type Size Used Priority /dev/xvda2 partition 530136 0 -1 [root@ora_server swap]# |
/etc/rc.local が、OS起動時自動的に呼ばれるシェルらしい。
なのでここに、実行したいコマンドや、シェルを書いておけばOKらしい。
SSHの付属コマンド??(よくしらんwSSHのパッケージがインストールされていたら使えるっぽい?
このコマンドでコンソールから他ホストからファイルを持って来たり、他ホストへファイルを転送できます。
コマンドは以下の通り
scp <A> <B>
<A> : 転送するファイル
<B> : 転送先のファイルパス
で・・・、A/B共に、ローカルのファイルパスは、自分のファイルパスを指定すればOK。
他ホスト側の場合は「ログインするユーザー名@192.168.11.51:/tmp/」といういう感じで書く。
使用例:
(他ホストのファイルを、ローカルへ転送する。この例では、カレントディレクトリにあるa.txtを他ホスト(192.168.11.34)の、/var/www/htmlへ転送しようとしている)
このコマンドを実行すると、パスワードなどが問われたりしますが、その他ホストのユーザのパスワードを入力してやります。
scp a.txt root@192.168.11.34:/var/www/html/
デフォルトでは、22番ポートを使う・・・らしい。オプションでポート指定も可能(-Pオプション?)。
また、ディレクトリ毎転送する場合は「 -r 」オプションをつける
例: scp -r root@192.168.11.34:/var/www/html/centos/ ./
(他ホストのcentosというディレクトリをカレントディレクトリへコピーしている))
CentOS6の場合(ほかのでも一緒??)、以下で2TB以上のパーティーションを切れるようにすることが出来る。
OSのインストール時の場合、パーティーションを設定するところで、Ctrl+Alt+F2でコンソールを開ける。
コンソールで以下のコマンドを実行
parted /dev/sda
(parted) mklabel gpt
(parted) quit
partedの対象デバイスは、対象のHDDのデバイスを指定
上記コマンドを実行後、「Ctrl+Alt+F6」でGUIに復帰し、パーティーション設定を行う。
そして、パーティーション指定の画面で、いきなり全部の領域を割り振ることをしたらNGだった(CentOS6.2の場合)。/bootとかswapを追加してからやれば問題なく動く。
現在の、待ちうけ状態を確認
netstatコマンドを使用( オプションにて lをつけるとlistenになっているものを表示。tはTCP、uはUDP。なので「 netstat -tl 」などとやると、TCPで待ちうけしているポートの一覧が表示される)
対象のポートは、どのプログラムが使っているのか、調べる。
lsofコマンドを使用( 「 lsof -i TCP:ポート番号 」(コロンを忘れないこと)などと打ち込むと、TCPで指定されたポート番号を使用しているプログラムが表示される(PIDなど)。 )
PIDなどの情報を取得しても、まだ足りない場合
「 ls aux |grep さっき取得したPID 」などで、プロセス一覧を表示し、同一のPIDのデータを検索する。で、プログラムの名前がわかったら「 whereis プログラム名 」などで、どこにあるプログラムなのか、情報を取得。
で、たぶん、おおかた、情報は取得できる・・・ハズw
lvscanで対象LVのパスを調べlvremoveで削除可能みたいです。
[root@miranda ~]# lvscan ACTIVE '/dev/vol1/vol1-1' [1.03 TB] inherit ACTIVE '/dev/vol1/vol2' [64.00 GB] inherit [root@miranda ~]# lvremove /dev/vol1/vol2 Do you really want to remove active logical volume "vol2"? [y/n]: y Logical volume "vol2" successfully removed [root@miranda ~]# lvscan ACTIVE '/dev/vol1/vol1-1' [1.03 TB] inherit [root@miranda ~]# |
マシンの電源を切り、S-ATAのHDDを二つ追加しました。
BIOSにて、ちゃんと認識しているか確認を行います。
今回はソフトウェアRAIDでミラーリング(RAID1)を追加します。
通常通り、起動したならば、まずはfdiskにて追加したHDDに、パーティーションを作成します。
fdisk /dev/sdc
と、どのHDDに対し、fdiskを行うか指定します。必ず、どのHDDがどのデバイスファイルと結びついているのか、確認を行ってください。
パーティーションを作成し、パーティーションID(パーティーションのフォーマットタイプの指定)では「 fd 」を指定します(ソフトウェアRAID用の領域として、指定。「l」コマンドで、確認が可能です。「fd」は「fd
Linux raid auto」となっています)。
また、もう一方のHDDにも、同じ作業を繰り返します(ミラーリングなので、シリンダー数など、同じように設定します)
fdiskにて、wで、設定を書き込みますが、ビジー状態です、などのメッセージが出る場合があります。
その場合、マシンを再起動をさせます(partprobeというコマンドがある場合は、これを使ってもOK。が、個人的感情として、再起動したい感じです)
そして、以下のコマンドで、RAIDの設定を行う。
mdadm --create /dev/md3 --level=raid1 --raid-devices=2 /dev/sdc1 /dev/sdd1
/dev/の中にmd3がない場合はMAKEDEVを使って、md3を作成するなりして、準備しておきます(「/bin/MAKEDEV /dev/md3」みたいな感じでOKみたい?)。
これで、cat /proc/mdstat とかやると、md3が追加され、構築作業の進捗度が表示されるはずです。
そして、フォーマットを行います。
mkfs -t ext3 /dev/md3
これが完了したならば、
mount /dev/md3 /mnt
などと、マウントしてみて、アクセスできればOKです。
今まで、私は幸運にも、HDDが故障したことがありません。
なので、以下のことは、こーするといいらしい、という、私が実際にやってみたことのないことです。以下の方法ではダウンタイムが発生しますが、まぁ・・・個人のサーバなので、問題なしです。
HDDが故障した場合は、とりあえず、電源を止め、故障したHDDを新品のHDDに交換します。
再び、電源をいれ(この状態では、冗長性がない状態)、まずは、fdisk などで、パーティーションの設定をし、フォーマットを行います。
このとき、もう片っ方のHDDと同じ構成(パーティーションの区画やフォーマット)にします。
パーティーションのフォーマットが完了したならば、コンソールにて
mdadm --manage /dev/md0 --add /dev/sda1
mdadm --manage /dev/md1 --add /dev/sda2
mdadm --manage /dev/md2 --add /dev/sda3
と、交換したドライブのパーティーションをRAIDに組み込みます(/dev/sdaのドライブが故障した場合の例)。
すると、自動的にRAIDのリビルドが開始される様です。
実は、私はよくわかってないのですが(ぉ
CentOS5などは、最初にOSをインストールする時点で、RAIDの設定が行えます。ブートディスクのRAID設定も可能です。
で、今回の話は、ブートディスクをソフトウェアRAID1に設定した場合の話です。
通常、起動ディスクは /boot を使い、ここのマウント部分は / とは別パーティーションに行うのが、恒例かとおもいます(というか、/boot は特別なものだと思って、必ず別パーティーションに私はしてます)。
例として、/dev/sda と /dev/sdb の2台でソフトウェアRAID1を組んでいたとします(この中に/boot と swap と / 用の3個のパーティーションが有る)。この場合、たぶん、/dev/sda のほうに、grubが書きこまると思います。
で、OSのインストールが完了した時点では、片っ方のドライブのマスターブートレコードにしか、grubの情報が書き込まれていない状態になっているらしいです。
そのため、運用中、grubのデータが書き込まれたHDDがだめになった時、HDDを交換しようと、電源を切り、HDDを交換して、電源をいれても、生きているほうのHDDにgrubがはいっていないので、OSを起動できなくなってしまうようです。
そのため、ブートディスクのRAID1には、インストール直後、もしくは、HDD交換後は必ず、書き込まれていないもう片っ方のHDDにも、grubをコピーしておきます。
以下、やりかた。grubをコマンドを入力してから、しばらく待つと「 grub> 」という文字が表示され、入力待ちの状態になります。その状態になったら、以下のように、コマンドを打ち込んでいきます( ただし、以下の例は、/dev/sdaと/dev/sdbの2台がブートディスクで、ソフトウェアraid1に設定されている場合の手順 )
[root@chiki ~]# grub Probing devices to guess BIOS drives. This may take a long time. ←このメッセージが表示されてからしばらく待つ GNU GRUB version 0.97 (640K lower / 3072K upper memory) [ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename.] grub> device (hd0) /dev/sdb ←ここから、入力を行ってい( device (hd0) /dev/sdb ) device (hd0) /dev/sdb ←( (hd0) /dev/sdb) ) grub> root (hd0,0) ←( root (hd0,0) ) root (hd0,0) Filesystem type is ext2fs, partition type 0xfd grub> install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf ←( install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf ) install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf grub> quit ←( quit ) これで、完了 quit [root@chiki ~]# |
Linuxから、sambaで提供されている共有ディレクトリ(っていうのかしら?)にアクセスする方法です。
2種類ほどアクセス方法がある様子です(もっとあるかも?
方法その1.smbclient を使用してファイルのアクセスを行います。
[root@db2_server ~]# smbclient //minerva/FileServer -U alc ←-Uの後にユーザ名前を指定している Password: ←パスワードを入力 Domain=[MINERVA] OS=[Unix] Server=[Samba 3.0.25b-1.el5_1.4] smb: \> |
smbclinetのオプションは以下のとおりです
smbclient //<smbが動いているホストの名前orIPアドレス>/<共有フォルダのディレクトリ名> -U ユーザ名
青字の部分が、それぞれ環境によって書き換えなけければならない部分です。
「smb :\>]」まで、表示されたのならば、ここから、コマンド入力可能の状態となります(smbclient独自のコマンドで、ファイルをダウンロードしたりします)。
この状態で「?」か「help」と入力しenterキーを押すと、コマンド一覧が表示されます。
smb: \> help ? altname archive blocksize cancel case_sensitive cd chmod chown close del dir du exit get getfacl hardlink help history lcd link lock lowercase ls mask md mget mkdir more mput newer open posix posix_open posix_mkdir posix_rmdir posix_unlink print prompt put pwd q queue quit rd recurse reget rename reput rm rmdir showacls setmode stat symlink tar tarmode translate unlock volume vuid wdel logon listconnect showconnect ! smb: \> ? ? altname archive blocksize cancel case_sensitive cd chmod chown close del dir du exit get getfacl hardlink help history lcd link lock lowercase ls mask md mget mkdir more mput newer open posix posix_open posix_mkdir posix_rmdir posix_unlink print prompt put pwd q queue quit rd recurse reget rename reput rm rmdir showacls setmode stat symlink tar tarmode translate unlock volume vuid wdel logon listconnect showconnect ! smb: \> |
さらに、それぞれのコマンドの使い方が知りたい場合は
smb: \> help ls
のように、helpの後にコマンドを指定すれば、使い方が表示されます。
共有フォルダ内の移動はcdコマンドで行います
cd <移動したいディレクトリ>
ファイルのダウンロードは、getコマンドで行います。
get <ダウンロードしたいファイル>
終了したい場合はexitコマンドを使います。
exit
方法その2. マウントする
前者の方法よりこっちのほーが楽だと思います。
mount -t cifs -o username=alc //192.168.11.34/Fileserver2 /mnt
このコマンドで指定したディレクトリにてマウントできるらしい(例だと/mntディレクトリ)。usernameにはログインするユーザの名前を指定します。普通にこれのほーが便利です^^;
よく使う割りに、環境設定が終わったら、ほとんど触らなくコマンドのyum・・・(私だけ?w)
よく使い方を忘れますので、メモしておきます。
コマンドの前に・・・・・。
とりあえず、私は、このプラグインをインストールします。一番早いであろうサーバより、データを取得するように、データのDL先を変更するプラグインです。
yum install yum-fastestmirror
これで、このプラグインがインストールされます(CentOS5などの場合)。
yum update | → | とりあえず、OSのインストールが終わった後に使うコマンド(&日常的にも行ったりする)。 リポジトリに問い合わせを行い、インストールされているパッケージを最新版にアップデートする。「 yum update -y」とyオプションをつけると、アップデートしますか?的な質問に、yesを選んだことになり、yum update -y と打ち込むだけで、自動的にアップデートが完了する。 |
yum update ○○○ | → | yum updateでは、すべてのパッケージが対象だが、updateの後ろにパッケージ名を指定することで、そのパッケージだけが、アップデートされる。 |
yum list | → | インストールできる、パッケージの一覧を表示する。 |
yum info ○○○ | → | infoの後ろにパッケージ名を指定することで、パッケージの情報を表示させることができる。 |
yum install ○○○ | → | installの後ろにパッケージ名を指定することで、指定したパッケージをインストールすることができる。 |
yum remove ○○○ | → | removeの後ろにパッケージ名を指定することで、指定したパッケージをアンインストールすることができる。 |
yum list installed | → | インストールされているパッケージの一覧を表示する。 |
yum clean | → | yumがキャッシュしているデータをクリアする。 |
RedHat系のLinuxを使っている割に、全然rpmコマンドを知りません。
・・・昔はSlackware使っていたので、よく知りませんtt
で、それからしばらくLinuxを使わなくなり、再び使うようになってからは、CentOSかFedoraを使っているため、rpmコマンドを使う機会がありませんでした。
まぁ、言い訳はいいとして、とりあえず、よく使いそうなコマンド一覧です。
rpm -i ○○○ | → | ○○○で指定されたパッケージをインストールします。普段は、いくつかのオプションを追加し、使う感じ?
rpm -ivh ○○○とかやると、詳細を表示しながら、パッケージのインストールが行われます(vで詳細表示、hで進行情報の表示)。 |
rpm -F ○○○ | → | ○○○で指定されたパッケージのアップデートを行います。rpm -Fvh ○○○とかやると、指定されたパッケージのアップデートを行います。指定されたパッケージがインストールされていない場合、何もしない・・・らしい。 |
rpm -e ○○○ | → | ○○○で指定されたパッケージのアンインストールを行います。 指定されたパッケージが、ほかのインストールされているパッケージと依存関係がある場合、エラーメッセージが帰ってくる。 |
rpm -qa | → | インストールされているパッケージの一覧を表示する。 |
rpm -i --test ○○○ | → | ○○○で指定されたパッケージがインストールできるか、テストを行う(実際のインストールを行わない)。 |
CentOS6になったら、超便利コマンドsetupがなくなっててショックだった・・・。しかし、インストールすれば復活させられる。
yumで各自のソフトウェアをインストールする
yum install setuptool
yum install ntsysv
yum install system-config-network-tui
yum install system-config-firewall-tui
インストールを終わらせ、setupと打つと、いつもの画面が立ち上がる。
3wareのRAIDカードのwebベースの管理ツールです。web上でファームウェアアップデートなんかも出来たりします。
http://www.lsi.com/ の製品ページから、自分が持っているRAIDカードを選択して、3dm2のソフトウェアをダウンロードしてきます。
私がダウンロードしたファイルは「3DM2_CLI-Linux_10.2.1_9.5.4.zip」でした。unzipで解凍します(unzipがインストールされてないなら「yum
install unzip」でインストール)
解凍したファイルの中に、「install.sh」があるので、以下のコマンドで実行する
./install.sh -i
(引数に-iをつけないとダメ)
インストールウィザード中、ライセンスの確認の場合は「y」を入力。
以下のようなメッセージが出力され、モード選択をするところは「0」でよいかと。
3DM2 supports two modes of operation.
-------------------------------------
0 - 3DM2 with WEB interface
1 - 3DM2 Error/Event Logger only
インストール後、サービスが動いているか、以下で確認可能。
service tdm2 status
起動していない場合は、起動させる。
ファイヤウォールの888番ポートをオープンし、ブラウザで「https://<IPアドレス>:888/」にアクセスすれば、3dm2の画面にアクセスできます。(証明書のエラーは無視する)。
※windowsから見る場合
windowsのpatchが原因で、今のところ(12/08/12)、windows機から画面にアクセスしても真っ白な画面しか表示されません。
この件に関して、3dm2の対応版が出ている。
http://kb.lsi.com/KnowledgebaseArticle16625.aspx
対象のファイルをダウンロードして、「service tdm2 stop」で3dm2のサービスと止めた後、3dm2のファイルを対応版と差し替える。そして、サービスを起動させる。
そうすれば、みれるようになります。