Linux/メモ
memo†
- 詰め込みすぎたから分離しないとかも
createrepo†
- DVDから俺々リポジトリをつくる。ディスクの中身をまるごとローカルにコピーして、コピーしたファイル郡にたいしてcreaterepoするだけ
- マウント
mkdir /mnt/RHEL54 mount -t iso9660 /dev/dvd /mnt/RHEL54
- コピー。場所はどこでもいいんだけど。ひとまず下は例。
mkdir -p /var/pub/RPM cp -rv /mnt/RHEL54 /var/pub/RPM
- createrepoインストール
rpm -ivh /var/pub/RPM/RHEL54/Server/createrepo-0.4.11-3.el5.src.rpm
- 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結合して放りこんだら一箇所で済むのかな。どうなんだろ
- createrepo時に -g で規定のxmlファイルを指定する。下はServerに対する例
- 使う前にキャッシュ消す
yum clean all
- 外部公開するのに必要なこと
- httpdのインストール(上のfile:///にしてyumるかあるいはrpmから直接)
- httpdの設定と起動
- /var/pub/RPMを公開する。/etc/httpd/conf.d/RPM.confとか作って記述
Alias /RPM "/var/pub/RPM" <Directory "/var/pub/RPM"> Options Indexes </Directory>
- /var/pub/RPMを公開する。/etc/httpd/conf.d/RPM.confとか作って記述
- 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のみ
- ダンプから戻す
- 特定のDBのみ
mysql -u root <database-name> < hoge.dmp
- 全部
mysql -u root -p < hoge.dmp
- 特定のDBのみ
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 なんてディレクトリできてない・・・・・・。
- index.php/admin で User タブにいくとエラー
- /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をインストールする†
- &ref(): File not found: "sl.tar" at page "Linux/メモ";をダウンロードする
- ダウンロードしたのを解凍する
tar xvf sl.tar
- 移動
cd sl
- ビルドに必要なパッケージをインストールする
yum install ncurses-devel
- ちょっと編集
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
- 編集前
- 以下の通りにする
- ビルドする。警告でるけど無視して大丈夫
make
- コピーする
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アドレスと上みたいなドメイン情報を紐付けてくれる
サービス†
- http://ieserver.net/
- 日本のサービスなのでおすすめ
- http://dyn.com/dns/
- 海外のやつ
- http://www.no-ip.com/
- 海外のやつ
自動更新の必要性†
- 固定IPなら一回登録すればDNSのレコードを更新する必要はないけど、一般家庭とか動的IP環境だとIPアドレスが変わるたびにDNS登録情報の更新が必要
- 固定IPでも、無料の上記サービスの場合、一定期間ログインがないとアカウント消されることがある
- 結局静的IP環境にしろ動的IP環境にしろ、定期的にログインして登録情報の更新が必要
自動更新の方法†
- DiCEで手抜きする(ぐぐればでる)
- NAT越しのアクセスの場合はNICのIPとグローバルIPが一致しないので注意
- IP検出スクリプトで外から持ってくるのがおすすめ
- 指定するスクリプトアドレスは http://www.dyndns.org/cgi-bin/check_ip.cgi とか http://ieserver.net/ipcheck.shtml とか
- NAT越しのアクセスの場合はNICのIPとグローバルIPが一致しないので注意
Last-modified: 2011-10-12 (水) 22:19:29