amarron2’s blog

linuxや資格関係の記事を書きます。基本自分用のメモです。

linux コマンド メモ

f:id:Amarron:20160626221405p:plain

  • 個人的によく使うコマンドのメモ
  • 増えたら追記します

ファイル


ファイル名検索

// ファイル名検索
$ find . -name "*ファイル名*" -ls

// ファイルを探して削除
$find . -name “*ファイル名*” -exec rm -rf {} \;

// ファイルを探して削除2
$find . -name “*ファイル名*” | xargs rm

// テキスト内検索
$ find ./ -type f -print | xargs grep '検索文字' 2> /dev/null 

ファイル名検索(macOS

$ 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」コマンドで実行中のジョブを確認出来る
    1. コマンド実行
    2. 「Ctr+z」で処理一時停止
    3. 「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. 所有者以外のユーザに書き込み権限を与えてしまうと、ユーザの把握しない鍵が勝手に登録され、ログインされてしまう可能性が生じる