fc2ブログ

設定ファイルを初期状態へ戻す方法

設定ファイルを初期状態へ戻す方法

一番無難なのは
設定変更する前にファイルをバックアップしておくこと

しかし、バックアップしたファイルが削除されたり
バックアップがない可能性もあるため
復旧方法を学習しておく

今回の環境は、CentOSで
Apacheの設定ファイルである
httpd.conf
を間違えて削除した場合の対処

これをパッケージ中の設定ファイルをインストールして復旧

まず、httpd.confがどのパッケージに含まれるか調べる
もし、パッケージ名がわかれば
そのパッケージからhttpd.confを取り出せばいい

とはいっても、書いているだけではスキルがあがらないので
VMware Player で
CentOS 6.4 64bit 環境を構築し
これを使って実験する

仮想マシンはDHCPでIP取得する設定にしているのなら
ubuntu から
sudo nmap -n -sP 192.168.10.0/24
というように、LAN内部のIPを調べ
ssh でリモートログインする

ログインできたら
yum -y install httpd

Apache をインストールし
実験開始

不安があるのなら、一度仮想マシンのバックアップをとったほうがよいかもしれない

まず、設定ファイルを削除する
rm -f /etc/httpd/conf/httpd.conf
これで
/etc/rc.d/init.d/httpd start
としても起動できなくなる

この場合、httpd.conf と関連が深そうなファイルを探すことになる

ls /etc/httpd/conf
で調べると
magic がでるので
これを調べる

CentOS は rpm パッケージなので
rpm -qf /etc/httpd/conf/magic
でパッケージ名を表示してみると
httpd-2.2.15-28.el6.centos.x86_64

となり、httpd パッケージに含まれることが判明

次に、-ql オプションを使って
httpd パッケージの構成ファイル一覧を表示

rpm -ql httpd | grep conf
で絞って探すと

/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/sysconfig/htcacheclean
/etc/sysconfig/httpd
/usr/lib64/httpd/modules/mod_log_config.so

となり、httpd.conf が含まれるのが確認できる

次に、httpd パッケージをダウンロードする
これは
yumdownloader を使う

これは、rpm パッケージをダウンロードするツール

yumdownloader httpd
とすれば
httpd-2.2.15-28.el6.centos.x86_64.rpm
がダウンロードできる

ただし、パッケージを普通にインストールしようとしても
すでに導入済みだとインストールできないので
--force オプションをつけ
強制的に再インストールする

rpm -Uvh --force httpd-2.2.15-28.el6.centos.x86_64.rpm
でインストール

ls /etc/httpd/conf/
でディレクトリを確認すると
httpd.conf があるのが確認できる

これで
/etc/rc.d/init.d/httpd start
とすると
apache が起動できるのが確認できる
スポンサーサイト



テーマ : Linux
ジャンル : コンピュータ

ソースコードを見直すときに使える diffコマンド

新しくプログラミングを勉強する時に
ソースコードがあるなら
もし、稼働しないときには
diff コマンドで比較すると
違いに気づけます

今回、
get_template_directory_uri()
とするところを
get_template_directory_url()

となっていました

ソースはダウンロードしていたので
diff sidebar.php ~/ダウンロード/source/sidebar.php
とすることで違いを比較し
間違いに気づきました

ソースのコピペだけだとどこが間違っていたのかが
わかりにくいので
一度比較して、間違いさがししたほうが勉強には効率的です

テーマ : プログラミング
ジャンル : コンピュータ

標準出力を分岐するコマンド tee

tee コマンドを使うことで、画面に結果を表示しながら
ファイルに書き込むことができます

sort や uniq コマンドを実行しても、元々のファイルは変わりません

しかし、実行結果に tee コマンドをパイプでつなげば
並び替えたファイルを記録できます

$ sort travel.txt | uniq -c | sort -nr | tee result.txt | head -n 5
これで、並び替えた結果が result.txt に保存され
上位5つだけ画面に表示されます

この流れを解説すると
最初に
sort travel.txt
で並び替え

次に
uniq -c
で重複ファイルを整理して番号を降ります

その結果を
sort -nr
で並べ替えして

tee result.txt
で、結果を
result.txt に保存しながら
画面に表示するように指示

head -n 5
で指示された結果から上位5つだけを表示

