Linux/メモ

Top/Linux/メモ

memo


  • 詰め込みすぎたから分離しないとかも


createrepo

  • DVDから俺々リポジトリをつくる。ディスクの中身をまるごとローカルにコピーして、コピーしたファイル郡にたいしてcreaterepoするだけ
  1. マウント
    mkdir /mnt/RHEL54
    mount -t iso9660 /dev/dvd /mnt/RHEL54
  2. コピー。場所はどこでもいいんだけど。ひとまず下は例。
    mkdir -p /var/pub/RPM
    cp -rv /mnt/RHEL54 /var/pub/RPM
  3. createrepoインストール
    rpm -ivh /var/pub/RPM/RHEL54/Server/createrepo-0.4.11-3.el5.src.rpm
  4. repodataつくる。ほんとうはServerとかVTとかで別々のポリシで運用するべきなんだろうけど面倒なのでいっしょにしちゃう(ただしgroupinstallは使えなくなる)
    createrepo -v /var/pub/RPM
    • この時点で外部にhttpで公開しないのであればローカルリポジトリは完成。
    • repoファイルのbaseurlとして以下を記述するだけ
      file:///var/pub/RPM
    • groupinstallを使える状態でリポジトリを作るなら、Server、Cluster、ClusterStorage、VTそれぞれにたいして別々にcreaterepoして、かつrepoファイルで別々に指定しないといけない(たぶん)
      • createrepo時に -g で規定のxmlファイルを指定する。下はServerに対する例
        createrepo -g /var/pub/RPM/RHEL54/Server/repodata/comps-rhel5-server-core.xml /var/pub/RPM/RHEL54/Server
      • repodata/comps-rhel5-<hoge>.xml にグループの情報があるようす。これ、全部のxml結合して放りこんだら一箇所で済むのかな。どうなんだろ
  5. 使う前にキャッシュ消す
    yum clean all
  6. 外部公開するのに必要なこと
    1. httpdのインストール(上のfile:///にしてyumるかあるいはrpmから直接)
    2. httpdの設定と起動
      • /var/pub/RPMを公開する。/etc/httpd/conf.d/RPM.confとか作って記述
        Alias /RPM "/var/pub/RPM"
        <Directory "/var/pub/RPM">
         Options Indexes
        </Directory>
    3. repoファイルつくる

swapout/pageout

  • スワップアウト
    • プロセスごとスワップに入れる
  • ページアウト
    • 足りないページ分だけスワップに入れる
  • UNIX/Linuxの違い
    • Linuxにはスワップアウトはない

mysql

rootのパスワード

set password for root@localhost=password('<password>');

バックアップ

  • ダンプとる
    • 特定のDBのみ
      mysqldump -u root <database-name> > hoge.dmp
    • 全部
      mysqldump -u root -x --all-databases > hoge.dmp
  • ダンプから戻す
    • 特定のDBのみ
      mysql -u root <database-name> < hoge.dmp
    • 全部
      mysql -u root -p < hoge.dmp

68kb_v2

  • 要mysql。68kbはv2を落としてきて入れる
  • うごかない(未解決)
    • index.php/admin で User タブにいくとエラー
      An Error Was Encountered [ 500 ]
      Unable to locate the models file: orders/orders_model.php
    • Add article して Save しても 404
      • そもそも articles なんてディレクトリできてない・・・・・・。
  • /var/log/httpd/error_log によれば
    [Fri Sep 30 10:56:39 2011] [error] [client 192.168.0.11] PHP Fatal error:
     Call to a member function parse() on a non-object in /var/www/html/68kb/system/68kb/libraries/Template.php on line 266,
     referer: http://station11/68kb/index.php/admin/kb/articles
    だそう。
    • 該当個所はここ
       $result = $this->_ci->simpletags->parse($this->_body, $this->_data, array($this->_ci->events, 'parser_callback'));
  • 必要そうなファイルがいろいろ無い気がするんだけどなんだろう

68kb_v1

  • さくっとうごいた。ドキュメント読めばすぐできる

yum

  • Transaction Test時にmount領域を舐めるっぽい
  • nfs領域をマウント済み状態、かつリモートサイトに正常にアクセスできない(ポートを閉じてるとかシャットダウン状態とか)と舐められずに固まる
    • 固まった状態を直すためには kill -9 で yum を殺して /var/run/yum.pid を削除する必要がある

対処方

  • 一発解決するならローカルを再起動すればよい
  • 地道にやるならリモートサイトのnfs領域に正常にアクセスできるように設定しなおすしかない
    • 強制アンマウントとかしてもいいんだけどマウント領域をlsするだけでも固まるので難しいんじゃないかな

nfs

  • クライアントからリモートサイトへのポートアクセスの順序
    • portmap(111、静的)
    • NFSv4(2049、静的)
    • NFSv3だっけ?(リモートの/etc/sysconfig/nfsに依存したポート)

du

  • 容量の大きいのを調べる(大学環境)
    du -sk * .??* | env LANG=C sort -nr | lv
    • sort を env LANG=C でする必要はあるのかな

lftp

  • ログイン
    lftp <username>@<servername>
  • ファイル操作
    コマンド説明
    cdリモートのディレクトリ移動
    lcdローカルのディレクトリ移動
    lsリモートのファイルリスト表示
    !lsローカルのファイルリスト表示
    pwdリモートのカレントディレクトリ表示
    !pwdローカルのカレントディレクトリ表示
    rmリモートのファイル削除
    • オプションとか引数はだいたいいつものといっしょなので省略
    • !じゃなくてlでもいいっぽいけどものによる
  • アップロードとダウンロード
    コマンド説明
    put <filename>一個のファイルをアップロード。ワイルドカードは使えない
    get <filename>一個のファイルをダウンロード。ワイルドカードは使えない
    mput <filename> [<filename> ...]複数のファイルをアップロード。ワイルドカード使用可
    mget <filename> [<filename> ...]複数のファイルをダウンロード。ワイルドカード使用可
  • 終了
    exit

script

  • よく使うやつ
    for i in $(seq 1 100)
     do 
      touch hoge${i}
     done
    • ワンライナにするならこう
      for i in $(seq 1 100); do touch hoge${i}; done;
    • ほんとはたぶん i とか使うのうつくしくない

dd

dd if=<inputfile> of=<outputfile> bs=<blocksize> count=<count>
  • 引数とかオプションとか
    引数説明
    <inputfile>入力ファイル。/dev/zero が頻出っぽい
    <outputfile>出力ファイル
    <blocksize>ブロックサイズ。単位ごとかける。1mとか
    <count>ブロックサイズ*カウント値のファイルができるのでてきとうに調整する
    • ブロックサイズっていうのは一度のi/oで扱うデータ量。デフォルトは512(きろばいと)で、バッファに512kのデータがたまるとハードディスクに書き込むイメージ。ある程度大きい方が処理効率はあがる。最適値はデバイスによって違うっぽいよ。ぐぐろう

sl

  • lsしたいのにslにしちゃうとかよくあるよね!
  • slコマンドは有名なジョークコマンドだよ! 間違えてslって打っちゃったときにちょっとほっこりするよ! 時間がなくて急いでるときだと殴りたくなるけどね!

slをインストールする

  1. &ref(): File not found: "sl.tar" at page "Linux/メモ";をダウンロードする
  2. ダウンロードしたのを解凍する
    tar xvf sl.tar
  3. 移動
    cd sl
  4. ビルドに必要なパッケージをインストールする
    yum install ncurses-devel
  5. ちょっと編集
    vi Makefile
    • 以下の通りにする
      • 編集前
        sl: sl.c sl.h
        	$(CC) $(CFLAGS) -o sl sl.c -lcurses -ltermcap
        #	$(CC) $(CFLAGS) -o sl sl.c -lcurses
      • 編集後
        sl: sl.c sl.h
        #	$(CC) $(CFLAGS) -o sl sl.c -lcurses -ltermcap
        	$(CC) $(CFLAGS) -o sl sl.c -lcurses
  6. ビルドする。警告でるけど無視して大丈夫
    make
  7. コピーする
    cp sl /usr/local/bin

コマンド

  • じつは -l とか -a とか -F とかも用意されてるよ! 走るSLがかわるよ!

vi

文字コード関係

  • 設定(~/.[exrc|vimrc]にでも。その場でもいいけど)
    set encoding=hoge
    set fileencoding=hoge
  • 確認
    • 現在の文字コード
      :set enc?
    • ファイルの文字コード
      :set fenc?
    • 自動判別の文字コード
      :set fencs?
  • 文字コードを指定して開きなおす
    :e ++enc=hoge

ウィンドウ分割

  • 垂直に分割
    :vsp
    [Ctrl+w]-[v]
  • 水平に分割
    :sp
    [Ctrl+w]-[s]
  • 画面を移動する
    [Ctrl+w]-[←|↑|→|↓|h|j|k|l]
  • 画面を閉じる
    • カーソルのある画面を閉じる
      :q
    • 全部閉じる
      :qall
    • カーソルのある画面以外を閉じる
      :only
  • 動作
    • コマンドはカーソルのいるウィンドウに対して実行される
    • バッファを共有しているのでウィンドウ間でこぴぺができる

複数ファイル編集

  • 引数に複数のファイルを渡す
    vi hoge piyo
  • ファイルの切り替え
    • 次のファイルに切り替え
      :n
    • 前のファイルに切り替え
      :rew
  • 動作
    • ウィンドウ分割と組み合わせると便利ですね

x

  • xだけを起動(マウスカーソルで遊べるだけ)
    x
  • 最小構成でxを起動(ターミナルだけ実行された状態)
    initx
  • xのクライアントサービスを立ち上げる
    nohup metacity
    nohup gnome-panel
    nohup nautils
    • nohupじゃなくても大丈夫な気がするけど未確認

texinfo

info hoge
  • man suは古いっぽい

bash

  • [esc]-[.]でhistoryから末尾の引数だけ持ってこられる。複数回入力可
    cat /etc/passwd
    vi [esc]-[.]
  • [^<hoge>^<fuga>]でひとつ前の入力コマンドの一部を置換して実行できる
    cat ~/flie1
    ^li^il
  • historyからインクリメンタルサーチで引っ張ってこられる
    cat ~/file1
    cat ~/file2
    [Ctrl+r] ca
    • 次候補に移動するには検索中にもう一度[Ctrl+r]

font

  • [システム]-[設定]-[フォント]-[詳細]-[フォントのフォルダに移動]で開いたフォルダに *.ttf を放りこむだけ
    • 再ログインいるっけ?
    • otfはだめじゃないかな。わかんない
    • コマンドラインからやるにはどうするの

useradd

  • passwd でいちいちパスワードを入力せずに useradd したいときどうするのという話
  • スクリプト処理とかで便利っぽい

[おすすめ] passwd に stdin を渡す

useradd <username>
echo <password> | passwd --stdin <username>
  • ハッシュ化するときのsalt値もpasswd任せにできるのでスマート

[だめぽ] useradd に -p でハッシュ化したパスワードを渡す

  • そもそも無理矢理一行でやらんでもいいんじゃないの。上のおすすめでやればいいよ
  • mkpasswd を使うならインストールが必要(expectパッケージ内)
    yum install expect
  • useradd する
    useradd -p $(openssl passwd -1 -salt $(mkpasswd -s 0 -l 8) <password>) <username>
  • ハッシュ文字列生成のsalt値に [0-9a-zA-Z]{8} のランダムっぽい文字列を渡す
    • saltに記号はいってもだいじょうぶっぽいので [-s 0] いらないかも(でも $ が出てきたらアウト)
    • ランダム文字列はどう作るのがスマート?
      • [openssl rand -base64 8] でも可?
      • mkpasswd 自体スクリプトだからそれ使う時点でズルい

public_html

  • SELinux のせいで /home/*/public_html が Apache 設定後でも 403 になる
    /sbin/restorecon -R /home/hoge

find

  • inode番号でも検索できる
    find <search-path> -inum <inode-number>

自宅サーバ

ダイナミックDNSサービス

  • 自分のサーバをIPではなくて、hogehoge.dyndns.org とか fugafuga.dip.jp とかで運用できるようにできるサービス
  • 自分の家のグローバルIPアドレスと上みたいなドメイン情報を紐付けてくれる

サービス

自動更新の必要性

  • 固定IPなら一回登録すればDNSのレコードを更新する必要はないけど、一般家庭とか動的IP環境だとIPアドレスが変わるたびにDNS登録情報の更新が必要
  • 固定IPでも、無料の上記サービスの場合、一定期間ログインがないとアカウント消されることがある
  • 結局静的IP環境にしろ動的IP環境にしろ、定期的にログインして登録情報の更新が必要

自動更新の方法


Last-modified: 2011-10-12 (水) 22:19:29