naobe @ ウィキ

Linuxコマンド

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可
Unix/Linuxに戻る

od

ファイルダンプ。
 od -A x -tx1c
アドレスを16進で、1バイトごとに16進とキャラクタ表示

find

条件に一致したファイルを探す
find [path ...] expression

説明
find . -name NAME 現ディレクトリから、名前がNAMEとなるファイルを探し出力する
find . / -amin +10 ルートと現在ディレクトリから、現在より10分以上前にアクセスされたファイルを探し出力する
find aaa bbb -newer ccc aaa,bbbファイルからcccより後に更新されたファイルを探し出力する

sort

 sort -t : -k 7 /etc/passwd
:をセパレータとして用い、7列を使ってソートする。ソートは昇順
 sort -t : -k 7 -r /etc/passwd
上記のソートを降順で行う

taskset

プロセス、コマンドに対してCPUアフィニティ(どのCPUを使うか)を設定する
 taskset -p 00000001 12345
 プロセス12345に対して、CPU0のみ使用するように設定する

setuid


% ls -l /etc/passwd /etc/master.passwd
-rw------- 1 root wheel 994 Sep 26 20:00 /etc/master.passwd
-rw-r--r-- 1 root wheel 793 Sep 26 20:00 /etc/passwd
passwdファイルはrootしか書くことができないが、root以外のユーザが、passwdコマンドで自分のパスワードを書き換えることができる。
 % ls -l /usr/bin/passwd
 -r-sr-xr-x 2 root bin 32768 Jul 22 1998 /usr/bin/passwd
/usr/bin/passwdは所有者(root)の実行権がsになっている。この場合、root以外のユーザがpasswdコマンドを実行すると、そのユーザの実行権ではなくて、所有者(root)の実行権で実行する。よってpasswdファイルを書き換えることができる。


getopts

以下参照。:は値があるということ。

 while getopts ab:c: OPT
   do
   case $OPT in
   "a" ) FLG_A="TRUE" ;;
   "b" ) FLG_B="TRUE" ; VALUE_B="$OPTARG" ;;
   "c" ) FLG_C="TRUE" ; VALUE_C="$OPTARG" ;;
   esac
 done

testでの条件判定

条件 意 味
-z string 文字列の長さが0で真。
-n string string の長さが0より大きければ真。
-e file ファイルが存在すれば真。
-f file 通常のファイルで真。
-c file file が存在し、キャラクタスペシャルファイルであれば真。
-s file fileが存在し、サイズが0より大きければ真
-d file file が存在し、ディレクトリであれば真。
-h file or -L file file が存在し、シンボリックリンクであれば真。
string1 = string2 文字列string1が文字列string2と等しければ真。
string1 != string2 文字列string1が文字列string2と等しくなければ真。
arg1 op arg2 引数を数値とみなして大小を比較する。

オペレーション

項目 説明
-eq 等しい
-ne 等しくない
-lt 小さい
-le 以下
-gt 大きい
-ge 以上

cd -

cd $OLDPWDと同じ

eval

引数を評価して(変数を変換して)コマンドを実行する。
A="DEVICE=eth0"
$A
上記スクリプトを実行すると、DEVICE=eth0というコマンドはないというエラーになるが
A="DEVICE=eth0"
eval $A
とすると変数DEVICEにeth0がセットされる

exec

子プロセスを作成しない(forkしない)で、execを実行したプロセスに,execコマンドの引数コマンドプロセスを上書きする。
シェルから単独のコマンドを実行する場合、無駄なプロセスを作成せずに済む。
【例】
a.sh
ls

この場合は、a.shを実行すると、a.shプロセスが作成され、lsのためにshプロセスが作成されてlsが上書き実行する。

a.sh
 exec ls

この場合は、a.shを実行すると、a.shプロセスが作成され、lsがa.shを上書き実行する。

set -オプション 引数1 ...

引数なしだとシェル変数を全て表示する。オプションを指定すると、シェルのオプションを設定する。setコマンドの引数は、$1,...,$Nにセットされる。

set -e

この後で、コマンドの実行に失敗すると、即、終了する。set +e で、set -eをキャンセルする。

set -v

デバッグモードに設定する

set -m

モニターモード。ジョブコントロールを可能にする。


man

manページの検索順序を変える

環境変数MANPATHを設定する。/etc/man.configの順番を変えただけでは駄目。manpathコマンドを実行すると、検索する順序を表示する。

whatisデータベースを作成する。

makewhatisを実行する。

envとset

envはprintenvの略。printenvは環境変数を出力。setはシェル変数を出力。
Linuxでは、envだけではPS1 , .., PS4を表示しない。setを使う。端末に関する変数なので、コールしたシェルには不要のためでしょう。

ソケットポート番号確認

 netstat -na --protocol=inet

ディレクトリの管理