となります

画面に表示する必要性を感じないのであれば
$ sort travel.txt | uniq -c | sort -nr | tee result_tmp.txt > result.txt
というようにします

テーマ : Linux
ジャンル : コンピュータ

重複行を整理する sort と uniq コマンド

今回、日経Linux 2008-9 におもしろい記事が載っていたので
実験してみました




とはいっても、簡単なコマンドの組み合わせですが

今回、使用したコマンドは

重複行を削除するコマンド uniq コマンド
107.uniqコマンドについてにわかりやすい説明が載っています)

そして
ファイルの行を並び替える sortコマンド
(【 sort 】 行を並び替えるが参考になります)

を使っています

最初に、
vi travel.txt
で内容を作成します

内容は単純に、国の名前を適当に並べたものです
アメリカ
イギリス
フランス
ドイツ
中国
インド
ロシア
日本
アメリカ
シンガポール
ドイツ
フランス
アメリカ
中国


などというように、適当に書き込みます

これに
$ uniq travel.txt
と実行すると
隣り合った部分が削除されて画面に表示されます

ただし、元のファイルはそのままです

これをさらに、sort コマンドと組み合わせると
重複する文字を削除できるようになります

$ sort travel.txt | uniq
これで、重複する文字を削除して表示できます

ちなみに、削除だけなら、sortコマンドに -u オプションをつければできます
$sort -u travel.txt
これでOKです

uniq コマンドは、削除するより、重複した文字をカウントする機能
を使うことがメインとなりそうです
-c オプションをつけると、この機能が使えます

$ sort travel.txt | uniq -c | sort -nr
とすれば、重複した文字の多い順番に並べれます

さらに。
$ sort travel.txt | uniq -c | sort -nr | head -n 5
とすれば、上位3つまで表示するようにできます

この機能を応用すると、アンケートや選挙のようなことができそうです

テーマ : Linux
ジャンル : コンピュータ

パイプの使い方

最近、過去の雑誌を整理し、内容の復習を兼ねていろいろと
実行してみました

今回は、基本に立ち返り
パイプの使い方です

参考にした雑誌は、日経Linux 2008-9
です




パイプを使うことで、過去のログなどを効率的にみることができます

とくに、一番使うのが history コマンドと grep コマンドの組み合わせを
よく使います
使い方は
$ histroy | grep ssh

サーバー構築の続きを行うときに使います

今回は、3つの機能をパイプでつなげて見ました

$cat -n /etc/services | head -n 50 | tail -n 10
とします

これは、最初に
cat -n を使ってファイルに番号を振り分け

次に
head -n 50
で、先頭から50文字のみ表示にして

最後に
tail -n 10
で最後から10行だけ表示
という使い方になります

サーバーのファイル設定を失敗してしまい、
エラーメッセージがでたときなどに、こういう組み合わせを
使い、その箇所だけをみるということもできます

例えば、
300行~400行にエラーとなったときに、
$cat -n /etc/httpd/conf/httpd.conf | head -n 400 | tail -n 400
とすると、その場所を表示できます

また、シェルスクリプトでよくある記述としては
2>&1
というものがありますが、
これは標準出力と、標準エラー出力先を同じにするという意味になります

2は、標準エラー出力
1は、標準出力


という意味になります
よく使われるのは、行き先を /dev/null
と設定する方法です

/dev/null にすると。そのデータを破棄します

これを使った例がありました
$ find /usr/ -name "*.txt" 2>&1 > /dev/null | cat -n
もっとも、これを一般ユーザで実行しても、権限がないので
閲覧はできません

この動きを解説すると
最初に
find コマンドで /usr/ の中から .txt の拡張子のファイルを見つけます

次に、
標準出力のデータを /dev/null で破棄

そして標準エラー出力のデータに番号をつけて表示
という処理になります

パイプを使うと、grep コマンドで探すときに
さらに詳しく検索も可能になります

grep コマンドの使い方は
grep 探したい文字 ファイルパス
という使い方をします

$ grep www /etc/service
とすると、www を含む行を、/etc/service
の中から探します

これを
$ grep www /etc/service | grep tcp
とすれば
www と tcp を含む行を表示するようになります


テーマ : Linux
ジャンル : コンピュータ

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック