【Linux】historyコマンドの保存数 表示件数を調整する
今日は簡単に。
最近vmdkファイルを頂いて復元して云々なんて 別の人が作ったイメージを復元して仮想環境を作ることがあったんですが まぁ指示通りにやってもエラーが出たりするわけですよ。
そこでたまに使うのがhistory機能
# history | grep hogehoge
なんてことしたり、今までのhistory確認してみたりしながら色々設定しなおしたり、 何したかを確認したりするんですが。
デフォルトで設定されているのは1000件までで、ちょうど忘れた頃にhistoryが消えるんですよ。
なので保存されている件数の上限をあげます。
.bashrcに以下を追加します。
HISTSIZE=10000
ついでに時間とかを出したい場合
HISTTIMEFORMAT='%Y/%m/%d %H:%M:%S '
この記述も追加してあげる。
追加したら反映させます。
# source .bashrc
これでhistoryで出てくる保存数が増えて日時が追加されます。
たまにあると便利なんですよねhistory
【Linux】VirtualBoxでLinuxのWindow表示を広げる
そんな設定することもないからいっか。。。
と思うものほど備忘録に書くものである。
VirtualBoxを使ったりしているとsshでローカルから接続するまであの小さな画面で対応しなければいけない。 とはいえifconfig -aなんてやったときethの情報が隠れて見えなくなってしまうことがある。
不便極まりないのでその辺の設定をする一瞬だけでも画面を大きく。
# vim /boot/grub/grub.conf
この設定ファイルにある16行目あたり
kernel /vmlinuz-2.6.32-358.18.1.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=VolGroup/lv_root LANG=ja_JP.UTF-8 rd_NO _DM rhgb quiet vga=792
ここのquietの後にスペースを空けてvga=792を追記して保存して再起動
# reboot
これで大きめの画面で作業することができます。
sshで接続できるようになったらただでかい画面なだけでちょっと邪魔ですけどね。 vgaについては
http://en.wikipedia.org/wiki/VESA_BIOS_Extensions#Linux_video_mode_numbers
Linux video mode numbersあたりの表で指定の値にすれば大きさの変更ができます。
【Linux】rm -rf 通称バルスの恐怖からファイルを復元
よくあるやつです。 さすがにrm -rf / とかっていう世界が崩壊するような協力魔法を撃ってしまうとなんともなりませんが、ディレクトリとかファイルであれば"ある程度"復元が可能なようです。
とは言え、ドキドキですよね。
ということで、テスト用のファイルを作って実験してみます。
# touch /tmp/test.txt
touchで適当にファイルを作成して消します。
rm -rf /tmp/test.txt
さてWindowsとかMacとかであれば変なことしなければゴミ箱に入っているわけですが。 ゴミ箱ないんですよね。 ってことでこんなものをインストールします。 というかmakeもinstallもさくっとしちゃいましょう!
extundelete
その前にもしext2fsライブラリをインストールしていない場合は makeした時にエラーになる可能性があるので先にインストールしちゃいましょう。
# yum -y install e2fsprogs-devel
# cd /tmp/ # curl -L http://sourceforge.net/projects/extundelete/files/extundelete/0.2.4/extundelete-0.2.4.tar.bz2/download | tar xj # cd extundelete-0.2.4/ # ./configure --prefix=/tmp && make && make install
さてこれでextundeleteが使えるようになったんだけど restoreにあたってすべてを指定すると今までのものを。。。となるので 消してしまったファイルの時間を指定し、それ以降のものを復元させる。 そのために、一度消した時間を取得する。
HISTTIMEFORMAT="%F %T " history
例えば自分の場合だと
417 2014-12-01 07:48:39 cd /tmp/ 418 2014-12-01 07:48:39 ls 419 2014-12-01 07:48:40 touch /tmp/test.txt 419 2014-12-01 07:48:41 rm -rf /tmp/test.txt ←ここで消している
なので"2014-12-01 07:48:41"以降のデータ復元となる。 大体やっちまったってなった場合はすぐ調べて対応すると思うからhistoryが埋まるなんてことはすぐにはないと思う。 そう信じたい。
これを復元する。
# /tmp/bin/extundelete --restore-all --after $(date +%s -d '2014-12-01 07:48:41') /dev/root
そうすると
WARNING: Extended attributes are not restored. WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set. The partition should be unmounted to undelete any files without further data loss. If the partition is not currently mounted, this message indicates it was improperly unmounted, and you should run fsck before continuing. If you decide to continue, extundelete may overwrite some of the deleted files and make recovering those files impossible. You should unmount the file system and check it with fsck before using extundelete. Would you like to continue? (y/n)
となるので"y"を選択。
復元が開始され、コマンドを実行したディレクトリにRECOVERED_FILESというディレクトリができています。 このディレクトリの中にはfile.xxxxxxというものが入っています。 今回は削除してすぐの状態だったので、1つだけありました。 この中身が削除したファイルになります。 vim等で確認してみるといいかと。
基本はrm -rfとかする時は確認が必要ですね。 実は前に自前のMacBookAirで寝ぼけてrm -rf /とかやっちゃって動かなくなって再インストールしたことがあり その時、もうやるまいとrm.shみたいなものを作って、2度確認するまで消さないみたいなものをalias貼ったのが懐かしいです。
こういうツールは便利ですが、その手前で防げるような何かを考えるべきですね。
【Linux】APCを使ってPHPの高速化を図る
環境を構築している時にAPCってのがあった。 なんだろう・・・って思ってたんですが 昔よくAPCって聞いたなぁとでも、PHP5.5からは関係ないから気にしなくていいよみたいなことがあって 調べてなかったので。
APCっていうのはなんぞやっていうのがPHPのドキュメントにありました。
Alternative PHP Cache (APC) は、PHP の実行コードをキャッシュする仕組みで、 フリーかつオープンに使用できます。 PHP の中間コードのキャッシュ・最適化を行うための、 フリーでオープンかつ堅牢なフレームワークを提供するということを目標としています。
要は都度中間コードでコンパイルを行っているんだけど メモリにキャッシュとして保存して、高速化を図るよって話みたい。
ちなみにPHP5.5からはデフォルトでOPcacheっていうのがあるのでAPC使わなくても高速みたい。 だから使わなくなるって話だったのか。 OPcacheについてはまた機会があれば調べようかな。 まずはAPCインストールからだなぁと。
PHPのバージョンが5.4なので、APCについては3.1.10以降じゃないといけないみたい。 今回はbetaですが、最新版の3.1.13を探してきました。
# wget http://pecl.php.net/get/APC-3.1.13.tgz # tar zxvf APC-3.1.13.tgz # cd APC-3.1.13 # phpize # ./configure --enable-apc --with-php-config=[php-configのPath] # make # make test # make install
さらっとソースからのインサートに必要なコマンドを羅列しました。 ./configureで指定している--wuth-php-config=についてはphp-configのPathを入れてください。 わからない場合は
find / -name '*php-config*' -print
上記のコマンドを実行すればpathが出てくると思います。 自分の場合は/usr/bin/php-configがPathでした。
次にAPCを有効にするためにphp.iniの設定に追記します。
;;;;;;;;;;;;;;;;;;; ; Module Settings ; ;;;;;;;;;;;;;;;;;;; ; add apc extension=apc.so
どこに書いてもOKです。 とりあえず自分はModule Settingsの中に書きました。
設定が終わったらApacheを再起動します。
# service httpd restart
設定が反映されているか確認します。
php -m | grep apc apc
apcと表示されれば設定が有効になっています。
出てこない場合は、間違ったphp.iniに設定を書いている可能性があります。
APCを使うと実行速度は早くなるけど、キャッシュする時間を長く取ると高速化はできても ソースコードを変更した時の反映に時間がかかります。 その場合APCキャッシュをクリアする必要があるみたいです。 この辺は実際使ってみてからかな。
【Linux】CentOS6.6にSubversion1.8をインストール
今のプロジェクトでの引き継ぎ時Subversionを使っているので とりあえずローカルの環境にSubversionを入れようと思ったのだが yumで入れようとlistを見てみると1.6しか入っていない。 どうせなら最新版を使いたいのでWANdiscoというところのやつを使ってインストールすることに。
調べたら簡単にインストールできたので
まずはファイルの作成
# vim /etc/yum.repos.d/wandisco.repo
作ったフィアルの中はこんな感じで
[wandisco] name=WANDisco Repository - svn-1.8 centos6 baseurl=http://opensource.wandisco.com/centos/6/svn-1.8/RPMS/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-WANdisco
次にGPGキーの取り込み GPGキーとは暗号化ソフトで生成される公開鍵で、Linuxの場合,apt-getコマンドやyumコマンドを使ってインターネットから入手できるパッケージが正しい配布先のものかどうかのチェックなどに利用しているらしい。
# rpm --import http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
そしてインストールの実行
# yum install -y --enablerepo=wandisco --disablerepo=base,updates subversion
インストール後、バージョンの確認
# svn --version svn, version 1.8.10 (r1615264) compiled Aug 8 2014, 11:31:47 on x86_64-unknown-linux-gnu Copyright (C) 2014 The Apache Software Foundation. This software consists of contributions made by many people; see the NOTICE file for more information. Subversion is open source software, see http://subversion.apache.org/
Subversionのためだけなので、普段は無効に。デフォルトだとCentOSのBaseやupdatesの方が優先されるので、対象外にする。
以下サイトを参考にさせていただきました。
【Ruby】RVMでRubyのインストールとバージョン管理
最近CapistranoでデプロイをするためにRubyが必要になったので 必要に迫られてインストール
どうにも昔からRubyのインストールには依存やらなんやらでつまずくことが多かった。 PHPみたいな感じでRubyもパッケージ管理をするためにRVMを入れることに。
まずは必要パッケージをインストール
# sudo yum install -y git zlib-devel perl-ExtUtils-MakeMaker httpd httpd-devel openssl-devel libyaml-devel libxml2-devel libxslt-devel libffi-devel readline-devel pcre-devel iconv-devel sqlite-devel mysql mysql-server m ysql-devel postgresql postgresql-server postgresql-devel curl-devel nkf
そしてインストール
# curl -sSL https://get.rvm.io | bash -s stable Downloading https://github.com/wayneeseguin/rvm/archive/1.26.3.tar.gz Downloading https://github.com/wayneeseguin/rvm/releases/download/1.26.3/1.26.3.tar.gz.asc gpg: ディレクトリー「/root/.gnupg」ができました gpg: 新しい構成ファイル「/root/.gnupg/gpg.conf」ができました gpg: 警告: 「/root/.gnupg/gpg.conf」のオプションは起動している間、有効になりません gpg: 鍵輪「/root/.gnupg/pubring.gpg」ができました gpg: 2014年11月18日 10時09分57秒 JSTにRSA鍵ID BF04FF17で施された署名 gpg: 署名を検査できません: No public key Warning, RVM 1.26.0 introduces signed releases and automated check of signatures when GPG software found. Assuming you trust Michal Papis import the mpapis public key (downloading the signatures). GPG signature verification failed for '/usr/local/rvm/archives/rvm-1.26.3.tgz' - 'https://github.com/wayneeseguin/rvm/releases/download/1.26.3/1.26.3.tar.gz.asc'! try downloading the signatures: sudo gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 or if it fails: command curl -sSL https://rvm.io/mpapis.asc | sudo gpg2 --import - the key can be compared with: https://rvm.io/mpapis.asc https://keybase.io/mpapis
なんか出てきた。
try downloading the signatures: sudo gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 or if it fails: command curl -sSL https://rvm.io/mpapis.asc | sudo gpg2 --import -
ふむ、 とりあえず上記コマンドを試してみる
# sudo gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 gpg: 鍵輪「/root/.gnupg/secring.gpg」ができました gpg: 鍵D39DC0E3をhkpからサーバーkeys.gnupg.netに要求 gpg: /root/.gnupg/trustdb.gpg: 信用データベースができました gpg: 鍵D39DC0E3: 公開鍵“Michal Papis (RVM signing)”を読み込みました gpg: 処理数の合計: 1 gpg: 読込み: 1 (RSA: 1) # command curl -sSL https://rvm.io/mpapis.asc | sudo gpg2 --import - gpg: 鍵D39DC0E3:“Michal Papis (RVM signing) ”変更なし gpg: 処理数の合計: 1 gpg: 変更なし: 1
変更なしって出てきた。
もう一度curlでコマンドを打つと
# curl -sSL https://get.rvm.io | bash -s stable Downloading https://github.com/wayneeseguin/rvm/archive/1.26.3.tar.gz Downloading https://github.com/wayneeseguin/rvm/releases/download/1.26.3/1.26.3.tar.gz.asc gpg: 2014年11月18日 10時09分57秒 JSTにRSA鍵ID BF04FF17で施された署名 gpg: “Michal Papis (RVM signing)”からの正しい署名 gpg: 警告: この鍵は信用できる署名で証明されていません! gpg: この署名が所有者のものかどうかの検証手段がありません。 主鍵の指紋: 409B 6B17 96C2 7546 2A17 0311 3804 BB82 D39D C0E3 副鍵の指紋: 62C9 E5F4 DA30 0D94 AC36 166B E206 C29F BF04 FF17 GPG verified '/usr/local/rvm/archives/rvm-1.26.3.tgz' Creating group 'rvm' Installing RVM to /usr/local/rvm/ Installation of RVM in /usr/local/rvm/ is almost complete: * First you need to add all users that will be using rvm to 'rvm' group, and logout - login again, anyone using rvm will be operating with `umask u=rwx,g=rwx,o=rx`. * To start using RVM you need to run `source /etc/profile.d/rvm.sh` in all your open shell windows, in rare cases you need to reopen all shell windows. # Administrator, # # Thank you for using RVM! # We sincerely hope that RVM helps to make your life easier and more enjoyable!!! # # ~Wayne, Michal & team. In case of problems: http://rvm.io/help and https://twitter.com/rvm_io
ってことでRVMが使えるようになったっぽい /etc/profile.d/以下にrvm.shが出来上がってるので、パスを通しておく
# source /etc/profile.d/rvm.sh
バージョンの確認
# rvm -v rvm 1.26.3 (latest) by Wayne E. Seguin, Michal Papis https://rvm.io/
どのバージョンのRubyが使えるのか確認
# rvm list known # MRI Rubies [ruby-]1.8.6[-p420] [ruby-]1.8.7[-head] # security released on head [ruby-]1.9.1[-p431] [ruby-]1.9.2[-p330] [ruby-]1.9.3[-p551] [ruby-]2.0.0[-p598] [ruby-]2.1.4 [ruby-]2.1[.5] [ruby-]2.1-head ruby-head # for forks use: rvm install ruby-head---url https://github.com/github/ruby.git --branch 2.1 # JRuby jruby-1.6.8 jruby[-1.7.16.1] jruby-head # Rubinius rbx-1.3.3 rbx-2.0.0 rbx-2.1.1 rbx[-2.2.10] rbx-head # Opal opal # Minimalistic ruby implementation - ISO 30170:2012 mruby[-head] # Ruby Enterprise Edition ree-1.8.6 ree[-1.8.7][-2012.02] # GoRuby goruby # Topaz topaz # MagLev maglev[-head] maglev-1.0.0 # Mac OS X Snow Leopard Or Newer macruby-0.10 macruby-0.11 macruby[-0.12] macruby-nightly macruby-head # IronRuby ironruby[-1.1.3] ironruby-head
とりあえず2.1.4あたりをインストールしてみる。
# rvm install ruby-2.1.4
インストールしたら選択する
rvm use ruby-2.1.4
バージョン確認
# ruby -v ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-linux]
いやー楽になったもんだ。
【Linux】CentOS 6.6のMySQL5.1をyumで簡単に5.6にしてインストールする
CentOS 6.6 の環境を作ったものの MySQLインストールしようとしたらデフォルトが5.1だった。
今作りたい環境としてはMySQL5.6なんだよなぁ ソースからインストールってめんどいなー。 yumでさくっと入れたいなぁと思ったので手順をば。
まずは現状を確認
# rpm -qa | grep mysql mysql-libs-5.1.73-3.el6_5.x86_64
おやなんかいる。 消します。SeeYou
yum remove mysql*
次にrpmを追加してインストール 一応色々確認したかったので-yオプションはつけていません。 お急ぎの方は-yオプションつけてあげてください。
# yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm # yum install mysql mysql-devel mysql-server mysql-utilities
本当にインストールされているのか確認
# rpm -qa | grep mysql mysql-community-release-el6-5.noarch mysql-community-common-5.6.21-2.el6.x86_64 mysql-community-client-5.6.21-2.el6.x86_64 mysql-connector-python-2.0.2-1.el6.noarch mysql-community-server-5.6.21-2.el6.x86_64 mysql-community-libs-5.6.21-2.el6.x86_64 mysql-utilities-1.5.3-1.el6.noarch mysql-community-devel-5.6.21-2.el6.x86_64 # mysql --version mysql Ver 14.14 Distrib 5.6.21, for Linux (x86_64) using EditLine wrapper
これで簡単にyumでバージョンをあげることができました。