そのディレクトリの中にあるファイルを修正したり、ファイルを新しく作ったりしたときなどに、そのユーザがオーナーとなり、グループもそのユーザになってしまいます。それをユーザが「作ったユーザ」で、グループが「webuser」にするには、そのディレクトリに対して「chmod 2775 <ディレクトリ名>」(あるいは「chmod g+s <ディレクトリ名>」とします。そのときのディレクトリのパーミッションは「drwxrwsr-x」になります。
http://www.hyperdyne.co.jp/~oohashi/work/redhat/etc/group.shtml 参照

ShiftJISを使う

 CentOS 5.5.で確認

 # localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS
 # locale -a | grep ja
 ja_JP
 ja_JP.eucjp
 ja_JP.sjis
 ja_JP.ujis
 ja_JP.utf8
 japanese
 japanese.euc
 $ export LANG=ja_JP.sjis

ポート番号からプロセスを調べる

 #lsof -i:ポート番号

ランレベルで実行するサービスの変更

サービスの追加

  • /etc/init.d下の起動・停止スクリプトに以下を追加
 #!/bin/sh
 # chkconfig: 35 98 20
 # description: Watch system status
 # processname: hotsanic
chkconfig行の最初の数字は、起動するランレベル。上記では、3と5のランレベルで起動する。次の数字は起動の優先順位。最後の数字は停止の優先順位。description, processnameは任意。
  • #chkconjfig --add サービス名

すべてのサービスの状態表示

 chkconfig --list
 
 [root@athlon4 ~]# chkconfig --list
 NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off
 acpid           0:off   1:off   2:off   3:on    4:on    5:on    6:off
 anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off
 apmd            0:off   1:off   2:on    3:on    4:on    5:on    6:off

特定のサービスの状態表示

 chkconfig --list サービス名

サービスのランレベルでのサービスを変更

 chkconfig --level レベル番号 サービス名 [on|off]
【例】
 chkconfig --level 35 httpd on

httpdのレベル3,5をonにする


tcpdump

ホストを指定

ホストは、srcまたはdst。
 tcpdump host 192.168.24.73

キャプチャサイズ指定

デフォルトは68バイト。1000バイト指定
 tcpdump host 192.168.24.73 -s 1000

ファイル指定

 tcpdump host 192.168.24.73 -s 1000 -w fileName

mail送受信

mail受信

[suna@centos5 ~]$ mail
 Mail version 8.1 6/6/93.  Type ? for help.
 "/var/spool/mail/suna": 1 message 1 new
 >N  1 mloms@centos5         Thu Jul 29 14:36  16/520   "test"
 & 1      ==> 1のメールを確認
 Message 1:
 From mloms@centos5  Thu Jul 29 14:36:39 2010
 Date: Thu, 29 Jul 2010 14:36:38 +0900
 From: mloms@centos5
 To: suna@centos5
 Subject: test

 this is test mail.

 & d   ==> 1のメールを削除
 & q   ==> 削除を反映して終了
 [suna@centos5 ~]$ mail
 No mail for suna   ==> 削除したのでメールがない

mail送信

mail メールアドレス
Subject:タイトル
本文記述
Ctrl+D
Cc:CCアドレス

ftpサーバインストール

インストール

 $ yum search vsftpd
 vsftpd.i386 : vsftpd - 非常に安全な Ftp デーモン
 $ [[sudo]] yum install vsftpd

設定

/etc/vsftpd/vsftpd.conf

以下のみ修正
 # Example config file /etc/vsftpd/vsftpd.conf
 #
 # The default compiled in settings are fairly paranoid. This sample file
 # loosens things up a bit, to make the ftp daemon more usable.
 # Please see vsftpd.conf.5 for all compiled in defaults.
 #
 # READ THIS: This example file is NOT an exhaustive list of vsftpd options.
 # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
 # capabilities.
 #
 # Allow anonymous FTP? (Beware - allowed by default if you comment this out).
 #anonymous_enable=YES
 anonymous_enable=NO
 #
 # Uncomment this to allow local users to log in.
 #local_enable=YES
 local_enable=NO

/etc/hosts.allow

 vsftpd:192.168.0.

/etc/hosts.deny

 vsftpd:ALL

サービスの登録

 chkconfig vsftpd on

メモリ使用量

マシンのメモリ使用量


freeコマンドを使う

 [root@localhost ~]# free
            total       used       free     shared    buffers     cached
 Mem:        715204     443348     271856          0      39952     291532
 -/+ buffers/cache:     111864     603340
 Swap:       883564          0     883564
 
 -/+ buffers/cacheが、バッファ、キャッシュを除いたメモリになる。
この例だと、バッファ、キャッシュを除いた空きメモリは、603MBになる。

プロセスのメモリ使用量

ps auxを実行する。VSZが仮想メモリのサイズ。RSSが実メモリのサイズ。単位はどちらもKB。

ホスト名の設定

 /etc/sysconfig/networkのHOSTNAMEを修正
 # /etc/rc.d/init.d/network restart 

rpm

コマンド 説明 備考
rpm -qa インストールされている全パッケージをリストアップ
rpm -ivh foo.rpm fooをインストール
rpm -e foo fooをアンインストール
rpm -ql パッケージ名 インストールパッケージファイル構成一覧 パッケージは rpm -qaで照会した名前
rpm -qpl foo.rpm インストールするrpmファイルの構成
rpmファイルの構成出力

yum

インターネットからパッケージの追加、更新を行う

設定

プロキシ設定

/etc/yum.conに以下を追加

proxy=http://プロキシホスト名:ポート番号/

PGP keyをrpmに登録


CentOS-Media.repo修正

CD-ROMは使わないので以下に修正
 enabled=0



CentOS-Base.repo修正

/etc/yum.repos.d/CentOS-Base.repoの"mirror.centos.org"を"ftp.riken.jp/Linux/caos"に修正。但し、mirrorlistは除く。gpgkey行を残すとupdateした際にエラーとなるのでコメントにした。

 [base]
 name=CentOS-$releasever - Base
 mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
 #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
 baseurl=http://ftp.riken.jp/Linux/caos/centos/$releasever/os/$basearch/
 gpgcheck=1
 #gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
 #gpgkey=http://ftp.riken.jp/Linux/caos/centos/RPM-GPG-KEY-CentOS-5
 
 #released updates
 [updates]
 name=CentOS-$releasever - Updates
 mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
 #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
 baseurl=http://ftp.riken.jp/Linux/caos/centos/$releasever/updates/$basearch/
 gpgcheck=1
 #gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
 #gpgkey=http://ftp.riken.jp/Linux/caos/centos/RPM-GPG-KEY-CentOS-5
 
 #packages used/produced in the build but not released
 [addons]
 name=CentOS-$releasever - Addons
 mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
 #baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
 baseurl=http://ftp.riken.jp/Linux/caos/centos/$releasever/addons/$basearch/
 gpgcheck=1
 #gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
 #gpgkey=http://ftp.riken.jp/Linux/caos/centos/RPM-GPG-KEY-CentOS-5
 
 #additional packages that may be useful
 [extras]
 name=CentOS-$releasever - Extras
 mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
 #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
 baseurl=http://ftp.riken.jp/Linux/caos/centos/$releasever/extras/$basearch/
 gpgcheck=1
 #gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
 #gpgkey=http://ftp.riken.jp/Linux/caos/centos/RPM-GPG-KEY-CentOS-5
 
 #additional packages that extend functionality of existing packages
 [centosplus]
 name=CentOS-$releasever - Plus
 mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
 baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
 gpgcheck=1
 enabled=0
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

パッケージの検索

yum search キーワード

パッケージの削除

yum remove パッケージ名

パッケージのインストール

yum install パッケージ名

パッケージの更新

yum update パッケージ名

パッケージの問い合わせ

レポジトリの中を問い合わせ、現在インストールされているパッケージはrpmコマンドを使う。

 yum info [ オプション または パッケージ名 ]
 yum list [ オプション または パッケージ名 ]
 yum list installed パッケージ名  

仮想インタフェースの追加

  • cd /etc/sysconfig/network-scripts
  • cp ifcfg-eth0 ifcfg-eth0:1
  • vi ifcfg-eth0:1
  • DEVICEのeth0をeth0:1に修正。IPADDRを修正。
  • ifup eth0:1

プロセス監視

コマンドラインを全て表示

 ps -efww

スレッドの詳細情報

ps -eLf

シングルユーザモードでの立ち上げ

  • 起動後の画面で、tabキーを押す
  • Grubの画面でCentOSが選択されていることを確認して、Eを押す

ulimit option 値

弱い制限と強い制限がある。強い制限は一度設定すると増加できない。弱い制限は、強い制限まで増加できる。

オプション 説 明
-S 弱い制限
-H 強い制限
-c コアダンプファイル


システム制限表示


[foo@athlon4 gedit]$ ulimit -a
address space limit (kbytes)   (-M)  メモリ
core file size (blocks)        (-c)  コアファイルサイズ
cpu time (seconds)             (-t)  最大CPU使用時間 ??
data size (kbytes)             (-d)  プロセスデータセグメントサイズ
file size (blocks)             (-f)  最大ファイルサイズ
locks                          (-L)  
locked address space (kbytes)  (-l)  
nofile                         (-n)  最大オープンファイルディスクリプタ数
nproc                          (-u)  ユーザの最大利用可能プロセス数
pipe buffer size (bytes)       (-p)  
resident set size (kbytes)     (-m)  
socket buffer size (bytes)     (-b)  
stack size (kbytes)            (-s)  最大スタックサイズ
threads                        (-T)  
process size (kbytes)          (-v)  シェルの最大仮想メモリサイズ

その他

コマンド 説明
script file fileに以後の実行結果を残す。exitを実行するとfileへの書き込みを終了する
ウィキ募集バナー