2009年6月15日
bashでシェル自身のファイル名を取得する
2008年11月27日
psでプロセス毎のCPU使用率、スレッド数、メモリ使用率、物理メモリサイズ、仮想メモリサイズを出力
psでプロセス毎のCPU使用率、スレッド数、メモリ使用率、物理メモリサイズ、仮想メモリサイズを出力
$ ps -p [PID] -o pid,ppid,user,etime,time,pcpu,nlwp,vsz,rss,pmem,args
プロセスのコマンドの文字列でgrepする場合
$ ps -A -o pid,ppid,user,etime,time,pcpu,nlwp,vsz,rss,pmem,args | egrep 'ptn'
監視したいときは以下のようなシェルを組む。
#!bin/sh
PID=$1
INTERVAL=10
while true
do
ps -p ${PID} --no-headers -o pid,ppid,user,etime,time,pcpu,nlwp,vsz,rss,pmem,args
sleep ${INTERVAL}
done
シェルを組むのも面倒な時は、shになってからコマンドラインで実行。
$ sh
$ while true; do ps -p [PID] --no-headers -o pid,ppid,user,etime,time,pcpu,nlwp,vsz,rss,pmem,args;sleep 10; done
$ ps -p [PID] -o pid,ppid,user,etime,time,pcpu,nlwp,vsz,rss,pmem,args
プロセスのコマンドの文字列でgrepする場合
$ ps -A -o pid,ppid,user,etime,time,pcpu,nlwp,vsz,rss,pmem,args | egrep 'ptn'
監視したいときは以下のようなシェルを組む。
#!bin/sh
PID=$1
INTERVAL=10
while true
do
ps -p ${PID} --no-headers -o pid,ppid,user,etime,time,pcpu,nlwp,vsz,rss,pmem,args
sleep ${INTERVAL}
done
シェルを組むのも面倒な時は、shになってからコマンドラインで実行。
$ sh
$ while true; do ps -p [PID] --no-headers -o pid,ppid,user,etime,time,pcpu,nlwp,vsz,rss,pmem,args;sleep 10; done
ラベル: LINUX
psをgrepした結果にgrep自身のプロセスを出力させない
psの結果をgrepした結果にgrep自身のプロセスを出力させない方法。
以下、httpdのプロセスを出力させる場合。
# grepの-vオプションを使う
$ ps aux | egrep 'httpd' | egrep -v 'grep'
# 検索文字列に文字クラスを使用してgrepの結果にかからなくする
# ps aux | egrep '[h]ttpd'
以下、httpdのプロセスを出力させる場合。
# grepの-vオプションを使う
$ ps aux | egrep 'httpd' | egrep -v 'grep'
# 検索文字列に文字クラスを使用してgrepの結果にかからなくする
# ps aux | egrep '[h]ttpd'
ラベル: LINUX
2008年11月14日
awk 1ライナー 列の抜き出し
空白やタブ等で区切られたテキストデータ列の抜き出しには、cutコマンドやawkやperlの1ライナーが便利です。
以下はawkでの実例
# "aaa bbb ccc"の1列目のみを出力する。
$ echo "aaa bbb ccc" | awk '{ print $1 }'
aaa
# "aaa bbb ccc"の2列目のみを出力する。
$ echo "aaa bbb ccc" | awk '{ print $2 }'
bbb
# "aaa bbb ccc"の1,2列目を:(コロン)区切りで出力する。
$ echo "aaa bbb ccc" | awk '{ print $1,":",$2 }'
aaa : bbb
# "aaa,bbb,ccc",(カンマ区切り)の1列のみを出力する。
$ echo "aaa,bbb,ccc" | awk -F',' '{ print $1 }'
aaa
# ps au の結果の2列目(PID)のみを出力する。
$ ps au | awk '{ print $2 }'
PID
XXXXX
XXXXX
XXXXX
同様のことはPerlの1ライナーでも可能です。
Perlの1ライナーについては以下コンテンツへ
Perl ワンライナー 勉強中。
以下はawkでの実例
# "aaa bbb ccc"の1列目のみを出力する。
$ echo "aaa bbb ccc" | awk '{ print $1 }'
aaa
# "aaa bbb ccc"の2列目のみを出力する。
$ echo "aaa bbb ccc" | awk '{ print $2 }'
bbb
# "aaa bbb ccc"の1,2列目を:(コロン)区切りで出力する。
$ echo "aaa bbb ccc" | awk '{ print $1,":",$2 }'
aaa : bbb
# "aaa,bbb,ccc",(カンマ区切り)の1列のみを出力する。
$ echo "aaa,bbb,ccc" | awk -F',' '{ print $1 }'
aaa
# ps au の結果の2列目(PID)のみを出力する。
$ ps au | awk '{ print $2 }'
PID
XXXXX
XXXXX
XXXXX
同様のことはPerlの1ライナーでも可能です。
Perlの1ライナーについては以下コンテンツへ
Perl ワンライナー 勉強中。
ラベル: LINUX
2008年10月21日
rubyのexpect ライブラリexpect.rb
rubyのexpect ライブラリexpect.rbを使ってみました。
telnet以下はtelnet自動化のサンプルです。
#!/usr/bin/env ruby
require 'pty'
require 'expect'
$expect_verbose=true # trueにするとexpect で読み込んだ内容を標準出力に出力する
PTY.spawn("telnet -l user localhost") do |r,w|
w.sync = true
r.expect(/[Pp]assword: /) { w.puts "passward" }
r.expect(/[$%#]/) { w.puts "ls -la" }
r.expect(/[$%#]/) { w.puts "exit" }
end
telnet以下はtelnet自動化のサンプルです。
#!/usr/bin/env ruby
require 'pty'
require 'expect'
$expect_verbose=true # trueにするとexpect で読み込んだ内容を標準出力に出力する
PTY.spawn("telnet -l user localhost") do |r,w|
w.sync = true
r.expect(/[Pp]assword: /) { w.puts "passward" }
r.expect(/[$%#]/) { w.puts "ls -la" }
r.expect(/[$%#]/) { w.puts "exit" }
end
ラベル: LINUX
2008年10月15日
pythonのExpectモジュールPexpect
pythonのExpectモジュールPexpectを使ってみました。
Pexpectのサイト : http://www.noah.org/wiki/Pexpect
telnet以下はtelnet自動化のサンプルです。
#!/usr/bin/env python
import pexpect
import sys
telnet = pexpect.spawn ('telnet -l user localhost')
telnet.logfile = sys.stdout
telnet.expect ('[Pp]assword: ')
telnet.sendline ('password')
telnet.expect ('[$%#]')
telnet.sendline ('ls -la')
telnet.expect ('[$%#]')
telnet.close
Pexpectのサイト : http://www.noah.org/wiki/Pexpect
telnet以下はtelnet自動化のサンプルです。
#!/usr/bin/env python
import pexpect
import sys
telnet = pexpect.spawn ('telnet -l user localhost')
telnet.logfile = sys.stdout
telnet.expect ('[Pp]assword: ')
telnet.sendline ('password')
telnet.expect ('[$%#]')
telnet.sendline ('ls -la')
telnet.expect ('[$%#]')
telnet.close
ラベル: LINUX
2008年8月29日
検索系 vimrc
検索系 vimrc
検索系のvimrcをまとめておきます。
" 大文字小文字区別しないで検索する
set ignorecase
" 大文字がある場合は大文字小文字区別して検索する
set smartcase
" インクリメンタルサーチ
set incsearch
" 検索文字の強調表示をしない
set nohlsearch
vimについては別コンテンツ http://www.webhtm.net/vim/ へ。
ラベル: LINUX
2008年8月8日
[Linux]ruby / gemをソースコードからインストール
ruby / gemをソースコードからインストール。
#rubyとrubygemsのkitはwgetするなりして、持って$HOME/srcにおいてください。
# srcに移動
$ cd $HOME/src
# ruby-X.X.X.tar.gzを展開します。
$ tar xvfz ruby-X.X.X.tar.gz
# 展開されたディレクトリに移動します。
$ cd rubyl-X.X.X
# READ MEを読みます。
# less README
# confiureヘルプ参照
$ ./configure -h
> --prefix=PREFIX install architecture-independent files in PREFIX
> [/usr/local]
インストールディレクトリの指定には上記の--prefix=PREFIXを使用する。
# Configureを実行。今回は$HOME/local/ruby以下にインストールします。
$ ./configure --prefix=$HOME/local/ruby
# インストール開始
$ make
$ make install
# バージョン確認
$ $HOME/local/ruby/bin/ruby -v
# 1ライナー
$ $HOME/local/ruby/bin/ruby -e 'puts "HellowWorld!"'
HellowWorld!
# irb確認
$HOME/local/ruby/bin/irb
# srcに移動
$ cd $HOME/src
# xvfz rubygems-X.X.X.tgzを展開します。
$ tar xvfz rubygems-X.X.X.tgz
# 展開されたディレクトリに移動します。
$ cd rubygems-X.X.X.tgz
# READMEを読みます。
$ less README
# 先ほどインストールしたRubyでsetup.rbを実行する。
$ $HOME/local/ruby/bin/ruby setup.rb
#rubyとrubygemsのkitはwgetするなりして、持って$HOME/srcにおいてください。
# srcに移動
$ cd $HOME/src
# ruby-X.X.X.tar.gzを展開します。
$ tar xvfz ruby-X.X.X.tar.gz
# 展開されたディレクトリに移動します。
$ cd rubyl-X.X.X
# READ MEを読みます。
# less README
# confiureヘルプ参照
$ ./configure -h
> --prefix=PREFIX install architecture-independent files in PREFIX
> [/usr/local]
インストールディレクトリの指定には上記の--prefix=PREFIXを使用する。
# Configureを実行。今回は$HOME/local/ruby以下にインストールします。
$ ./configure --prefix=$HOME/local/ruby
# インストール開始
$ make
$ make install
# バージョン確認
$ $HOME/local/ruby/bin/ruby -v
# 1ライナー
$ $HOME/local/ruby/bin/ruby -e 'puts "HellowWorld!"'
HellowWorld!
# irb確認
$HOME/local/ruby/bin/irb
# srcに移動
$ cd $HOME/src
# xvfz rubygems-X.X.X.tgzを展開します。
$ tar xvfz rubygems-X.X.X.tgz
# 展開されたディレクトリに移動します。
$ cd rubygems-X.X.X.tgz
# READMEを読みます。
$ less README
# 先ほどインストールしたRubyでsetup.rbを実行する。
$ $HOME/local/ruby/bin/ruby setup.rb
ラベル: LINUX
2008年8月6日
[Linux]apacheをソースコードからインストール
[Linux]apacheをソースコードからインストール
userのローカルにインストールする場合のメモ。
# 展開
# tar xvfz httpd-X.X.X.tar.gz
# 展開されたディレクトリに移動します。
$ cd httpd-X.X.X
# configureを実行。今回は$HOME/local/apache以下にインストールします。
$ ./configure --prefix=$HOME/local/apache
> ./configure --help より
>
> Installation directories:
> --prefix=PREFIX install architecture-independent files in PREFIX
> [/usr/local/apache2]
>
> --prefix でインストールするディレクトリを指定できます。
> 指定しない場合のデフォルトは/usr/local/apache2になります。
# インストール
$ make
$ make install
# 設定ファイル変更
$ vi $HOME/local/apache/conf/httpd.conf
# 今回は既に入っているapacheとPortが被らないように以下を変更。
Listen 80
=> Listen 10080
# DocumentRoot(Webサーバのルートディレクトリ)を変えたい場合は以下を変更。
DocumentRoot
# apacheの起動。
$ $HOME/local/apache/bin/apachectl start
# プロセスの確認。apacheのプロセスが起動していること。
$ ps aux | grep apache
# Portの確認。apacheのプロセスがLISTENになっていること。
$ netstat -an | grep 10080
userのローカルにインストールする場合のメモ。
# 展開
# tar xvfz httpd-X.X.X.tar.gz
# 展開されたディレクトリに移動します。
$ cd httpd-X.X.X
# configureを実行。今回は$HOME/local/apache以下にインストールします。
$ ./configure --prefix=$HOME/local/apache
> ./configure --help より
>
> Installation directories:
> --prefix=PREFIX install architecture-independent files in PREFIX
> [/usr/local/apache2]
>
> --prefix でインストールするディレクトリを指定できます。
> 指定しない場合のデフォルトは/usr/local/apache2になります。
# インストール
$ make
$ make install
# 設定ファイル変更
$ vi $HOME/local/apache/conf/httpd.conf
# 今回は既に入っているapacheとPortが被らないように以下を変更。
Listen 80
=> Listen 10080
# DocumentRoot(Webサーバのルートディレクトリ)を変えたい場合は以下を変更。
DocumentRoot
# apacheの起動。
$ $HOME/local/apache/bin/apachectl start
# プロセスの確認。apacheのプロセスが起動していること。
$ ps aux | grep apache
# Portの確認。apacheのプロセスがLISTENになっていること。
$ netstat -an | grep 10080
ラベル: LINUX
2008年7月29日
sshでのrootログインの許可・禁止
sshのrootログインの許可・禁止をする方法。
# switch user root
$ su -
# /etc/ssh/sshd_config を編集
# vi /etc/ssh/sshd_config
- sshのrootログインを禁止
以下パラメータをコメントアウト(デフォルト)
#PermitRootLogin yes
- sshのrootログインを許可
以下パラメータのコメントを削除
PermitRootLogin yes
# sshdサービスを再起動
# service sshd restart
セキュリティ上、sshのrootによるログインは禁止しておくが望ましい。
# switch user root
$ su -
# /etc/ssh/sshd_config を編集
# vi /etc/ssh/sshd_config
- sshのrootログインを禁止
以下パラメータをコメントアウト(デフォルト)
#PermitRootLogin yes
- sshのrootログインを許可
以下パラメータのコメントを削除
PermitRootLogin yes
# sshdサービスを再起動
# service sshd restart
セキュリティ上、sshのrootによるログインは禁止しておくが望ましい。
ラベル: LINUX
2008年7月28日
[Linux]perlをソースコードからインストール
perlをソースコードからインストール
# 展開します。
$ tar xvfz perl-X.X.X.tar.gz
# 展開されたディレクトリに移動します。
$ cd perl-X.X.X
# Configureを実行。今回は$HOME/local/perl以下にインストールします。
$ ./Configure -des -Dprefix=$HOME/local/perl
# インストール開始
$ make
$ make test
$ make install
# バージョンの確認。
$ $HOME/local/perl/bin/perl -V
# 1ライナー (1ライナーとは )
$ $HOME/local/perl/bin/perl -e 'print "Hello World!","\n"'
Hello World!
# CPANインストール
$ $HOME/local/perl/bin/perl -MCPAN -e "shell"
# 展開します。
$ tar xvfz perl-X.X.X.tar.gz
# 展開されたディレクトリに移動します。
$ cd perl-X.X.X
# Configureを実行。今回は$HOME/local/perl以下にインストールします。
$ ./Configure -des -Dprefix=$HOME/local/perl
# インストール開始
$ make
$ make test
$ make install
# バージョンの確認。
$ $HOME/local/perl/bin/perl -V
# 1ライナー (1ライナーとは )
$ $HOME/local/perl/bin/perl -e 'print "Hello World!","\n"'
Hello World!
# CPANインストール
$ $HOME/local/perl/bin/perl -MCPAN -e "shell"
ラベル: LINUX
2008年4月18日
bash ワイルドカード まとめ
ワイルドカードのまとめ
ワイルドカード使用例
* | 0文字以上の任意の文字列 |
? | 任意の1文字 |
[str] | [ ]内のいずれかの1文字 |
[!str] | [ ]内のいずれでもない1文字 |
{str1,str2,str3} | { } 内の,(カンマ)区切りのいずれかの文字列 |
ワイルドカード使用例
*.log | 最後に".log"が付くものすべてにマッチ(access.log,error.log 等) |
index* | 最初に"index"が付くものすべてにマッチ(index.htm,index.html,index.cgi 等) |
*_* | _(アンダーバー)が付くものすべてにマッチ(ab_c,_abc,abc_ 等) |
1*a | 1で始まり、aで終わるものすべてにマッチ(1111aaa,123a,1a 等) |
* | すべてにマッチ |
file.??? | file.の後ろに3文字のものすべてにマッチ(file.txt,file.log) |
????? | 5文字のものすべてにマッチ |
[abc] | a,b,cいずれかの1文字にマッチ |
[0-9] | 0〜9のいずれかの1文字(数字)にマッチ |
[a-zA-Z] | 大文字又は小文字のアルファベット1文字にマッチ |
[!abc] | a,b,cいずれかの文字以外の1文字マッチ |
[!0-9] | 0〜9のいずれかの文字(数字)以外の1文字にマッチ |
[!a-zA-Z] | 大文字又は小文字のアルファベット以外の1文字にマッチ |
index.{htm,html,cgi} | index.htm,index.html,index.cgiのいずれかにマッチ |
ラベル: LINUX
スポンサードリンク