- 個人的によく使うコマンドのメモ
- 増えたら追記します
ファイル
ファイル名検索
// ファイル名検索
$ find . -name "*ファイル名*" -ls
// ファイルを探して削除
$find . -name “*ファイル名*” -exec rm -rf {} \;
// ファイルを探して削除2
$find . -name “*ファイル名*” | xargs rm
// テキスト内検索
$ find ./ -type f -print | xargs grep '検索文字' 2> /dev/null
$ mdfind -name ファイル名
$ mdfind -onlyin ~/Documents 検索キーワード
ファイル名一括置換
// ファイル名一括置換
for F in 検索文字*; do mv $F ${F/検索文字/置換文字};done
// 使用例
for F in *.png; do mv $F ${F/.png/@2x.png};done
// 使用例2
$ for F in *.txt; do
> mv $F $(basename $F .txt).csv
> done
zip圧縮
$ zip -r mydir.zip ./mydir
// 圧縮例(パスワード付き)
$ zip -e -r test.zip ./test
Enter password: # パスを聞かれるので設定する
Verify password: # 確認のためもう一度パスを入力
// 解凍例
$ unzip test.zip
データ取得
// wget
// htmlファイル取得
$ wget example.com
// htmlファイル取得(再帰)
$ wget -r example.com
// curl
// html表示
$ curl example.com
// レスポンスヘッダ
$ curl --head httpbin.org/ip
$ curl --dump-header - httpbin.org/ip
// post
$ curl -d 'id=1&name=jack' http://httpbin.org/post
// httpsでpost、レスポンスヘッダのみ表示
$ curl --dump-header - -k https://httpbin.org/post -X POST -d "id=1" -d "name=jack”
// scp
// 書式
scp コピー元ファイル [ユーザー名@]コピー先ホスト:[コピー先ファイル名]
scp [ユーザー名@]コピー元ホスト:コピー元ファイル名 コピー先ファイル名
// ダウンロード(yoursite.comのホームディレクトリ直下のhoge.txtをクライアントのデスクトップへDLする)
$ scp manager@yoursite.com:hoge.txt ~/Desktop/
// アップロード(公開鍵をアップロード)
scp -p ./id_rsa manager@yoursite.com:~/.ssh/my_rsa
コマンド履歴
// gitの利用履歴を表示の例
$ history | grep git
サーバ情報確認
- pingでネットワーク疎通して、応答がなかったらtracerouteでどこに原因があるか調べる
- ルーティングテーブル(netstat -r)でルーターやネットワーク接続されたコンピュータが持つ、個々のネットワークの宛先への経路の一覧
システム情報
// 自分のシステム情報の確認
$ cat /etc/issue // ディストリビューション名
CentOS release 6.6 (Final)
Kernel \r on an \m
$ uname -n // ホスト名
localhost.localdomain
$ uname -s // OS名
Linux
$ uname -v // OSのバージョン
#1 SMP Wed Jun 12 03:34:52 UTC 2013
$ uname -a // 全情報
Linux localhost.localdomain 2.6.32-358.11.1.el6.x86_64 #1 SMP Wed Jun 12 03:34:52 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
$ hostname // ホスト名の確認及び設定ができる
localhost.localdomain
// サーバソフトとバージョンの確認
$ wget --spider -S 192.168.0.2
Spider mode enabled. Check if remote file exists.
--2015-11-01 01:03:16-- http://192.168.0.2/
Connecting to 192.168.0.2:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Server: nginx/1.6.2 // ←ここで確認
Date: Mon, 31 Oct 2015 16:03:16 GMT
Content-Type: text/html
Content-Length: 11104
Last-Modified: Sun, 11 Sep 2015 07:20:58 GMT
Connection: keep-alive
ETag: "57d505da-2b60"
Accept-Ranges: bytes
Length: 11104 (11K) [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.
容量
// 指定ディレクトリの使用料の合計が確認出来る
# du -hs /*
# du -h -x -d 1 /
// ディスク・ドライブの使用量
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
8938240 1976480 6507720 24% /
tmpfs 189764 0 189764 0% /dev/shm
/dev/sda1 495844 77949 392295 17% /boot
vagrant 233591456 123086244 110505212 53% /vagrant
ポート
// クライアントのポート確認(ポート指定)
$ netstat -an | grep 80
tcp 0 0 :::80 :::* LISTEN
udp 0 0 0.0.0.0:802 0.0.0.0:*
unix 7 [ ] DGRAM 8071 /dev/log
$ lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
VBoxHeadl 6812 jack 18u IPv4 0xbf14137b3bb49b2f 0t0 TCP *:http-alt (LISTEN)
// 自ポート確認(Listenしているポート)
$ netstat -an |grep LISTEN
// ファイルが何で使用しているか確認
// 参考:http://qiita.com/yusabana/items/fd03ee4c90a0d1e0a8c6
% lsof /var/log/system.log
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
tail 97529 USERNAME 3r REG 1,2 498299 12085861 /private/var/log/system.log
// /var/log/system.logはtailコマンドで開いていることがわかりる
// ルーティングテーブル確認(ルーティングテーブルとは、ルータや端末が保持するパケットの配送先に関する経路情報)
$ netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
link-local * 255.255.0.0 U 0 0 0 eth0
default 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
// ホストのポート確認
$ nmap example.com
・・・
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
443/tcp open https
1119/tcp closed bnetgame
・・・
// ドメイン情報取得
$ whois yahoo.jp
・・・
Domain Information: [ドメイン情報]
[Domain Name] YAHOO.JP
[登録者名] ヤフー株式会社
・・・
// DNSサーバーから詳細情報を取得(nslookupは非推奨のためdig)
// 183.79.23.196と183.79.227.111の2台が、yahoo.jpのドメインに紐付いている
$ dig yahoo.jp
・・・
;; ANSWER SECTION:
yahoo.jp. 222 IN A 183.79.23.196
yahoo.jp. 222 IN A 183.79.227.111
・・・
// ドメインを管理しているネームサーバー
$ dig yahoo.jp ns
・・・
;; ANSWER SECTION:
yahoo.jp. 1127 IN NS ns01.yahoo.co.jp.
yahoo.jp. 1127 IN NS ns12.yahoo.co.jp.
yahoo.jp. 1127 IN NS ns02.yahoo.co.jp.
yahoo.jp. 1127 IN NS ns11.yahoo.co.jp.
・・・
// nslookupの場合
$ nslookup yahoo.jp
Server: 10.0.2.3
Address: 10.0.2.3#53
Non-authoritative answer:
Name: yahoo.jp
Address: 183.79.227.111
Name: yahoo.jp
Address: 183.79.23.196
// DNSサーバを使ってホストやドメインに関する情報を表示する
$ host example.com
example.com has address 93.184.216.119
$ host 93.184.216.119
119.216.184.93.in-addr.arpa domain name pointer example.com.
その他参考
jobsで実行中のジョブを確認
- 「jobs」コマンドで実行中のジョブを確認出来る
- コマンド実行
- 「Ctr+z」で処理一時停止
- 「jobs」コマンドでジョブ番号を確認し、再開または停止を実行する
- フォアグラウンドで再開:「fg ジョブ番号」
- バックグラウンドで再開:「bg ジョブ番号」(1. コマンド実行の時に「&」をつけて実行した場合と同じ)
- 停止:「ps」コマンドでプロセスIDを確認し、「kill プロセスID」で処理を停止(「jobs」コマンドで一覧からジョブが削除されている)
killでプロセスを終了
- 「kill」コマンドでプロセスを終了できる
- シグナルIDは「15」が通常終了、「9」が強制終了
- 「kill 560」も「kill -15 560」も「kill -TERM 560」も「kill -s 15 560」も「kill -SIGTERM 560」も全て同じ結果
killコマンド書式)
kill -[シグナル名またはシグナルID] PID
kill -s [シグナル名またはシグナルID] PID
kill -SIGシグナル名 PID
シグナル名 |
シグナルID |
動作 |
HUP |
1 |
ハングアップ(設定の再読み込みがしたいときに使う) |
INT |
2 |
キーボードからの割り込み(Ctrl+C) |
KILL |
9 |
強制終了 |
TERM |
15 |
終了(デフォルト) |
CONT |
18 |
停止しているプロセスを再開 |
STOP |
19 |
一時停止 |
ログの調査
- 「tail」コマンドでログファイルを監視できる
- 「grep」コマンド併用で特定のメッセージを調べられる
- 「who」コマンドでログイン中のユーザーが調べられる
- 「w」コマンドでログイン中のユーザー及びシステム情報も調べられる
- 「last」コマンドで最近ログインしたユーザー一覧を表示します
ログファイル |
コマンド |
説明 |
/var/log/messages |
less,tail,grep等 |
一般的なシステム関連のメッセージ |
/var/log/secure |
less,tail,grep等 |
セキュリティに関するメッセージ |
/var/log/wtmp |
last |
最近ログインしたユーザー |
/var/run/utmp |
who,w |
ログイン中のユーザー |
/var/log/lastlog |
lastlog |
ユーザーごとのログイン情報 |
ログの書式)
Nov 9 06:46:59 localhost kernel: starting
① ② ③ ④
①日時
②出力元ホスト名
③メッセージ出力元
④メッセージ
grepの例)
[root@localhost ~]# grep eth0 /var/log/messages
Nov 9 05:33:05 localhost kernel: e1000 0000:00:03.0: eth0: (PCI:33MHz:32-bit) 08:00:27:9a:38:87
公開鍵認証(SSH)
公開鍵 |
ファイル |
自分の公開鍵 |
~/.ssh/id_[rsa1,rsa,dsa等].pub |
SSHクライアント側にある、サーバの公開鍵 |
~/.ssh/known_hosts |
SSHサーバ側にある、クライアントの公開鍵 |
~/.ssh/authorized_keys |
// 公開鍵認証の流れ
// 1. 公開鍵と秘密鍵を作成(クライアント側)
[hoge@client ~]$ ssh-keygen -t rsa
// 対話的に作成しパスフレーズを入力する
// 「~/.ssh/id_rsa.pub」と「~/.ssh/id_rsa_key」が作成される
// 2. 作成した公開鍵をサーバへscpで転送(クライアント側)
[hoge@client ~]$ scp ~/.ssh/id_rsa.pub yourserver.com:publickey
// 3. クライアントから送られた公開鍵をクライアント用の公開鍵に追記(サーバ側)
[foo@yourserver.com]$ cat publickey >> ~/.ssh/authorized_keys
// 4. クライアント用の公開鍵の権限を所有者のみ読み書き出来るよう変更する※1(サーバ側)
[foo@yourserver.com]$ chmod 600 ~/.ssh/authorized_keys
// 5. サーバへ公開鍵認証でログインできるようになる(クライアント側)
[hoge@client ~]$ ssh foo@yourserver.com
// 1.で作成したパスフレーズを入力してログイン
// 毎回パスフレーズを入力したくなければ「ssh-agent」コマンドを実行すると省略できる
// 6. 通常ログインでの接続を禁止する(鍵認証のみログイン可能にする)
$ sudo vi /etc/ssh/sshd_config
PasswordAuthentication no
// 7. sshの再起動
// ubuntの場合
$ sudo /etc/init.d/ssh restart
// centOS7の場合
$ sudo systemctl start sshd.service
※1. 所有者以外のユーザに書き込み権限を与えてしまうと、ユーザの把握しない鍵が勝手に登録され、ログインされてしまう可能性が生じる