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
シェルから単独のコマンドを実行する場合、無駄なプロセスを作成せずに済む。
【例】
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を使う。端末に関する変数なので、コールしたシェルには不要のためでしょう。
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 参照
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アドレス
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に登録
- http://ftp.riken.jp/Linux/caos/centos/RPM-GPG-KEY-CentOS-5をブラウザから開いてコピーし、RPM-GPG-KEY-CentOS-5という名前のファイルに書き込む
- rpm --import RPM-GPG-KEY-CentOS-5
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への書き込みを終了する |