CPUが急に高騰の原因となっているJavaスレッドの特定方法について

Linuxでは、CPU使用率が急に高くなる原因が様々ありますが、その中に、Javaスレッドがロックされた事例に関して、スレッドを特定手順の記事です。 f:id:www0532:20210419144548p:plain

1.使用率が高い「プロセス」と「スレッド」のプロセス ID の特定

先ず、「プロセス」 と 「スレッド」の違うところから調べると、「プロセス」は、「実行中のプログラムを抽象化したもの」で、「スレッド」は、1つのプロセスから生成される最小実行単位であることを分かりました。そして、同じプロセスから並行でスレッドを起動させることができます。

ここでは、使用率が高い 「プロセス」 のプロセス ID、及びその 「スレッド」 のプロセス ID、両方取得する必要です。

1-1.「プロセス」 のプロセス ID

Linuxの topコマンドは、システムで実行されているプロセスの一覧を表示するコマンドです。このコマンドを利用し、利用率が高いプロセスを特定できます。

topコマンドのデフォルト設定では、上から下にCPU使用率の降順で並んでいます。ここでは、CPU使用率(%CPU)が高い行を注目し、「PID」列に表れている10進数数字の「プロセス」のプロセスIDをメモします。

$ top
   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 73292 java-user 20   0   26.9g  23.2g   2.9g S 389.3 75.6   1455:23 java
 79701 root      20   0  162660   2844   1592 S   0.7  0.0   0:13.47 top
     1 root      20   0  191136   3240   1976 S   0.0  0.0  18:22.29 systemd
・・・
1-2.「スレッド」 のプロセス ID

topコマンドの「-H」オプションを付けて、「top -H」と実行すると、CPUの使用率が高いプロセスの「スレッド単位」のCPUデータを取得できます。

$ top -H
  PID USER       PR  NI   VIRT   RES     SHR  S %CPU %MEM     TIME+ COMMAND
18142 java-user  20   0   27.1g  23.3g   3.0g R 58.0 75.0 141:58.25 JobHandler: /va
14425 java-user  20   0   27.1g  23.3g   3.0g R 10.0 75.0 796:13.41 sling-default-1
・・・

上から下には、CPU使用率の降順で並んでいるため、CPU使用率(%CPU)が高い行を注目し、「PID」列に表れている10進数数字の「スレッド」プロセスIDをメモします。

2.プロセス ID の16進数変換

次のステップには、Javaプロセスの「スタックダンプ」の取得処理を行います。この「スタックダンプ」の中には、「nid」が16進数で出力されています。そして、手順1-2で「top -H」コマンドで取得した「スレッド」のプロセス ID(PID)は10進数形式で表しています。両者を合致するため、「スレッド」のプロセス ID(PID)を10進数⇒16進数に変換する必要があります。

$ printf %x\\n 18142
46de

ここで利用するのは、入力データを整形して表示する「printf」コマンドです。記号「%x」を指定されると、後ろの10進数を16進数(符号付き、アルファベット部分は小文字)に変換されます。ここの「\\n」は改行コードです。

3.プロセスのスタックダンプの抽出

手順1-1で取得した プロセス のPIDで、jstack ユーティリティーを使用して、プロセスのスタックダンプを抽出する。オプションの「-l」を付けると、ロックについての追加情報などは、長形式で抽出される。

$ jstack -l PID > high-cpu-tdump.out

また、抽出したプロセスのスタックダンプの「nid」から、手順2で変換した16進数の「スレッド」のプロセス ID(PID)で検索すると、原因になっているJavaスレッドが特定されます。

f:id:www0532:20210419162750p:plain

※参照サイト

3.3. JAVA スレッドによる CPU 高使用率の特定

jstack - スタックトレース

プロセスとスレッドの違いとは?

ousei.hatenablog.com

ousei.hatenablog.com

Linuxコマンドメモ(二)(随時更新)

目次

   自分用メモとして残します。

管理系のLinuxコマンド

e.パッケージ関連

e-01【yum】-- パッケージがインストールされているか確認する

yum」は、Red Hat系のLinuxディストリビューションで使われている“RPMパッケージ”を扱うためのパッケージ管理コマンドです。 

$ yum [オプション] コマンド [パッケージ名など]

 

yumコマンドの基本操作

yum install パッケージ名

(パッケージおよびそのパッケージに必要なパッケージを同時にインストールする)

yum update パッケージ名

(指定したパッケージがインストールされている場合、アップデートする。パッケージを指定しなかった場合はシステム全体がアップデート対象となる)

yum erase パッケージ名

(パッケージをアンインストールする。指定したパッケージに依存するパッケージも削除するかどうかの確認メッセージが表示される)

 

yumで使える主なコマンドは次の通りです。

 

パッケージ操作関係

コマンド 実行内容
install パッケージをインストールする
reinstall パッケージを再インストールする
downgrade パッケージをダウングレードする
erase パッケージを削除する
update システムのパッケージを更新する
update-minimal 「重要な更新」だけを更新する
upgrade 不要になったパッケージを考慮しながらパッケージを更新する
distribution-synchronization 最新の利用可能なバージョンへインストール済みパッケージを同期する
localinstall パッケージファイル(RPMファイル)を指定してインストールする
localupdate パッケージファイル(RPMファイル)を指定してアップデートする
 

 情報関係のコマンド

 
コマンド 実行内容
info パッケージもしくはパッケージグループの詳細を表示する
list パッケージグループの一覧を表示する
deplist パッケージの依存性の一覧を表示する
groups パッケージグループの情報を表示する
search 指定した文字列でパッケージの詳細を検索する
provides ファイルなどを指定して、該当するファイルを提供するパッケージを検索する
repolist ソフトウェアリポジトリの構成を表示する
version ホストが利用できるリポジトリのバージョンを表示する
 

メンテナンス関係のコマンド・その他 

コマンド 実行内容
check rpmデータベースの問題を確認する
check-update 更新に利用できるパッケージを確認する
clean キャッシュデータを削除する
shell 対話型のシェル(yumシェル)を実行する
updateinfo リポジトリの更新情報を表示する
 

オプション項目

短いオプション 長いオプション 意味
-y --assumeyes 全ての問い合わせに「yes」で応答したものとして実行する
  --assumeno 全ての問い合わせに「no」で応答したものとして実行する
-t --tolerant エラーを黙認する
-R 分 --randomwait=分 最大の待ち時間を指定する
-c 構成ファイル --config=構成ファイル 構成ファイルを指定する
  --installroot=場所 インストール先を指定する
  --downloaddir=場所 ダウンロード先を指定する
  --downloadonly ダウンロードだけを行う
-C --cacheonly パッケージの情報をダウンロードせずキャッシュだけを使用する
-x パッケージ --exclude=パッケージ 除外するパッケージを指定する(ワイルドカードも使用可能)
  --color=指定 出力メッセージを色付きにするかどうかを「always」「auto」「never」のいずれかで指定する
-q --quiet 実行時にメッセージを出力しない
-v --verbose 詳しいメッセージを出力する

 

 

f.ネットワーク関連

f-01【ip】-- IPアドレスを表示する

 下記のコマンドで実行する。 

$ ip [オプション] オブジェクト [サブコマンド]

ipコマンドのオブジェクト

オブジェクト 別名(省略形) 意味
link l ネットワークデバイス
addr a、address ネットワークデバイスIPアドレス
addrlabel addrl アドレスラベル
route r ルーティングテーブルのエントリー
rule rul ルーティングポリシーデータベースに登録されているルール
neigh n、neighbour 近傍キャッシュエントリ(ARPまたはNDISCキャッシュエントリ)
ntable nt、ntb 近傍キャッシュの管理テーブル
tunnel t IPトンネル
tuntap tu トンネルデバイス
maddr m、ma、mad マルチキャストアドレス
mroute mr マルチキャストルーティングのキャッシュエントリ
mrule mru マルチキャストルーティングポリシーデータベースに登録されているルール
monitor mon ネットリンクメッセージの監視
xfrm x、xf IPsecポリシー
netns net ネットワーク名前空間
l2tp l2 L2TPv3(レイヤー2トンネリングプロトコル
tcp_metrics tcp_m、tcp_metrics、tcpm TCPメトリック
token tok トーク

ipコマンドの主なオプション

短いオプション 長いオプション 意味
-f プロトコル -family プロトコル 使用するプロトコルファミリーをinet、inet6、bridge、ipx、dnet、linkから指定する
-4   IPv4を使用(-family inet相当)
-6   IPv6を使用(-family inet6相当)
-B   ブリッジを使用(-family bridge相当)
-D   DECnetを使用(-family decnet相当)
-I   IPXを使用(-family ipx相当)
-0   データリンクプロトコルを使用(-family link相当)
-l 回数 -loops 回数 「ip addr flush」の試行回数(デフォルトは10、0を指定すると全てのアドレスが削除されるまで実行)
-b ファイル -batch ファイル ファイルからコマンドを読み込む
  -force バッチモード(-bオプション使用時)、エラーで停止しない
-s -stats、-statistics 情報を詳しく表示する
-o -oneline 出力を1行にする(改行が"\"に置き換えられる)
-r -resolve アドレスの代わりにDNS名を表示する

ip addrの主なサブコマンド

コマンド 意味
add 指定したIPアドレスを付加する
change 指定したIPアドレスの設定を変更する
replace 指定したIPアドレスの設定を置き換える(change同様、ただし指定したアドレスがない場合は追加する)
del 指定したIPアドレスを削除する
list、show 設定されているIPアドレスを表示する(デフォルト)
save 設定を保存する(バイナリで出力されるのでリダイレクトで保存する)
flush バイスに設定されている全てのIPアドレスを消去する
help 使い方(ip addr helpでip addrの使い方を表示する)
 
f-02【hostname】-- ホスト名を表示・設定する

 下記のコマンドで実行する。 

$ hostname [オプション] 

下記のコマンドで実行する。 

$ hostname [オプション] 新しいホスト名  

 オプション項目

短いオプション 長いオプショ 意味
-a --alias ホストの別名(alias)があれば表示する
-d --domain DNSドメインの名前を表示する
-f --fqdn,--long FQDN(Fully Qualified Domain Name)を表示する
-A --all-fqdns 全てのFQDN(FQDNs)を表示する
-i --ip-address ホストのIPアドレスを表示する。設定時も使用可能
-I --all-ip-addresses 全てのアドレスを表示する
-s --short 短い形式のホスト名(最初のドットまでの名前)を表示する
-y --yp,--nis NISドメイン名を表示する。設定時も使用可能
-v --verbose 起こっていることを逐一表示する(verboseモード)
-F --file filename 新しいホスト名を指定したファイルから読みこむ(「#」から始まる行はコメント扱い)
f-03【ping】-- ネットワークが繋がっているか確認する

pingコマンドは指定したホストとの間でネットワークが疎通(そつう)しているかどうかを調べるコマンドです。 

$ ping [オプション] 通信相手

 オプション項目(回数や表示内容など)

オプション 意味
-4 IPv4を使用する(pingコマンドのデフォルト)
-6 IPv6を使用する(ping6コマンドのデフォルト)
-c 回数 パケットを送る回数
-i 秒数 個々の送信の後に待つ秒数(デフォルトは1秒)
-w 秒数 状況を問わず、pingコマンドの実行を指定した秒数で終わらせる
-n 数値出力のみを行う(IPアドレスからホスト名を検索しない)
-q 開始と終了時の要約のみで他は表示しない(quiet)
-v 詳細な出力を行う(verbose)
 

オプション項目(テスト方法など) 

オプション 意味
-d 使用するソケットにデバッグオプションを設定する
-p パターン 送出するパケットを埋める値をパターンで指定する。「-p ff」とすると全て1で埋めたパケットを送信する
-s サイズ 送出するパケットのサイズを指定する(デフォルトは56バイト+ICMPヘッダ8バイト=合計64バイト)
-R 経路を記録する
-r 通常のルーティングを無視して接続する
-I インタフェース 指定したインタフェースからマルチキャストパケットを送る
-L マルチキャストパケットのループバックを抑制する
-t TTL マルチキャストパケットのIP寿命(Time To Live)を設定する
 



f-04【dig】-- DNSに問い合わせ、ドメイン名からIPアドレスを調べる

dig, nslookup, host, nsupdate コマンドを使うには「bind-utils」をインストールすれば、そのパッケージ内に、dig,nslookupなどが入っているのでインストールされます 

下記のコマンドで実行する。 

$ dig [@DNSサーバ] ドメイン名 [クエリタイプ] [クエリクラス] [クエリオプション]

digで指定する主なクエリタイプ

タイプ 意味
a ネットワークアドレス(T_A)、デフォルト
any 指定されたドメインの全て/任意の情報(T_ANY)
hinfo ホスト情報(T_HINFO)
mx メール交換情報(T_MX)
ns ネームサーバ(T_NS)
soa ゾーンの権威者を表すレコード(T_SOA
axfr ゾーン転送情報(T_AXFR)
 

digで指定する主なクエリクラス

クラス 意味
in インターネットクラスドメイン(C_IN)、デフォルト
any 全て/任意のクラスの情報(C_ANY)
 

 

digで指定する主なクエリオプション

オプション 意味
-4 IPv4で問い合わせる
-6 IPv6で問い合わせる
-x IPアドレス 逆引きを行う
-t クエリタイプ クエリタイプ(-t aまたは -t T_Aのように使用)
-c クエリクラス クエリクラス(-c inまたは-c C_INのように使用)
-p ポート番号 問い合わせに使用するポート番号(デフォルトは53)
-f ファイル ファイルを読み込んで問い合わせを実行する(バッチモード)
-T 秒数 バッチモードで実行した際、各問い合わせの間隔(デフォルトは0秒)
+debug、+nodebug デバッグモードの有効/無効(省略形:deb
+recurse、+norecurse 再帰的な探索の有効/無効(省略形:rec)
+retry=回数 リトライの回数(省略形:ret)、デフォルトは4回
+time=秒数 タイムアウトまでの秒数(省略形:ti)、デフォルトは4秒
+defname、+nodefname デフォルトドメインを使用するかどうか(省略形:def)
+search、+nosearch ドメインサーチリストを使うかどうか(省略形:sea)
+trace、+notrace ルートDNSからの名前解決をトレースするかどうか(省略形:tra)
+dnssec、+nodnssec DNSSEC を使用するかどうか(省略形:dn)


digで指定する主なクエリオプション(表示指定関係)

オプション 意味
+cmd、+nocmd コマンドを表示するかどうか(省略形:cm)
+stats、+nostats 問い合わせの統計を表示するかどうか(省略形:st)
+comment、+nocomments コメントを表示するかどうか(省略形:co)
+ques、+noques 質問ブロックを表示するかどうか(省略形:qu)
+answer、+noanswer 回答ブロックを表示するかどうか(省略形:an)
+all、+noall 表示指定を全て有効/無効にする
+multiline、+nomultiline 拡張フォーマットで表示するかどうか(省略形:m)
+short、+noshort 短い表示を行うかどうか(省略形:shor)
f-05【ss】-- ネットワークのソケットの情報を出力する

 下記のコマンドで実行する。 

$ ss [オプション] [フィルター]

ssの主なオプション(表示対象関係)

短いオプション 長いオプション 意味
-f ソケット --family ソケット 表示するソケットの種類(ファミリー)をunix、inet、inet6、link、netlinkから指定する
-x --unix UNIXドメインソケットを表示(-f unix相当)
-4 --ipv4 IPv4のソケットだけを表示(-f inet相当)
-6 --ipv6 IPv6のソケットだけを表示(-f inet6相当)
-0 --packet パケットソケットを表示(-f link相当)
-t --tcp TCPソケットを表示
-u --udp UDPソケットを表示
-d --dccp DCCPソケットを表示
-w --raw RAWソケットを表示
-a --all 接続待ち状態(LISTEN)のソケットと接続待ち状態にないソケットの両方を表示する
-l --listening 接続待ち状態のソケットだけを表示する
-N ネームスペース --net=ネームスペース 指定したネームスペースに切り替える
-A クエリ --query=クエリ, --socket=クエリ 対象をカンマ区切りで指定する(all、inet、tcpudp、raw、unix、packet、netlink、unix_dgram、unix_stream、unix_seqpacket、packet_raw、packet_dgramから選択)
-F ファイル名 --filter=ファイル名 フィルターの指定をファイルから読み込む

 

ssの主なオプション(表示内容関係)

短いオプション 長いオプション 意味
-n --numeric サービス名の名前解決を行わない(ポート番号を表示)
-r --resolve 名前解決を行う
-e --extended 詳細情報を表示
-o --options タイマー情報も表示する
-m --memory 各ソケットのメモリの使用量も表示する
-p --processes ソケットを使用しているプロセスも表示する
-Z --context -pオプションに加えてセキュリティコンテキストも表示(SELinux
-z --contexts -Zオプションに加えてソケットコンテキストも表示(SELinux
-i --info 内部TCPの情報も表示する
-s --summary ソケットの種類ごとに本数を表示する
-D ファイル名 --diag=ファイル名 RAW情報をファイルに出力する(画面には何も出力しない)
 
f-06【traceroute】-- ネットワークの経路を表示する 

インストール方法。 

$ yum -y install traceroute

tracerouteコマンドは、操作中の端末から目的のサーバまでのネットワーク経路を調べるコマンドです。 

$ traceroute [オプション] 接続先

 オプション項目

短いオプション 長いオプション 意味
-4   IPv4を使用する(tracerouteコマンドのデフォルト)
-6   IPv6を使用する(traceroute6コマンドのデフォルト)
-I --icmp ICMPを使用する
-T --tcp TCPを使用する
-d --debug デバッグモードを有効にする
-i インタフェース --interface=インタフェース 使用するインタフェースを指定する
-p ポート番号 --port ポート番号 使用するポート番号を指定する
-g ゲートウェイ --gateway=ゲートウェイ 使用するゲートウェイを指定する
-r   通常のルーティングを無視して接続する
-F --dont-fragment パケットのフラグメント化を禁止する
-n   IPアドレスのまま表示する(ホスト名を検索しない)
-m TTL --max-hops=TTL 最大のホップ数(Max Time-To-Live value)を指定する。最大値は255、初期値は30
-f TTL --first=TTL 表示を開始するTTLの値を指定する(経路を途中から表示する際に使用)
-w 秒数 --wait 秒数 応答の待ち時間(デフォルトは5秒)
-q 回数 --queries=回数 1カ所ごとのパケット送信回数(デフォルトは3回)
 
f-07【curl】-- ネットワークのプロトコルでデータを送信/取得する 

 下記のコマンドで実行する。 

$ curl -O [オプション] URL

保存先のファイル名を指定する 

$ curl [オプション] URL > 保存ファイル名

 オプション項目 

短いオプション 長いオプション 意味
-O --remote-name 転送元と同じ名前で保存する(「-O」または「-o」を指定しない場合は標準出力)
-o --output ファイル名 保存するファイル名(「-O」または「-o」を指定しない場合は標準出力)
  --create-dirs 「-o」でディレクトリを指定した際、そのディレクトリがない場合は作成する
-# --progress-bar 進行状況を「#」文字で表示する
-f --fail 失敗してもエラーメッセージを表示しない
-s --silent 実行中のメッセージを表示しない
-4 --ipv4 IPv4だけを使う
-6 --ipv6 IPv6だけを使う
-A --user-agent "Webブラウザ" 実行時のWebブラウザ名を指定する
-e --referer URL リンク元のURLを指定する
-b --cookie "名前=値" 実行時のクッキーを指定する
  --anyauth 複数の認証方法を試す(個別に「--basic」「--digest」「--ntlm」「--negotiate」を指定可)
-C --continue-at バイト数 転送の続きから行う際に、何バイト目から再開するか指定する(「-C -」で自動計算)
-d --data "データ" データをPOSTしたのと同じように送る
-F --form "名前=値" 指定した内容をフォームから入力したのと同じように送る
  --data-urlencode "データ" データをURLエンコードして送る
 

g.サービス関連

g-01【systemctl】-- 指定したサービスのを行う。

systemctlコマンドはsystemdを操作するコマンドで、サービスの起動や停止・起動設定の変更と状態確認ができます。。 

$ systemctl [オプション] コマンド [Unit名]

 オプション項目。 

オプション オプションの意味
-a or --all 全てのユニット/プロパティを表示する
-t or --type= 特定のユニットのみを指定して表示する
-l or full ユニット名、プロセスツリーエントリー、ジャーナル出力を省略しないせずに出力する
--show-types ソケット表示で、そのタイプを表示する
--no-block 要求された操作が終わるまで同期的に待たない。これが指定されていない場合はジョブはベリファイされたのちエンキューされて systemctl はジョブの完了を待つ。

 

操作 コマンド
サービス起動 systemctl start [Unit名]
サービス停止 systemctl stop [Unit名]
サービス再起動 systemctl restart [Unit名]
サービスリロード systemctl reload [Unit名]
サービスステータス表示 systemctl status [Unit名]
サービス自動起動有効 systemctl enable [Unit名]
サービス自動起動無効 systemctl disable [Unit名]
サービス自動起動設定確認 systemctl is-enabled [Unit名]
サービス一覧 systemctl list-unit-files --type=service
設定ファイルの再読込 systemctl daemon-reload

 

g-02【httpd】-- apacheのバージョンを表示する

下記のコマンドでApatchのバージョンを確認する。 

$ httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Apr 2 2020 13:13:23

下記のコマンドでApatchの設定ファイルをチェックする。 

$ httpd -t
Syntax OK

下記のコマンドで動的にロードされたモジュールを調べる。 

$ httpd -M
Loaded Modules:
core_module (static)
so_module (static)
http_module (static)
・・・

下記のコマンドでオプション一覧を表示する。 

$ httpd -h
Usage: httpd [-D name] [-d directory] [-f file]
[-C "directive"] [-c "directive"]
[-k start|restart|graceful|graceful-stop|stop]
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X]
Options:
-D name : define a name for use in <IfDefine name> directives
-d directory : specify an alternate initial ServerRoot
-f file : specify an alternate ServerConfigFile
-C "directive" : process directive before reading config files
-c "directive" : process directive after reading config files
-e level : show startup errors of level (see LogLevel)
-E file : log startup errors to file
-v : show version number
-V : show compile settings
-h : list available command line options (this page)
-l : list compiled in modules
-L : list available configuration directives
-t -D DUMP_VHOSTS : show parsed vhost settings
-t -D DUMP_RUN_CFG : show parsed run settings
-S : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG
-t -D DUMP_MODULES : show all loaded modules
-M : a synonym for -t -D DUMP_MODULES
-t : run syntax check for config files
-T : start without DocumentRoot(s) check
-X : debug mode (only one worker, do not detach)

 

h.Bash関連

h-01【alias/unalias】-- エイリアスを登録/削除する

下記のコマンドでエイリアスを登録する。 

$ alias [オプション] [名前[=内容]] 

現在設定されているエイリアスを確認する。 

$ alias 

指定した名前でエイリアスが登録されているかどうかを確認する。 

$ alias 名前

下記のコマンドでエイリアスを削除する。 

$ unalias [オプション] 名前  

aliasコマンドの主なオプション

オプション 意味
-p 現在の登録内容を再利用可能な書式で出力する(出力を保存しておくとスクリプトとして実行できる)
 

unaliasコマンドの主なオプション

オプション 意味
-a 現在の登録内容を全て削除する
 

 

h-02【env】-- 環境変数の一覧を表示する

下記のコマンドで実行する。 

$ env [オプション] [環境変数名=値 ……] [コマンド]  

現在指定されている環境変数を一覧表示する。 

$ env  

環境変数を一時的に設定してコマンドを実行する。 

$ env 環境変数名=値 コマンド 

例えば、環境変数LANGに「C」を設定した状態でdateコマンドを実行する

$ env LANG=C date 

 オプション項目

短いオプション 長いオプション 意味
-i,- --ignore-environment 環境変数が設定されていない状態でコマンドを実行する
-u 変数名 --unset=変数名 指定した環境変数が設定されていない状態でコマンドを実行する
-0 --null 改行しない(出力行の末尾を改行文字ではなくNULL文字にする、一覧表示する際のみ指定可能)
 

 

h-03【set】-- シェルの設定を確認、変更する

下記のコマンドで実行する。 

$ set [オプション]  

シェル変数とシェル関数を一覧表示する。 

$ set  

設定したシェルオプションを一覧表示する。 

$ set -o

 

setの主なオプション

短いオプション 意味
-o シェルオプション シェルオプションを有効にする
-o 設定したシェルオプションを「on」と表示する
+o シェルオプション シェルオプションを無効にする(-oによる設定を打ち消す)
+o 設定したシェルオプションを現在と同様に設定するための全てのコマンド列を一覧表示する
--、- オプションの終わり(「--」および「-」以降は全てファイル名やsetコマンドのオプション以外の引数として扱う)

主なシェルオプションとオプション

シェルオプション オプション 意味
allexport -a シェル変数の定義と同時にexportし、環境変数としても使用可能にする
braceexpand -B ブレース展開を実行する(デフォルトで有効)
noglob -f 「*」などによるパス名展開を無効にする
nounset -u パラメーター展開中に、設定していない変数があったらエラーとする(特殊パラメーターである「@」と「*」は除く)
noclobber -C リダイレクトで既存のファイルを上書きしない
ignoreeof   [CTRL]+[D]で終了しない(「IGNOREEOF=10」相当)
physical -P cdコマンドなどでシンボリックリンクをたどらずに物理的なディレクトリ名を使用する
emacs   コマンド行の編集操作をEmacs形式にする(デフォルトで有効)
vi   コマンド行の編集操作をviコマンド形式にする
posix   bashの動作のうち、デフォルトの動作がPOSIXと異なるものもPOSIX準拠になるように変更する(POSIXモード)

主なシェルオプションとオプション(ヒストリとジョブ関連)

シェルオプション オプション 意味
history   コマンド履歴を有効にする(対話シェルではデフォルトで有効)
histexpand -H 「!番号」によるヒストリの参照を行う(デフォルトで有効)
monitor -m 監視モード。バックグラウンドジョブの結果を表示する(デフォルトで有効)
notify -b 終了したバックグラウンドジョブの結果をすぐに表示する(通常は次のコマンド実行時に表示する)
hashall -h コマンドのパスを全て記憶する(hashコマンド参照)

主なシェルオプションとオプション(エラー処理とデバッグ関連)

シェルオプション オプション 意味
errexit -e パイプやサブシェルで実行したコマンドが1つでもエラーになったら直ちにシェルを終了する
pipefail   パイプラインの返り値を、最後のエラー終了値(0以外で終了した際の値、全ての実行が成功した場合は0)にする
errtrace -E エラーをトレースする(シェル関数で、ERRトラップを継承する)
functrace -T デバッグをトレースする(シェル関数で、DEBUGトラップを継承する)
verbose -v シェルの入力行を表示する
xtrace -x トレース情報として、シェルが実行したコマンドとその引数を出力する。情報の先頭にはシェル変数PS4の値を使用

主なシェルオプションとオプション(その他)

シェルオプション オプション 意味
interactive-comments   「#」以降をコメントとして扱う(デフォルトで有効)
keyword -k コマンド名の前にある代入文だけでなく、引数として指定した全ての代入文も、そのコマンドに対する環境変数に追加する
noexec -n コマンドを読み込むだけで実行しない
onecmd -t コマンドを1つ読み込み、実行してから終了する
privileged -p 特権モード。シェル関数や変数を環境から継承せず、実効ユーザーも再設定しない

 

 

i.サーバー関連

i-01【reboot】-- サーバを再起動する

下記のコマンドで実行する。 

$ reboot [オプション]

 オプション項目

短いオプション 長いオプション 意味
-f --force 強制的に再起動または電源をオフにする
 

 

i-02【shutdown】-- サーバをシャットダウンする

下記のコマンドで実行する。 

$ shutdown [オプション] [時刻] 

18時30分にシステムをシャットダウンする。 

$ shutdown 18:30 

10秒後にシステムをシャットダウンする。 

$ shutdown +10 

「shutdown」で、1分後にシステムがシャットダウンする。 

$ shutdown  

シャットダウンをキャンセルする。 

$ shutdown -c 

下記のコマンドで実行する。 

$ shutdown [オプション] [時刻] 

 オプション項目

短いオプション 長いオプション 意味
-P,-h --poweroff システムを終了して電源を切る(デフォルト)
-r --reboot システムを終了して再起動する
-H --halt システムを終了させる
-k   システムを終了せず、ログイン中の端末にメッセージだけを送る
  --no-wall シャットダウン実行時のメッセージを送らない
-c   システム終了をキャンセルする(時刻に「+0」や「now」を指定して即時終了している場合は無効)
 

 

ousei.hatenablog.com

 

 

Linuxコマンドメモ(一)(随時更新)

目次

   自分用メモとして残します。

管理系のLinuxコマンド

a.パフォーマンス関連

a-01【top】-- 実行中のプロセスをリアルタイムで表示する

 topコマンド実行画面

 主な起動オプション

短いオプション 意味
-d 間隔 更新する間隔を「ss.tt秒」で指定する
-n 回数 表示を繰り返す回数を指定する
-b バッチモード。キー操作を受け付けず、「-n」で指定された回数または「CTRL+C」などで強制終了(kill)されるまで実行を続ける。topの結果をファイルに保存する際などに役立つ
-s セキュアモードで動作(起動中に「d」などを受け付けなくなる)
-U ユーザー, -u ユーザー 監視するユーザーを名前またはIDで指定
-p プロセスID 監視するプロセスIDを指定。「-p 番号 -p 番号」または「-p 番号, 番号」のように複数指定できる(空白は省略可能)
-c COMMAND欄(右端)を、プログラム名の表示とコマンドラインの表示のどちらにするか切り替える(起動後は「c」で切り替え)
-i 何も実行していないアイドルプロセスを表示するか、しないかを切り替える(起動後は「i」で切り替え)
-S 累積時間モード(起動後は「S」で切り替え)
-oアイテム 出力の並べ替えに使用する項目(デフォルトはCPU使用率)を指定。指定できる項目名は「top -O」で確認 ※
-w 桁数 出力の幅

 

a-02【htop】-- topの代わり高機能なプロセスビューワ

 CentOS 7の場合、下記のコマンドでインストールする。

$ sudo yum -y install epel-release
$ sudo yum -y install htop

 htopを起動する

htop

下記の画面が表示される。

htop起動画面

 

a-03【nice】-- 優先度を指定してコマンドを実行する

下記のコマンドで実行する。

$ nice -n 優先度 コマンド 

 主な起動オプション

短いオプション 長いオプション 意味
-n優先度 --adjustment=優先度 優先度(-20~19:本文参照)を指定する 
a-04【uptime】-- システム稼働時間を調べる

下記のコマンドで実行する。

$ uptime 
18:44:11 up 28 days, 1:26, 5 user, load average: 0.03, 0.07, 0.12

 

  • 現在時刻:18:44:11
  • 稼働時間:up 28 days, 1:26
  • 接続ユーザー数:5 users
  • load average:平均負荷(直近1分内:0.03、5分内:0.07、15分内:0.12)

 

 

b.ユーザー権限関連

b-01【chmod】-- パーミッション変更

 

下記のコマンドでパーミッションを変更する。

$ chmod 3桁数字(8進数) ファイル名 

 3桁数字は、左から、1.所有者、2.グループ、3.その他のユーザー

8進数の数値の意味するパーミッションは下記:

 

名前 英字 8進数 ファイル ディレクト
読取 r 4 ファイルの表示 ファイル一覧の表示
書込 2 ファイルの上書き、変更 新規ファイルの作成、削除
実行 バツ 1 ファイルの実行 そのディレクトリに移動

 

 

b-02【chown】-- ファイル、ディレクトリの所有者を変更する

 

下記のコマンドで実行する。

$ chown 所有者名 ファイル名またディレクトリ名 

 

 オプション

-c 所有権が変更された場合、その詳細を表示します。
-f エラーメッセージを表示しません。
-h 指定したファイルがシンボリックリンクの場合、シンボリックリンクのみ所有権を変更します。システムファイルやディレクトリの所有権を一括で変更する場合はこのオプションを使いましょう。
-R 指定したディレクトリとそのディレクトリ以下のファイルやディレクトリの所有権を再帰的に変更します。
-v 所有者変更の詳細を表示します。-cは、変更された場合のみ。

 

 

b-03【groupadd】-- グループを追加する。

下記のコマンドで実行する。

$ groupadd [オプション] グループ名 

 主な起動オプション

短いオプション 長いオプション 意味
-g グループID --gid グループID 作成するグループのグループIDを指定する(指定しなかった場合、他と重複しない値が自動で付く)
-o --non-unique グループIDが同じグループの作成を許す
-f --force グループが既に存在していた場合、終了する(エラーにはならない)。グループIDが既に用いられていた場合「-g」オプションをキャンセルする
-p パスワード --password パスワード cryptで暗号化されたログインパスワードを利用できるようにする(「-p '暗号化された文字列'」のように指定する)
-K キー=値 --key キー=値 /etc/login.defsに保存されている値を一時的に置き換える
-r --system システムアカウントを作成する。-rを指定すると、ユーザーIDを/etc/login.defのSYS_GID_MINとSYS_GID_MAXに従って作成する。

作成したグループを確認する。

$ cat /etc/group
b-04【groupmod】-- グループの設定を変更する。

下記のコマンドで実行する。

$ groupmod [オプション] グループ名 

 主な起動オプション

短いオプション 長いオプション 意味
-n グループ名 --new-name グループ名 指定したグループ名に名前を変更する
-g グループID --gid グループID 指定したグループIDに変更する
-o --non-unique グループIDの重複を許す(-gと併用)
-p パスワード --password パスワード cryptで暗号化されたログインパスワードを利用できるようにする(「-p '暗号化された文字列'」のように指定する)
-R ディレクト --root ディレクト 指定したディレクトリに変更を適用し、そのディレクトリにある構成ファイルを使用する(chroot指定)

 

b-05【groupdel】-- グループを削除する。

下記のコマンドで実行する。

$ groupdel [オプション] グループ名 

 主な起動オプション

短いオプション 長いオプション 意味
-R ディレクト --root ディレクト chrootするディレクト
-f --force 既存ユーザーのプライマリグループでも削除する                                

 

b-06【useradd】-- ユーザーを追加する。

下記のコマンドで実行する。

$ useradd [オプション] ユーザー名 

 主な起動オプション

短いオプション 長いオプション 意味
-m --create-home ユーザーのホームディレクトリが存在しない場合、作成する
-M --no-create-home ユーザーのホームディレクトリを作成しない
-b --base-dir BASE_DIR ホームディクトリのベースとなるディレクトリ(/homeなど)
-d ディレクト --home-dir ディレクト ユーザーのホームディレクトリ(通常はユーザー名と同じにする)
-k ディレクト --skel ディレクト ひな型ディレクトリ(デフォルトは/etc/skel)を指定する。kを指定してもしなくても、ひな型ディレクトリにあるファイルがホームディレクトリにコピーされる

主な起動オプション(ユーザーIDとグループ関係)

短いオプション 長いオプション 意味
-u ユーザーID --iud ユーザーID 作成するユーザーのユーザーIDを指定する(指定しなかった場合、他と重複しない値を自動で設定する)
-o --non-unique ユーザーIDが同じユーザーの作成を許す(固有のユーザーIDは設定できない)
-g グループ --gid グループ ユーザーが属するプライマリグループの名前またはグループIDを指定する
-G グループリスト --groups リスト ユーザーが属するセカンダリグループのリストを指定する(空白を含まず「,」区切りで指定)
-U --user-group ユーザーと同じ名前のグループを作成する
-N --no-user-group ユーザーと同じ名前のグループを作成しない

主な起動オプション(その他)

短いオプション 長いオプション 意味
-s シェル --shell シェル ユーザーのログインシェル(フルパスで指定)を指定する(指定しなかった場合、デフォルト設定を用いる)
-p パスワード --password パスワード cryptで暗号化されたログインパスワードを利用できるようにする(「-p '暗号化された文字列'」のように指定する)
-e 日付 --expiredate 日付 ユーザーのアカウントが期限切れとなる日付を指定する
-f 日数 --inactive 日数 ユーザーのパスワードが期限切れになってからアカウントが無効化されるまでの日数(デフォルト値は「-1」:無効化しない)
-c コメント --comment コメント /etc/passwdのコメント欄の内容を指定する(GECOSフィールド:ユーザーの所属やフルネームなどを書く)
-l --no-log-init ユーザーをlastlogとfaillogのデータベースに追加しない
-r --system

システムアカウントを作成する。-rを指定すると、ユーザーIDを/etc/login.defのSYS_GID_MAXに従って作成する。

ホームディレクトリは作成されない。ログインもできないように設定したい場合は「-s /sbin/nologin」を併用する。

-Z ユーザー --selinux-user ユーザー SELinuxのユーザーマッピングに指定したユーザーを指定する
-K キー=値 --key キー=値 /etc/login.defsに保存されている値を一時的に置き換える(詳しくは本文を参照
-D --defaults デフォルト設定を表示する、または変更する(「-b」「-e」「-f」「-g」「-s」と組み合わせる

 

b-07【usermod】-- ユーザーの設定を変更する。

下記のコマンドで実行する。

$ usermod [オプション] ユーザー名 

 主な起動オプション

短いオプション 長いオプション 意味
-L --lock ユーザーをロックする(ログインできなくなる)
-U --unlock ユーザーのロックを解除する
-e 日付 --expiredate 日付 アカウントが使用不能になる日付を指定する(「YYYY-MM-DD」形式で指定)
-f 日数 --inactive 日数 パスワードの使用期限が切れてから使えなくなるまでの日数を指定する
-l 新ログイン名 --login 新ログイン名 ログイン名を変更する(ホームディレクトリも併せて変更するには「-d」オプションで指定)
-d パス --home パス ユーザーのホームディレクトリを変更する(現ディレクトリの内容を移動したい場合は「-m」オプションを同時に指定)
-m --move-home (「-d」オプション指定時)現ホームディレクトリの内容を新たな場所に移動する
-R ディレクト --root ディレクト chroot」するディレクトリを指定する
-p パスワード --password パスワード 新たなパスワードを指定する(パスワードは暗号化されたものを指定)
-s シェル --shell シェル ユーザーのシェルを変更する(指定を空白にした場合はデフォルトのシェル)
-g グループ --gid グループ プライマリーグループを変更する
-G グループ --groups グループ セカンダリーグループを変更する(複数ある場合は「,」で区切って指定)。変更ではなく追加したい場合は「-a」オプションを同時に指定する
-a --append 「-G」オプションで指定したグループをセカンダリーグループに追加する
-u UID --uid UID ユーザーIDを変更する
-o --non-unique (「-U」オプション指定時)一意でないユーザー(UIDの重なるユーザー)を許可する
-c コメント --comment コメント 「/etc/passwd」のコメント欄(「GECOS」フィールド。ユーザーの所属やフルネームなどを記述する)を設定する

 

b-08【userdel】-- ユーザーを削除する。

下記のコマンドで実行する。

$ userdel [オプション] ユーザー名 

 主な起動オプション

短いオプション 意味
-r 対象ユーザーのホームディレクトリとメールスプールも同時に削除する
b-09【chgrp】-- ディレクトリやファイルの所有者グループを変更する。

下記のコマンドで実行する。

$ chgrp [オプション] 新しい所有グループ ファイル1 ファイル2・・・

 主な起動オプション

短いオプション 長いオプション 意味
-R --recursive ファイルとディレクトリを再帰的に変更する
  --preserve-root 「/」に対する再帰的な操作は行わない
  --no-preserve-root 「/」を特別扱いしない(デフォルト)
  --reference=参照ファイル 参照ファイルと同じパーミッションにする
-h --no-dereference シンボリックリンクそれ自身を変更する
  --dereference シンボリックリンクそれ自身ではなく、指している先を変更する
  --from=現在のユーザー:現在のグループ 現在のユーザーとグループに一致していた場合だけ変更する(chownコマンドのみ)
-v --verbose 処理した内容を出力する
-c --changes 変更が行われた場合のみ処理内容を出力する
-f --silent, --quiet ほとんどのエラーメッセージを出力しない

 

b-10【passwd】-- パスワードを設定する

下記のコマンドで実行する。

$ passwd [オプション] [ユーザー名]

自分自身のパスワードを変更する。

$ passwd 

 主な起動オプション

オプション 意味
-l ユーザー名 指定したユーザーをロックする
-u ユーザー名 指定したユーザーのロックを解除する
-d ユーザー名 パスワードを削除する
-S ユーザー名 パスワードの状態を表示する
-n 日数 ユーザー名 パスワード変更後、再度変更可能になるまでの日数を設定する
-x 日数 ユーザー名 パスワードが有効な日数を設定する
-w 日数 ユーザー名 パスワード失効前に警告を表示する日数を設定する
-i 日数 ユーザー名 パスワードが有効期限に達した後、パスワードを無効にするまでの猶予期間を設定する
(これ以上期限切れのままにしているとログインできなくなる)
--stdin 新しいパスワードを標準入力から読み込む

 

b-11【id】-- ユーザのIDを表示する。

 

下記のコマンドで実行する。

$ id [オプション] [ユーザー名]

主な起動オプション

短いオプション 長いオプション 意味
-u --user 実効ユーザーのみをIDで表示する
-g --group 実効グループのみをIDで表示する(ファイルの作成などはこのグループIDで行われる。通常はプライマリーグループ)
-G --groups ユーザーが所属する全てのグループをIDで表示する
-n --name ユーザーやグループの名前だけを表示する(-u、-g、-Gとともに使用)
-r --real 実効IDの代わりに実IDを表示する(-u、-g、-Gとともに使用)
-Z --context セキュリティコンテキストを表示する(idコマンドを実行しているユーザーのみを表示し、引数にユーザーは指定できない)
-z --zero 区切り文字としてNULLを使用(デフォルトは空白区切り)
-a   互換性オプション(他のバージョンとの互換性のために残されているオプションで、オプションなしで実行したときと同様に、全ての情報が表示される)
b-12【su】-- ユーザの変更を行う。

下記のコマンドで実行する。

$ su [オプション] [ユーザー名]

スーパーユーザー(root)に切り替える。

$ su 

 主な起動オプション

短いオプション 長いオプション 意味
-c コマンド --command=コマンド 対話シェルは起動せずにコマンドを実行する(シェルに「-c」オプションとともに指定したコマンド列を渡す)
-f --fast シェルに「-f」オプションを渡す(cshtcsh用。「-f」は「.cshrc」を読み込まないオプション)
-,-l --login シェルを「ログインシェル」にする(ログイン時のスタートアップファイルを読み、環境変数を再設定する)
-m,-p --preserve-environment 環境変数「HOME」「USER」「LOGNAME」「SHELL」を変更せず、「/etc/passwd」に設定されているシェルではなく、環境変数SHELLで指定されているシェルを実行する
-s シェル --shell=シェル 実行するシェルを指定する

 

b-13【whoami/groups】-- 現在のユーザ/所属グループの確認を行う。

 下記のコマンドで自分のユーザー名を表示する。

$ whoami 

 下記のコマンドで自分の所属グループを表示する。

$ groups 

主な起動オプション

 
短いオプション 長いオプション 意味
--help 使い方を表示して終了する
--version バージョン情報を表示して終了する

 

b-14【sudo】-- 指定したユーザーでコマンドを実行する。

 下記のコマンドで実行する。

$ sudo [オプション] [コマンド] 

 主な起動オプション(パスワード入力、認証、権限関係)

オプション 意味
-A パスワード入力用のコマンドを使用する(コマンドは「/etc/sudo.conf」または環境変数「SUDO_ASKPASS」で設定)
-n パスワードを要求するプロンプトを表示しない(パスワード入力が必要なコマンドの場合はエラーとなって実行できない)
-p 文字列 パスワード入力時のプロンプトを指定する(デフォルトは「:」記号)
-S パスワードを端末ではなく標準入力から読み込む(パスワードの末尾には改行が必要)
-k 保存されている認証情報を無効にする(次回のsudo実行時には必ずパスワード入力が必要)。コマンドと一緒に使用可能
-K 保存されている認証情報を完全に消去する
-V 保存された認証情報を更新する
-u ユーザー コマンドを実行するときのユーザーを「ユーザー名」または「ユーザーID(#記号と数字)」で指定する
-g グループ コマンドを実行するときのグループを「グループ名」または「グループID(#記号と数字)」で指定する
-P sudoを実行するユーザーが所属するグループのままコマンドを実行する

主な起動オプション(その他)

オプション 意味
-b 指定したコマンドをバックグラウンドで実行する
-e 指定したファイルを編集する(コマンドは「sudoedit」を使用する)
-E 現在の環境変数を保持してコマンドを実行する
-H 環境変数「HOME」をrootユーザーのホームディレクトリに変更してコマンドを実行する
-s 環境変数「SHELL」で指定されたシェル、またはrootユーザーのシェルを実行する。コマンドを指定しなかった場合は対話シェルとなる
-i rootユーザーのデフォルトのシェルをログインシェルとして実行する。コマンドを指定しなかった場合は対話シェルとなる
-l sudoを実行するユーザーに許可されているコマンドを一覧表示する。「sudo -l コマンド」のようにコマンドを指定した場合、コマンドが許可されていればコマンドの絶対パスを表示する
-ll 「-l」オプションと同様だが、長い形式で表示する
-U ユーザー 「-l」オプションと組み合わせて使用し、指定したユーザーの権限で実行できるコマンドを一覧表示する

 

b-15【last】-- ログインユーザの履歴を表示する。

下記のコマンドで実行する。

$ last [オプション] [ユーザー名] [端末番号]

 主な起動オプション

短いオプション 長いオプション 意味
-n 行数, -行数 --limit 行数 lastで表示する行数を指定する
-t 日時 --until 日時 指定した日時(YYYYMMDDhhmmss)より前のログイン情報を表示する
-x --system システムのシャットダウンとランレベル変更の記録も表示する
-R --nohostname hostname欄を表示しない
-a --hostlast ホスト名を最後の欄に表示する
-d --dns リモートログイン時、ログイン元のIPアドレスをホスト名に変換して表示する
-i --ip リモートログイン時、ログイン元のIPアドレスのまま表示する
-f ファイル名 --file ファイル名 「/var/log/wtmp」ファイルの代わりに使用するファイルを指定する
-o   古い書式のwtmpファイルを読み込む

 

b-16【who】-- ログイン中のユーザ一覧を表示する。

下記のコマンドで実行する。

$ who [オプション]  

 主な起動オプション

短いオプション 長いオプション 意味
-a --all 全ての情報を表示する。「-b -d --login -p -r -t -T -u」相当
-b --boot 現在ログインしているシステムが起動した時刻を表示する
-d --dead 終了したプロセスを表示する
-H --heading ヘッダ行を表示する
-l --login システムのログインプロセスを表示する
  --lookup 正式なホスト名をDNSから取得して表示する
-m   標準入力に関連付けられたホスト名とユーザーのみを表示する
-q --count ログイン中のユーザーのログイン名とユーザー数を表示する
-r --runlevel 現在のランレベルを表示する
-s --short 名前と端末、ログインした時刻のみを表示する(デフォルト)
-T,-w --mesg,--message,--writable ユーザーがメッセージを受け取れる状態かどうかを表示する
-u --users ログイン以降のアイドルタイム(IDLE列)を表示する(過去1分以内にアクティブな場合は「.」、24時間以上使用されていない場合は「old」と表示)

 

b-17【w】-- ログインユーザの実行中プロセスを表示する。

下記のコマンドで実行する。

$ w [オプション] [ユーザー名] 

 主な起動オプション

短いオプション 長いオプション 意味
-h --no-header ヘッダを表示しない
-u --no-current 現在のプロセス時間とCPU時間を計算する際に、ログイン名と現在のユーザー名の違いを無視する
-s --short 短く表示する(ログイン時刻、CPU使用時間を表示しない)
-f --from リモートホスト名を表示しない

 

c.監査関連

c-01【auditctl】-- 監査システム Audit の動作設定、およびルールを定義する

バージョンを調べる。

$ auditctl -v
auditctl version 2.8.5

 

オプション一覧を表示する。

$ auditctl -h 
usage: auditctl [options]
-a <l,a> Append rule to end of <l>ist with <a>ction
-A <l,a> Add rule at beginning of <l>ist with <a>ction
-b <backlog> Set max number of outstanding audit buffers
allowed Default=64
-c Continue through errors in rules
-C f=f Compare collected fields if available:
Field name, operator(=,!=), field name
-d <l,a> Delete rule from <l>ist with <a>ction
l=task,exit,user,exclude
a=never,always
-D Delete all rules and watches
-e [0..2] Set enabled flag
-f [0..2] Set failure flag
0=silent 1=printk 2=panic
-F f=v Build rule: field name, operator(=,!=,<,>,<=,
>=,&,&=) value
-h Help
-i Ignore errors when reading rules from file
-k <key> Set filter key on audit rule
-l List rules
-m text Send a user-space message
-p [r|w|x|a] Set permissions filter on watch
r=read, w=write, x=execute, a=attribute
-q <mount,subtree> make subtree part of mount point's dir watches
-r <rate> Set limit in messages/sec (0=none)
-R <file> read rules from file
-s Report status
-S syscall Build rule: syscall name or number
-t Trim directory watches
-v Version
-w <path> Insert watch at <path>
-W <path> Remove watch at <path>
--loginuid-immutable Make loginuids unchangeable once set
--reset-lost Reset the lost record counter

 

Linuxでは、auditdサービスが常に起動されています。

下記のコマンドでauditdサービスの実行状況を調べる。

$ systemctl status auditd.service 

 

監査ルールの設定方法

2つの方法で設定することができます。
・auditctlコマンドで設定

 ⇒ auditdサービスが再起動すると、ルールが消える
/etc/audit/audit.rulesにルールを設定

 ⇒ auditdサービスが再起動しても、ルールが消えない

 

監視ルールの表示。-l 

$ auditctl -l 
No rules

 

監視ルールを全て削除する。 -D

$ auditctl -D 
No rules

 

監視ルールの追加

  • その一:既存ルールの末尾に追加: -a 
$ auditctl -a exit,always -F arch=b64 -F path=/tmp/aa.txt -S open
$ auditctl -a exit,always -F arch=b64 -F path=/tmp/bb.txt -S open
$ auditctl -a exit,always -F arch=b64 -F path=/tmp/cc.txt -S open

 ⇒ 追加したルールを表示する。aa.txt -> bb.txt -> cc.txtの順であることがわかる。

$ auditctl -l 
-a always,exit -F arch=b64 -S open -F path=/tmp/aa.txt
-a always,exit -F arch=b64 -S open -F path=/tmp/bb.txt
-a always,exit -F arch=b64 -S open -F path=/tmp/cc.txt
  • その二:既存ルールの末尾に追加: -A
$ auditctl -A exit,always -F arch=b64 -F path=/tmp/aa.txt -S open
$ auditctl -A exit,always -F arch=b64 -F path=/tmp/bb.txt -S open
$ auditctl -A exit,always -F arch=b64 -F path=/tmp/cc.txt -S open

⇒ 追加したルールを表示する。cc.txt -> bb.txt -> aa.txtの順であることがわかる。

$ auditctl -l 
-a always,exit -F arch=b64 -S open -F path=/tmp/cc.txt
-a always,exit -F arch=b64 -S open -F path=/tmp/bb.txt
-a always,exit -F arch=b64 -S open -F path=/tmp/aa.txt

 

指定した監視ルールを削除する。 -d 

$ auditctl -d exit,always -F arch=b64 -F path=/tmp/aa.txt -S open
No rules

 ⇒ 監視ルールを表示する。aa.txt が削除されることがわかる。

$ auditctl -l 
-a always,exit -F arch=b64 -S open -F path=/tmp/bb.txt
-a always,exit -F arch=b64 -S open -F path=/tmp/cc.txt

 

【利用】

コマンド実行時にその情報をログに残すよう監査ルールの設定

$ auditctl -a exit,always -F arch=b64 -S execve

 

c-02【ausearch】-- ログファイルから特定の監査結果を検索する

 バージョンを調べる。

$ ausearch -v
ausearch version 2.8.5

 

オプション一覧を表示する。

$ ausearch -h 
usage: ausearch [options]
-a,--event <Audit event id> search based on audit event id
--arch <CPU> search based on the CPU architecture
-c,--comm <Comm name> search based on command line name
--checkpoint <checkpoint file> search from last complete event
--debug Write malformed events that are skipped to stderr
-e,--exit <Exit code or errno> search based on syscall exit code
-f,--file <File name> search based on file name
--format [raw|default|interpret|csv|text] results format options
-ga,--gid-all <all Group id> search based on All group ids
-ge,--gid-effective <effective Group id> search based on Effective
group id
-gi,--gid <Group Id> search based on group id
-h,--help help
-hn,--host <Host Name> search based on remote host name
-i,--interpret Interpret results to be human readable
-if,--input <Input File name> use this file instead of current logs
--input-logs Use the logs even if stdin is a pipe
--just-one Emit just one event
-k,--key <key string> search based on key field
-l, --line-buffered Flush output on every line
-m,--message <Message type> search based on message type
-n,--node <Node name> search based on machine's name
-o,--object <SE Linux Object context> search based on context of object
-p,--pid <Process id> search based on process id
-pp,--ppid <Parent Process id> search based on parent process id
-r,--raw output is completely unformatted
-sc,--syscall <SysCall name> search based on syscall name or number
-se,--context <SE Linux context> search based on either subject or
object
--session <login session id> search based on login session id
-su,--subject <SE Linux context> search based on context of the Subject
-sv,--success <Success Value> search based on syscall or event
success value
-te,--end [end date] [end time] ending date & time for search
-ts,--start [start date] [start time] starting data & time for search
-tm,--terminal <TerMinal> search based on terminal
-ua,--uid-all <all User id> search based on All user id's
-ue,--uid-effective <effective User id> search based on Effective
user id
-ui,--uid <User Id> search based on user id
-ul,--loginuid <login id> search based on the User's Login id
-uu,--uuid <guest UUID> search for events related to the virtual
machine with the given UUID.
-v,--version version
-vm,--vm-name <guest name> search for events related to the virtual
machine with the name.
-w,--word string matches are whole word
-x,--executable <executable name> search based on executable name

 

監視システム audit ログは、以下のファイルに格納されています。

$ ls -l /var/log/audit/*
-rw------- 1 root root 5097758 Feb 12 10:11 /var/log/audit/audit.log

⇒現在時刻に変換する -i

$ auditctl ausearch -i -if /var/log/audit/audit.log
type=DAEMON_START msg=audit(●2018年05月14日 15:50:12.485:9877) : op=start ver=2.7.6 format=raw kernel=3.10.0-693.el7.x86_64 auid=unset pid=556 uid=root ses=unset subj=system_u:system_r:auditd_t:s0 res=success
-以下、略-

 

出力範囲を絞り込む方法(-ts:開始,-te:終了) 

9時48分から9時50分までのログを表示する。

$ ausearch -i -if /var/log/audit/audit.log -ts 09:48:00 -te 09:50:00

 

月を絞り込む方法。this-month 

$ ausearch -i -ts this-month

 

今週でを絞り込む方法。this-week 

$ ausearch -i -ts this-week

 

昨日から今日までで絞り込む方法。yesterday、today 

$ ausearch -i -ts yesterday -te today

 

今日のログに絞り込む方法。today 

$ ausearch -i -ts today

 

直近のログに絞り込む方法。recent 

$ ausearch -i -ts recent

 

 

c-03【aureport】-- ログファイルから監査結果のレポートを作成する

 

c-04【history】-- コマンド入力の履歴を表示、再利用する

下記のコマンドで実行する。 

$ history [オプション] [ファイル]

 オプション項目

短いオプション 意味
整数値 履歴の末尾から指定した行数分を表示する
-c 履歴一覧から全ての項目を削除する
-d 番号 指定した番号の履歴項目を削除する
-a 履歴ファイルに現在のセッションの履歴を追加する
-n 履歴ファイルからまだ読み込まれていない行を全て読み込む
-r ファイル 履歴ファイルを読み込み、内容を履歴一覧に追加する
-w ファイル 現在の履歴を履歴ファイルに上書きする

 ※オプション -a、-n、-r、-wは、履歴ファイルを指定しなかった場合、
 ホームディレクトリの「.bash_history」を用いる。
 環境変数HISTFILEが別のファイルを指定していた場合、そのファイルを用いる。 

 

$ ls -l .bash_history
-rw-------. 1 root root 30049 Feb 19 10:44 .bash_history
$ echo $HISTFILE
/root/.bash_history

 historyの表示内容は番号とコマンドラインが対になっています。
 この番号はコマンドの再利用に役立ちます。コマンドライン上で「!番号」と入力することで、
 指定したコマンドを実行します。 

$ history 5
1007 history 5
1008 echo $HISTFILESIZE
1009 ll .bash_history
1010 echo $HISTFILE
1011 history 5
$ !1010
echo $HISTFILE
/root/.bash_history

環境変数HISTFILESIZE、またはHISTSIZEを設定することで変更可能。
 環境変数の値はexportコマンドで設定できる。
 環境変数の内容を確認するにはechoコマンドを使う。
 「echo $HISTFILESIZE」「echo $HISTSIZE」などと実行する。

 

 

d.ファイル/ディレクトリ関連

d-01【pwd】-- 現ディレクトリを表示する

下記のコマンドで実行する。 

$ pwd [オプション] [ファイル]

 オプション項目

 
短いオプション 意味
-P 物理的なディレクトリ名を表示する
-L 論理的なディレクトリ名を表示する(デフォルト)
 
  
d-02【cd】-- ディレクトリを移動する

 下記のコマンドで実行する。 

$ cd [オプション] [ディレクトリ]

 オプション項目

短いオプション 意味
-P シンボリックリンクを指定した場合、リンクが指す「物理的な」ディレクトリ名を使用する
-e -Pオプション使用時、カレントディレクトリの変更に成功した後で物理的な名前を判定できない場合、0以外(失敗)のステータスを返す
-L 論理的なディレクトリ名を使用する(デフォルト)

 

d-03【cat】-- ファイルの内容を表示する

 下記のコマンドで実行する。 

$ cat [オプション] ファイル1 ファイル2・・・

 オプション項目

短いオプション 長いオプション 意味
-n --number 行番号を付け加える
-b --number-nonblank 行番号を付け加える。ただし空白行には付けない
-s --squeeze-blank 連続した空行を1行にする
-v --show-nonprinting TAB、改行、改ページ以外の非表示文字を表示する
-t 非表示文字を表示、TABを"^I"、用紙送りを"^L"とする
-E --show-ends 行の最後に"$"を表示する
-A --show-all 全ての非表示文字を表示する(-vETと同じ)
-e TABを除く全ての非表示文字を表示する(-vEと同じ)

  

d-04【less】-- (容量の大きい)ファイルの内容を表示する

 

下記のコマンドで実行する。 

$ less [オプション] ファイル名

 オプション項目(通常)

短いオプション 長いオプション 意味
+行数,-行数   指定した行から表示する
+/文字列   指定文字列を検索し、見つけた行から表示する(正規表現によるパターン指定が可能)
-p文字列 --pattern=文字列 指定文字列を検索し、見つけた行から表示する(正規表現によるパターン指定が可能)
-oファイル --log-file=ファイル パイプ(|)などで標準入力から入力した内容を表示する際、指定したファイルにコピーを保存する。既存ファイルを指定した場合は、上書きするか、追加するかを確認するメッセージが表示される
-Oファイル --LOG-FILE=ファイル 「-o」と同じだが、既存ファイルを指定した場合は、確認せずに上書きする
-kファイル名 --lesskey-file=ファイル名 lesskeyファイル(キー定義ファイル、「lesskey」コマンドで生成)を指定する
-L --no-lessopen 環境変数LESSOPEN(lessコマンド用のオプションを定義した環境変数)を無視する

 オプション項目(スクロール、表示方法関係)

短いオプション 長いオプション 意味
-s --squeeze-blank-lines 連続した空行を1行にする
-S --chop-long-lines 画面幅より長い行を折り返さない
-# --shift 水平方向にスクロールする際のデフォルトの移動桁数(「0」にするとデフォルト値が画面幅の半分になる)
-数、-z数 --window=数 スクロールするウィンドウの大きさを指定する(1画面より小さくする際は負の数で行数を指定。例えば、ウィンドウが24行で「-z-4」とした場合は、20行でスクロールする)
-q --quiet、--silent ファイル末尾まで表示したときのビープ音を鳴らさない(入力コマンドエラー時は鳴らす)
-Q --QUIET、--SILENT 「-q」のときも含め、ビープ音を一切鳴らさない
-e --quit-at-eof ファイルの末尾に2回達したら表示を終了する(実行例4を参照)
-E --QUIT-AT-EOF ファイルの末尾に到達したら表示を終了する
-F --quit-if-one-screen 1画面で表示できる場合はすぐに終了する
-K --quit-on-intr [Ctrl]+[C]キーで終了する
-n --line-numbers 行番号を表示しない
-N --LINE-NUMBERS 行番号を表示する
-J --status-column 画面の左にステータス行を表示する(例えば、検索時に該当する行に「*」記号が表示される)
-m --long-prompt moreコマンド同様、プロンプトに現在の表示位置をパーセントで表示する
-M --LONG-PROMPT 「-m」より詳細なプロンプトを表示する
-f --force 通常のファイル以外も強制的に表示する
-r --raw-control-chars 制御文字をそのまま表示する(デフォルトでは「^A」のようにキャレット記号を使って表示する)
-R --RAW-CONTROL-CHARS 「-r」と同様だが、可能な限り画面表示を正しく維持する
-XXX --mark-wrong-char 表示できない誤った文字を表示する際にマーク文字(〓)を使用する(デフォルトではバイナリとして表示)
-u --underline-special バックスペースとキャリッジリターンを印刷可能文字として扱う
-U --UNDERLINE-SPECIAL バックスペース、タブ、キャリッジリターンを制御文字として扱う(「-u」「-U」ともに指定していない場合は、これらの文字を使って重ね打ちによる太字や下線を表示する)
-x数,… --tabs=数,… タブストップの位置を設定する。「-x4」の場合4の倍数、「-x9,17」は「9,17,25,33…」となる(デフォルトは8)
-~ --tilde ファイル末尾以降のチルダ記号(~)を表示しない

オプション項目(検索関係)

短いオプション 長いオプション 意味
-i --ignore-case 検索時に大小文字を区別しない(ただし、検索文字列に大文字を使用した場合は大小文字を区別する)
-I --IGNORE-CASE 検索時、常に大小文字を区別しない
-a --search-skip-screen 画面に表示されている次の行以降を検索する(デフォルトは画面内の2行目以降、または最後の検索対象が見つかった行以降を検索する)
-g --hilite-search 検索時、最初に見つけた分だけをハイライト表示する(デフォルトでは見つけた箇所を全てハイライト表示)
-G --HILITE-SEARCH 検索時のハイライト表示をしない
-w --hilite-unread 画面単位でスクロールした際、新しく表示された行の先頭部分をハイライト表示する
-W --HILITE-UNREAD 新しく表示された行の先頭部分を常にハイライト表示する
-tタグ --tag=タグ タグを定義する(タグはソースコードで定義箇所にジャンプしたりする際に使用する)
-Tタグファイル --tag-file=タグファイル タグのリストが書かれたファイルを指定する(タグファイルは「ctags」コマンドで生成)

主なキー操作

キー操作 内容
※「^v」は[Ctrl]キーを押しながら[v]、[esc-v]は[ESC]キーを押してから[v]
h/H ヘルプを表示(less画面と同様、[Enter]キーで1行、スペースキーで1画面先に進み[q]で終了する)
q/:q/Q/:Q/ZZ 終了する(「:q」は[:]キーを押してから[q]キー)
e/^E/j/^N/return 1行進む(コマンドに続いて数字を入力すると指定行数分進む)
y/^Y/k/^K/^P 1行戻る(コマンドに続いて数字を入力すると指定行数分進む)
f/^F/^V/space/esc-space 1画面進む([esc-space]の場合データの末尾で止まらない)
F 1画面進み、末尾まで表示しても終了せずにファイルを監視する(「tail -f」同様、データが追加され続けるログファイルなどに使用する)
b/^B/esc-v 1画面戻る
d/^D 半画面分進む
u/^U 半画面分戻る
esc-)/右矢印 半画面分右を表示する
esc-(/左矢印 半画面分左を表示する
g/</esc-< 先頭行に移動する(コマンドに続いて数字を指定すると指定した行へ移動する)
G/>/esc-> 最終行に移動する(コマンドに続いて数字を指定すると指定した行へ移動する)
v 表示中のファイルを「vi」コマンドで編集する(使用するエディタは、環境変数VISUALまたはEDITORで変更可能)
!コマンド シェルでコマンドを実行する(シェルは環境変数SHELLで変更可能)

主なキー操作(検索関係)

キー操作 内容
/ 検索する(「/」続いて検索パターンを入力する)
? 後ろ方向に検索する(「?」に続いて検索パターンを入力する)
n 次を検索する(「n」に続いて数字を入力すると指定回数分先に進む)
N 逆順に次を検索する(「N」に続いて数字を入力すると指定回数分先に進む)
esc-u 検索結果の反転/反転解除を切り替える
& 検索パターンにあっている行だけを表示する(「&」に続いて検索パターンを入力する)
 

 

d-05【more】-- ファイルの内容を1画面ずつ表示する

下記のコマンドで実行する。 

$ more [オプション] ファイル

他のコマンドの実行結果を1画面ずつ表示する。 

$ コマンド | more [オプション] 

 オプション項目 

オプション 意味
+数値 数値で指定した行から表示する
+/文字列 指定した文字列を検索して、見つけた行の2行上から表示する
-s 連続した空行を1行にする
-l 改ページを無視する
-u 下線の処理を行わない
-数値 画面の行数を指定する
-f 画面での行数ではなく、データの行数を表示する
-d 無効なキーが入力された場合には、ビープ音の代わりに簡単なヘルプを表示する

 

d-06【cut】-- ファイルから特定の文字を抜き出す

 下記のコマンドで実行する。 

$ cut [オプション] ファイル

「file.txt」を読み込んで各行の先頭10文字だけ出力する。(バイト単位)

$ cat -b 1-10 file.txt

 「file.txt」を読み込んで各行の先頭10文字だけ出力する。(文字数単位)

$ cat -c 1-10 file.txt

 

オプション項目(いずれか1つを必ず指定)

短いオプション 長いオプション 意味
-b 出力リスト --bytes=出力リスト 切り出す位置のリストをバイト数で指定する
-c 出力リスト --characters=出力リスト 切り出す位置のリストを文字数で指定する
-f 出力リスト --fields=出力リスト 切り出す位置のリストをタブ区切りのフィールドで指定する(区切り文字は「-d」オプションで変更可能)

リストの指定方法

指定 意味
N N番目のバイト、文字またはフィールド(行頭を1とする)
N-M N番目からM番目まで
N- N番目から行末まで
-M 頭からM番目まで
 

オプション項目(その他) 

短いオプション 長いオプション 意味
-d 文字 --delimiter=文字 フィールドの区切り文字として、タブの代わりに使用する文字を指定する(1文字のみ)
  --output-delimiter=文字列 出力の区切り文字として使用する文字列を指定する(1文字以上が使用可能。デフォルトでは入力の区切り文字を使用)
-s --only-delimited 区切り文字を含まない行を出力しない
  --complement 出力指定した箇所以外を出力する

 

d-07【file】-- ファイルの種類を表示する/文字コードを確認する

 下記のコマンドで実行する。 

$ file [オプション] ファイル1 ファイル2 ・・・

 オプション項目 

短いオプション 長いオプション 意味
-f --files-from リスト 検査するファイルの名前をリストファイルから読み込む(実行例2を参照)
-L --dereference シンボリックリンクの参照先を調べる(実行例3を参照)
-z --uncompress 圧縮ファイルの中も検査する(実行例4を参照)
-b --brief 出力行の最初にファイル名を表示しない(簡易モード)
-N --no-pad 出力を整列するためのファイル名への空白の追加を行わない

 

d-08【wc】-- テキストファイルの文字数や行数を表示する

 下記のコマンドで実行する。 

$ wc [オプション] [ファイル・・・]

「find」コマンドは見つけたファイルを「1件1行」で出力するので、行数を数えることでファイルの個数を知ることができます。 

$ find . -name "*.txt" | wc -l

 オプション項目 

短いオプション 長いオプション 意味
-c --bytes バイト数を表示する
-m --chars 文字数を表示する(マルチバイト文字に対応)
-l --lines 改行の数を表示する
-w --words 単語数を表示する
-L --max-line-length 最も長い行の長さを表示する
  --files0-from=リスト NULL文字で区切られたファイル名のリストを指定する(「--files0-from=- 」とした場合は、ファイル名を標準入力から読み込む)
 

 

 

d-09【iconv】-- ファイルの文字コードを変換する

下記のコマンドで実行する。 

$  iconv [オプション] [ファイル1 ファイル2……]

「more」コマンドで表示するのであれば「iconv -f sjis ファイル名 | more」とします。デフォルトの出力はUTF-8なので指定は不要ですが、明示したい場合は「-t utf8」のように指定する。 

$  iconv -f sjis -t utf8 sampletext.txt | more

 オプション項目 

短いオプション 長いオプション 意味
-f コード --from-code=コード 入力のエンコーディング文字コード
-t コード --to-code=コード 出力のエンコーディング文字コード
-c   変換できなかった文字を出力しない
-s --silent 対応していないなどで変換できなかった場合にエラーメッセージを表示しない
  --verbose 処理中のメッセージ(ファイル名など)を表示する
-o --output=ファイル 保存先のファイル
-l --list 対応しているコードを表示する

 

d-10【mv】-- ファイルを移動する(ファイル名を変更する)

 下記のコマンドで実行する。 

$ mv [オプション] 移動元 移動先

 また、下記のコマンドで実行する。 

$ mv [オプション] ファイル1 ファイル2…… 移動先ディレクトリ

 オプション項目(「-f」「-i」「-n」を同時に使った場合は、最後に指定したものが有効になります)

短いオプション 長いオプション 意味
-f --force 移動先に同名ファイルがあっても確認せずに上書きする
-i --interactive 上書き前に確認する
-n --no-clobber 既存のファイルを上書きしない
-u --update 移動先にある同名ファイルのタイムスタンプが同じ、または新しい場合は移動しない
-t ディレクトリ名 --target-directory=ディレクトリ名 「-t」で指定したディレクトリに移動する
-T --no-target-directory 移動先(最後の引数)がディレクトリでも特別扱いしない(「cp」コマンド[応用編その1]参照
  --strip-trailing-slashes 移動元ファイルの最後にあるスラッシュ(/)を取り除く
-b --backup=方法 上書きされるファイルのバックアップを作る(「ln」コマンド参照
[方法]:「numbered」または「t」の時は番号の添え字、「simple」または「never」の時は、ファイル名の末尾に「~」または「-S」オプションか環境変数で指定した文字を付けるシンプルなバックアップ(「-b」と同じ)、「existing」または「nil」の時は既にあるファイルに従う(ない場合はで「simple」と同じ)
-S --suffix=接尾辞 バックアップファイルを作る際の、ファイル名末尾に付ける文字(無指定時は、「~」1文字、または環境変数「SIMPLE_BACKUP_SUFFIX」に従う)
-v --verbose 経過を表示する

 

 

d-11【head】-- ファイルの先頭から10行表示する

 

下記のコマンドで実行する。 

$ head [オプション] ファイル名

別のコマンドの実行結果の先頭部分を表示する。 

$ コマンド | head [オプション]

 オプション項目 

短いオプション 長いオプション 意味
-c 数字 --bytes 数字 先頭から指定したバイト数のみ表示する。「-c 5 b」のように単位を付加することも可能(b=512, KB=1000, K=1024, MB=1000*1000, M=1024*1024…)
-n 数字 --lines 数字 先頭から指定した行数のみ表示する
-q --quiet, --silent ファイルごとのヘッダ表示を行わない(複数ファイル指定時に使う)
-v --verbose 常にファイルごとのヘッダ出力を行う

 

d-12【tail】-- ファイルの末尾から10行表示する 

下記のコマンドで実行する。 

$ tail [オプション] ファイル名

ログファイルを監視する。 

$ tail -f /var/log/messages

別のコマンドの実行結果の末尾部分を表示する。 

$ コマンド | tail [オプション]

 オプション項目 

短いオプション 長いオプション 意味
-c 数字 --bytes 数字 末尾の指定したバイト数のみ表示する。「-c 5 b」のように単位を付加することも可能(b=512, KB=1000, K=1024, MB=1000*1000, M=1024*1024…)
-n 数字 --lines 数字 末尾の指定した行数のみ表示する
-q --quiet, --silent ファイルごとのヘッダ表示を行わない(複数ファイル指定時に使う)
-v --verbose 常にファイルごとのヘッダ出力を行う
-f --follow ファイルを監視して内容が追加されるたびに末尾に表示する(ログ監視などに使用する。[Ctrl]+[C]キーで終了)

 

d-13【grep】-- ファイルの中の文字列を検索する

下記のコマンドで実行する。 

$ grep [オプション] 検索パターン ファイル

コマンドの実行結果から必要な箇所だけを抽出する。 

$ コマンド | grep [オプション] 検索パターン

 オプション項目(検索パターン関連)

短いオプション 長いオプション 意味
-e 検索パターン --regexp=パターン 検索パターンを指定する
-G --basic-regexp 検索に基本正規表現を使う
-E --extended-regexp 検索に拡張正規表現を使う
-P --perl-regexp 検索にPerl正規表現を使う
-f ファイル --file=ファイル ファイルに書かれているパターンを検索する
-i --ignore-case 大文字と小文字を区別しない
-w --word-regexp 単語全体でパターンと一致するものを検索する(「単語単位で検索する」を参照)
-x --line-regexp 行全体がパターンと一致するものを検索する

 オプション項目(表示関連)

短いオプション 長いオプション 意味
-v --invert-match パターンに一致しない行を表示する
-s --no-messages エラーメッセージを表示しない
-q --quiet
--silent
結果を表示しない(主にシェルスクリプトなどで判定用に使う)
-L --files-without-match 一致するものが含まれていないファイルのファイル名のみ表示する
-l --files-with-matches 一致するものが含まれているファイルのファイル名のみ表示する
-c --count 一致するものが含まれている回数のみ表示
-m 回数 --max-count=回数 パターンが指定した回数に達したら処理を終了する
-o --only-matching 一致した箇所だけを表示する(通常は行単位で表示)
-n --line-number 行番号を併せて表示する(「行番号付きで表示する」を参照)
-b --byte-offset パターンが何文字目にあるかを併せて表示する
-H --with-filename ファイル名を併せて表示する
-h --no-filename ファイル名を表示しない(複数ファイル指定時)
  --color=WHEN 見つかったパターンを目立たせる(WHEN部分にはalways、never、autoを指定)
-B 行数 --before-context=行数 一致した行の前の行も表示する(「前後の行も表示する」を参照)
-A 行数 --after-context=行数 一致した行の後の行も表示する(「前後の行も表示する」を参照)
-C 行数,-行数 --context=行数 一致した行の前後の行も表示する

 オプション項目(検索結果関連)

短いオプション 長いオプション 意味
-d ACTION --directories=ACTION 検索対象にディレクトリを指定した場合の動作(ACTION部分にはread、recurse、skipを指定)
-r --recursive ディレクトリを指定した場合はサブディレクトリ内のファイルも含めて検索する(--directories=recurse相当)
-R --dereference-recursive サブディレクトリも含めて検索、さらにシンボリックリンクの先も対象とする
  --include=パターン パターンにマッチするファイルだけを対象とする
  --exclude=パターン パターンにマッチするファイルは検索対象から除外する
  --exclude-from=ファイル 対象から除外するファイル名のパターンをファイルから読み込む
  --exclude-dir=パターン パターンにマッチするディレクトリは検索対象から除外する

 

 

d-14【touch】-- 空のファイルを作成する

下記のコマンドで実行する。 

$ touch [オプション] ファイル1 ファイル2……

ファイルのタイムスタンプを現在の時刻に変更する。 

$ touch ファイル1 ファイル2……

指定したファイルが存在しなかった場合は、空のファイルが作成される。 

$ touch ファイル

 オプション項目 

短いオプション 長いオプション 意味
-t スタンプ   「[[CC]YY]MMDDhhmm[.ss]」形式で指定した日時に変更する(実行例2を参照)
-d --date=日付文字列 文字列で指定した日時に変更する(実行例2を参照)
-r --reference=ファイル名 指定したファイルのタイムスタンプと同じ日時にする
-a   最終アクセス日時のみ変更する(指定しない場合は、最終更新日時と最終アクセス日時が変更される)
-m   最終更新日時のみ変更する(指定しない場合は、最終更新日時と最終アクセス日時が変更される)
  --time=指定 指定した種類の時刻を変更する。指定が「access」「atime」「use」ならばアクセス日時(「-a」相当)、「modify」「mtime」の場合は更新日時のみ変更する(「-m」相当)
-c --no-create ファイルを作成しない
-h --no-dereference シンボリックリンクの場合、リンク先ではなくシンボリックそのもののタイムスタンプを変更する(ファイルシステムが対応している場合のみ)

 

d-15【diff】-- ファイルの差分を確認する

下記のコマンドで実行する。 

$ diff [オプション] ファイル1 ファイル2

 オプション項目(出力関連)

短いオプション 長いオプション 意味
-c --context 違いのある箇所をファイルごとに出力し、!記号で変更箇所を示す(context形式、第103回参照
-C 行数 --context=行数 context形式で出力する行数を指定(デフォルトは3行)
-u --unified 違いのある箇所を1つにまとめて、-記号と+記号で変更箇所を示す(unified形式、第103回参照
-U 行数 --unified=行数 unified形式で出力する行数を指定(デフォルトは前後3行)
-行数   異なっている部分の前後の行数を指定(-cまたは-u指定時)
-L ラベル --label=ラベル context形式とunified形式のヘッダに、ファイル名の代わりに出力するラベル(短縮形式「-L」は非推奨、第103回参照
-p --show-c-function 変更がC言語のどの関数で行われたのかを表示する。「-F'^[_a-zA-Z$]'」相当
-F 正規表現 --show-function-line=正規表現 context形式とunified形式で、各差分のブロックに対し、その前方がパターンにマッチした最後の行の一部を表示
-T --initial-tab normal形式やcontext形式で、テキストの前にスペースでなくタブを出力する(行中でのタブによる桁ぞろえが見やすくなる)
-t --expand-tabs タブによる位置合わせを保存するため、出力のタブをスペースに展開する
  --inhibit-hunk-merge 隣接する差分ブロックをマージしない
-D 名前 --ifdef=名前 if-then-else形式で出力する(“名前”はプリプロセッサの条件マクロで使用する名前)
  --changed-group-format=フォーマット if-then-else形式で、両方のファイルで異なる行を出力する際のフォーマット
  --line-format=フォーマット if-then-else形式で、全ての入力行を出力する際のフォーマット
  --new-group-format=フォーマット if-then-else形式で、2番目のファイルだけにある行グループを出力する際のフォーマット
  --new-line-format=フォーマット if-then-else形式で、2番目のファイルだけにある行の出力に使用するフォーマット
  --old-group-format=フォーマット if-then-else形式で、1番目のファイルだけにある行グループを出力する際のフォーマット
  --old-line-format=フォーマット if-then-else形式で、1番目のファイルだけにある行の出力に使用するフォーマット
  --unchanged-group-format=フォーマット if-then-else形式で、両方のファイルに共通な行グループを出力する際のフォーマット
  --unchanged-line-format=フォーマット if-then-else形式で、両方のファイルに共通な行の出力に使用するフォーマット
-y --side-by-side 2列で出力する(side-by-side)
-W 文字数 --width=文字数 side-by-side形式で出力する幅
  --left-column side-by-side形式で、共通な行は左側の列にのみ表示する
  --suppress-common-lines side-by-side形式で共通な行を表示しない
-e --ed edコマンドのスクリプト形式で出力する
-n --rcs RCSバージョン管理システム)形式の差分を出力する
-l --paginate prコマンドによるページ付けを行う
  --strip-trailing-cr 行末のCRを取り除く
-q --brief ファイルが違うかどうかだけを出力する
-s --report-identical-files 2つのファイルが同じだったときも出力する

 オプション項目(比較方法関連)

短いオプション 長いオプション 意味
-i --ignore-case 大文字と小文字の違いを無視する
-B --ignore-blank-lines 空行の有無を無視する
-b --ignore-space-change スペースの数だけが異なる場合は違いを無視する
-E --ignore-tab-expansion タブ展開によるスペースの変更を無視する
-w --ignore-all-space 空白を無視して比較する
-I 正規表現 --ignore-matching-lines=正規表現 パターンにマッチするような行を挿入・削除するだけの変更を無視する
-H --speed-large-files 小さな変更が大量にあるような大きなファイルを高速に扱うためにヒューリスティックな手法を用いる(短縮形式「-H」は非推奨)
-d --minimal より小さな差分を生成する(動作が遅くなる)
  --horizon-lines=行数 差分の前後にある共通部分を保持する行数
-a --text ファイルを強制的にテキストと見なして1行ずつ比較する

 オプション項目(ディレクトリ比較関連) 

短いオプション 長いオプション 意味
-r --recursive ディレクトリを比較するとき、サブディレクトリも再帰的に比較する
-S ファイル名 --starting-file=ファイル名 ディレクトリを比較する際の開始ファイル(中断した比較を続行する際に利用)
  --ignore-file-name-case ファイルを比較する際にファイル名の大文字小文字を無視する
  --no-ignore-file-name-case ファイルを比較する際に、ファイル名の大文字小文字を考慮する
-N --new-file ディレクトリを比較する際、片方のディレクトリにのみファイルが存在していた場合、“新規ファイルとの比較”として動作する
-P --unidirectional-new-file 2番目のディレクトリにのみファイルが存在していた場合のみ、新規ファイルとの比較として動作する(短縮形式「-P」は非推奨)
-x パターン --exclude=パターン ディレクトリを比較する際に、除外するファイルを指定する
-X リスト --exclude-from=リスト ディレクトリを比較する際に無視する名前のパターンが書かれたファイルを読み込む
 

 

d-16【mkdir】-- ディレクトリを作成する 

下記のコマンドで実行する。 

$ mkdir [オプション] ディレクトリ名

「dir1/dir2/dir3」というディレクトリを作成する。それぞれのディレクトリが既にある場合は何もせず、警告も表示されない。 

$ mkdir -p dir1/dir2/dir3

 オプション項目 

短いオプション 長いオプション 意味
-m --mode=モード 作成するディレクトリのパーミッションを設定する
-p --parents 必要に応じて親ディレクトリも作成する
-v --verbose 経過を表示する

 

d-17【cp】-- ファイル/ディレクトリをコピーする

下記のコマンドで実行する。 

$ cp [オプション] コピー元 コピー先

コピー先にディレクトリを指定した場合は、指定したディレクトリにコピー元と同じ名前のファイルが作成される。 

$ cp [オプション] ファイル1 ファイル2…… コピー先ディレクトリ

 オプション項目(一般)

短いオプション 長いオプション 意味
-i --interactive 上書きする前に確認する(実行例1を参照)
-v --verbose 実行内容を表示する(実行例3を参照)
-n --no-clobber 存在するファイルを上書きしない
-f --force 強制的に上書きする
-b --backup=方法 上書きされるファイルのバックアップを作る(「ln」コマンド参照
[方法]:「numbered」または「t」の場合は番号の添え字、「simple」または「never」の場合はファイル名の末尾に「~」または「-S」オプションか環境変数で指定した文字を付けるシンプルなバックアップ(「-b」と同じ)、「existing」または「nil」の場合は既にあるファイルに従う(ない場合はで「simple」と同じ)
-S 接尾辞 --suffix=接尾辞 バックアップファイルを作る際のファイル名末尾に付ける文字(無指定時は「~」1文字、または環境変数「SIMPLE_BACKUP_SUFFIX」に従う)

 オプション項目(リンク関連)

短いオプション 長いオプション 意味
-d   シンボリックリンク自体をコピーする(--no-dereference --preserve=linksと同様)
-s --symbolic-link コピーの代わりにシンボリックリンクを作成する
-l --link コピーの代わりにファイルのハードリンクを作成する
-L --dereference コピー元のシンボリックリンクを常にたどる
-P --no-dereference コピー元にあるシンボリックリンクをたどらない

 オプション項目(ディレクトリ関連)

短いオプション 長いオプション 意味
-R,-r --recursive コピー元にディレクトリを指定した場合、再帰的に(サブディレクトリも含めて)コピーする
-t ディレクトリ名 --target-directory=ディレクトリ名 「-t」で指定したディレクトリにコピーする
-T --no-target-directory コピー先(最後の引数)がディレクトリでも特別扱いしない

 オプション項目(属性関連) 

短いオプション 長いオプション 意味
-a --archive サブディレクトリや属性なども含め、可能な限り全てを保持しながらコピーする(-dR --preserve=allと同様)
-u --update コピー元のファイルがコピー先ファイルより新しいか新規ファイルの場合だけコピーする
-p   パーミッションと所有者とタイムスタンプを保持する(--preserve=mode,ownership,timestamps相当)
  --preserve[=属性リスト] 指定した属性を保持する。属性を指定しなかった場合は、mode(パーミッション)、ownership(所有者)、timestamps(タイムスタンプ)が保持される。その他、context(コンテキスト情報)、links(ディレクトリ内のハードリンク)、xattr(ファイルシステムの拡張属性)、all(可能な限り全ての属性)を指定可能
  --no-preserve=属性リスト 指定した属性を保持しない
  --attributes-only ファイルのデータをコピーせず、ファイルの属性のみコピーする
 

 

d-18【rm】-- ファイル/ディレクトリを削除する

下記のコマンドで実行する。 

$ rm [オプション] ファイル1 ファイル2 ファイル3……

「rm -r ディレクトリ」でディレクトリを中にあるファイルごと削除する。ファイルやディレクトリは複数指定できる。 

$ rm -r [オプション] ディレクトリ1 ディレクトリ2 ディレクトリ3……

 オプション項目

短いオプション 長いオプション 意味
-f --force 存在しないファイルを無視する(確認も行わない)
-i --interactive 削除前に確認する
-v --verbose 経過を表示する
-d --directory unlinkでディレクトリを削除する
-r,-R --recursive ディレクトリを再帰的に削除する
  --preserve-root 「/」を削除しない(デフォルト)(※)
  --no-preserve-root 「/」を特別なものとして扱わない(※)

 ※「--preserve-root」「--no-preserve-root」が有効かどうかは、rmコマンドのバージョンによって異なります

 

d-19【rmdir】-- 中が空のディレクトリを削除する 

下記のコマンドで実行する。 

$ rmdir [オプション] ディレクトリ名

 オプション項目 

短いオプション 長いオプション 意味
  --ignore-fail-on-non-empty ディレクトリが空でない場合のエラーだけを無視する(エラーメッセージを表示しない)
-p --parents 必要に応じて親ディレクトリも削除する(実行例2を参照)
-v --verbose 経過を表示する

 

d-20【ls】-- ファイルやディレクトリを一覧で表示する

下記のコマンドで実行する。 

$ ls [オプション] [ファイルまたはディレクトリ……]

オプション項目(表示フォーマット関係)

短いオプション 長いオプション 意味
-l   長いフォーマットで表示する。ディレクトリを指定した場合、最初にトータルのブロック数を表示してからディレクトリ内のファイルの情報を表示する
-o   「-l」と同じだが、グループ情報は表示しない
-g   「-l」と同じだが、ファイル所有者を表示しない
-n --numeric-uid-gid 「-l」と同じだが、所有者とグループ名の代わりにUIDとGIDを数値で表示する
  --full-time 「-l」と同じだが、完全な日時を表示する(「-l --time-style=full-iso」と同じ)
-G --no-group 「-l」と併用したとき、グループ名を表示しない
  --author 「-l」と併用したとき、各ファイルの作成者を表示する
 

オプション項目(サイズ関係)

短いオプション 長いオプション 意味
-h --human-readable 「-l」と併用したとき、サイズを人が読みやすい形式で表示する(例:1K、234M、2G)
  --si 「-h」と同じだが、乗数の単位として1024の代わりに1000を使用する
-k   「-l」と併用したとき、サイズを1KB単位(1024バイトの倍数)で表示する
  --block-size=SIZE 「-l」と併用したとき、サイズを「SIZE」の倍数として表示する。SIZEは1024単位のK、M、G……および1000単位のKB、MB、GB……などが使用可能。例えば、「--block-size=M」とすると1M単位(1,048,576の倍数)で表示

オプション項目(時刻関係)

短いオプション 長いオプション 意味
-c   「-l」と併用したとき、更新日の代わりに「ctime」(ファイルの属性など変更した時刻)を表示する
-u   「-l」と併用したとき、更新日の代わりに最終アクセス日を表示する
  --time=WORD 「-l」と併用し、ファイル更新時刻の代わりに「WORD」で指定した時間を表示する(WORDが「atime」の場合は「-u」相当、「access」の場合は「-u」相当、「use」の場合は「-u」相当、「ctime」「status」の場合は「-c」相当)
  --time-style=STYLE 「-l」と併用し、「STYLE」で指定した形式で時間を表示する(STYLEは「full-iso」「long-iso」「iso」「locale」「FORMAT」が指定可能。FORMATは「date」コマンドと同様に指定)

オプション項目(タイプ識別子関係)

短いオプション 長いオプション 意味
-F --classify 名前の後にタイプ識別子(*/=>@|のいずれか)を付けて出力する(実行例4を参照)
  --file-type 「-F」と同じだが、実行ファイルを表す「*」は付けない
-p --indicator-style=slash ディレクトリの場合のみ「/」を付けて表示する

オプション項目(その他の情報)

短いオプション 長いオプション 意味
-i --inode 各ファイルの前にファイルの「iノード番号」(ファイルを管理するのに使われている数値)を表示する
-s --size 各ファイルの前にファイルのブロック数を表示する
-Z --context 各ファイルのSELinuxセキュリティコンテキストを表示する

オプション項目(出力フォーマット)

短いオプション 長いオプション 意味
-C   リストを常に複数の列で出力する(リダイレクトやパイプで画面以外に出力した場合も画面表示と同じように複数の列で出力する:実行例3を参照)
-1   リストを常に1件1行で表示する(画面表示の際もリダイレクトやパイプで画面以外へ出力した場合と同じように1行1件で表示する)
-m   ファイル名のリストをカンマで区切って表示する
-x   複数列の表示でファイル名を列方向ではなく行方向(縦方向)に並べる
-T 数 --tabsize=文字数 タブ幅を8の代わりに指定した文字数にする
-w 数 --width=文字数 スクリーン幅を指定した文字数にする
  --format=WORD 表示スタイルをWORDで指定(例:「--format=long」で「-l」相当。WORDが「across」「horizontal」の場合は「-x」相当、「commas」の場合は「-m」相当、「long」「verbose」の場合は「-l」相当、「single-column」の場合は「-1」相当、「vertical」の場合は「-C」相当)
-Q --quote-name ファイル名をダブルクオート(")で囲む
  --quoting-style=WORD ファイル名のクオートをWORDで指定された形式で行う(WORDには「literal」「locale」「shell」「shell-always」「c」「escape」を指定)
  --color[=WHEN] カラーで出力する。WHENには「always」「never」「auto」を指定(デフォルトはautoで、出力先が端末の時だけカラーで出力する)、色の設定は環境変数「LS_COLORS」で行う
-N --literal 生の要素名を表示する(制御文字などを特別扱いしない)
-q --hide-control-chars 表示不可能な文字を「?」に置き換える
  --show-control-chars 表示不可能な文字をそのまま表示する(出力が端末ではない時のデフォルト)
 

オプション項目(並べ替え関係)

短いオプション 長いオプション 意味
-t   ファイルの更新日が新しい順に表示する(「-lc」が併せて指定されている場合は「ctime」順、「-lu」が併せて指定されている場合は最終アクセス日順で表示)
-S   ファイルサイズの大きい順に並べる
  --group-directories-first 先にディレクトリの一覧を表示してからファイルを一覧表示する(「--sort=none」「-U」と併用した場合は無効)
  --sort=WORD 名前順の代わりに「WORD」で指定した順で並べ替える(例:「--sort=time」で更新日順。WORDが「none」は「-U」相当、「extension」は「-X」相当、「size」は「-S」相当、「time」は「-t」相当、「version」は「-v」相当)
-v   自然な数字(version)順でソートする
-X   拡張子のアルファベット順にソートする
-r --reverse 並び順を反転させる
-U   ファイルを並べ替えず、ディレクトリに含まれている要素順で表示する
-f   ファイルを並べ替えず、ディレクトリ情報のままで表示する(「-aU」が有効になり、「--color」が無効になる)
 

オプション項目(表示対象関係)

短いオプション 長いオプション 意味
-a --all ドットファイルも表示する
-A --almost-all ドットファイルも表示する、ただし「.」と「..」を除く
-B --ignore-backups 「~」で終了する要素を一覧表示しない
  --ignore=PATTERN シェル形式の「PATTERN」(「D*」や「file[1-3].txt」など)に一致する要素は表示しない
  --hide=PATTERN シェル形式の「PATTERN」に一致する要素は表示しない(「-a」または「-A」で上書きされるため「--hide=".b*"」のような指定は無効)
-d --directory ディレクトリの内容ではなく、ディレクトリそのものの情報を表示する(シンボリックリンクもたどらない)
-H --dereference-command-line コマンドラインで指定したファイルやディレクトリがシンボリックリンクの場合は、リンク先の情報で表示(「-F」「-d」「-l」と一緒に使う。例えば、「/bin」が「/usr/bin」へのシンボリックリンクの場合、「ls -l /bin」ではシンボリックリンクの情報が表示されるが、「ls -lH /etc」では「ls -l /usr/bin」と同じ結果になる)
  --dereference-command-line-symlink-to-dir コマンド行のシンボリックリンクディレクトリを指している場合には、シンボリックリンクをたどる
-L --dereference ディレクトリ内のファイルも含めて、全てをシンボリックリンクのリンク先の情報で表示する
-R --recursive ディレクトリを指定した場合、再帰的に表示する

 

 

d-21【find】-- 指定のディレクトリ配下のファイルとディレクトリを検索する

下記のコマンドで実行する。 

$ find [オプション] [検索パス] [検索式]

 オプション項目

オプション 意味
-P シンボリックリンクをたどらない(デフォルト)
-L 全てのシンボリックリンクをたどる
-H コマンドラインで指定したシンボリックリンクをたどる
-D オプション 診断用の情報(デバッグ情報)を出力する。オプションには次の文字列が入る
help:デバッグ用オプションの説明を表示
tree:検索式を構造化した情報
stat:statやlstatを使ってファイルを調べたときのメッセージ
opt:検索式を最適化する際の情報
rates:各処理の成功した回数と失敗した回数を表示
-Oレベル 最適化レベル。「-O1」はファイル名による判別を先に行う(デフォルト)。「-O2」「-O3」では別の判定を先に行うなどで処理を高速化する

 

 

d-22【ln】-- シンボリックリンクを作成する

 

ファイルのリンク(ハードリンクまたはシンボリックリンク)を作成する。 

$ ln [オプション] ファイル名 リンク名

ファイルのシンボリックリンクを作成する。 

$ ln -s ファイル名 リンク名

ディレクトリのシンボリックリンクを作成する。 

$ ln -s ディレクトリ名 リンク名

指定したディレクトリの中にシンボリックリンクを作成する。 

$ ln -s ファイル1 ファイル2…… ディレクトリ

 オプション項目

短いオプション 長いオプション 意味
-s --symbolic ハードリンクの代わりにシンボリックリンクを作成する
-d,-F --directory ディレクトリのハードリンクを作成する(スーパーユーザーのみ)
-f --force リンクファイルと同じ名前のファイルがあっても強制的に上書きする
-i --interactive 上書き前に確認する
-n --no-dereference リンクの作成場所として指定したディレクトリがシンボリックリンクだった場合、参照先にリンクを作るのではなく、シンボリックリンクそのものを置き換える(-fと組み合わせて使用)
-L --logical 対象がシンボリックリンクの場合リンクを巡る
-P --physical シンボリックリンク自体へのハードリンクを作成する
-r --relative 相対パスシンボリックリンクを作成する
-T --no-target-directory リンク先を常に通常ファイルとして扱う
-t DIR --target-directory=DIR 指定したディレクトリにリンクを作成する(DIR部分はディレクトリ名)
-b --backup=方法 上書きされるファイルのバックアップを作成する(実行例2を参照)
[方法]:「numbered」または「t」の場合は番号の添え字、「simple」または「never」の場合はファイル名の末尾に「~」または「-S」オプションか環境変数で指定した文字を付けるシンプルなバックアップ(-bと同じ)、「existing」または「nil」の場合は既にあるファイルに従う(ない場合はsimpleと同じ)
-S 接尾辞 --suffix=接尾辞 バックアップファイルを作る際のファイル名末尾に付ける文字(無指定時は「~」1文字、または環境変数「SIMPLE_BACKUP_SUFFIX」に従う)
-v --verbose 経過を表示する

 

 

d-23【tar】-- アーカイブファイルを作成する/展開する

ファイルのアーカイブを作成しgzip形式で圧縮する。 

$ tar -czvf アーカイブ.tgz 対象ファイル

gzipで圧縮されたアーカイブを展開する。 

$ tar -xzvf アーカイブ.tgz

操作オプション

短いオプション 長いオプション 意味
-c --create 新しいアーカイブを作成する
-r --append アーカイブの最後にファイルを追加する
-A --catenate,
--concatenate
アーカイブにtarアーカイブを追加する
-u --update アーカイブのファイルを更新する(アーカイブ内の同名ファイルより新しいものだけを追加する)
-d --diff,
--compare
アーカイブファイルシステムを比較する
  --delete アーカイブから削除する
-t --list アーカイブの内容の一覧を表示する
-x --extract,--get アーカイブからファイルを抽出する
 

共通オプション

短いオプション 長いオプション 意味
-f アーカイブ --file=アーカイブ アーカイブファイル名を指定する
-C ディレクト --directory=ディレクト カレントディレクトリを指定したディレクトリに変更してから実行する
  --recursion ディレクトリを再帰的に処理する(デフォルト)
-h --dereference シンボリックリンクをたどる
  --hard-dereference ハードリンクをたどる
-N 日付 --newer=日付,
--after-date=日付
指定した日付より新しいファイルだけを保存する(日付の代わりにファイルを指定することも可能。この場合、指定したファイルより新しいファイルだけが対象になる)
-P --absolute-names ファイル名から先頭の「/」を取り除かない
-p --preserve-permissions 所有者などのファイル属性を保持する(スーパーユーザーのデフォルト)
-k --keep-old-files 既存のファイルを置き換えない
  --keep-newer-files アーカイブより新しい場合は既存ファイルを置き換えない
  --overwrite 既存のファイルを上書きする
-U --unlink-first ファイルを上書きする前に削除する
  --recursive-unlink ディレクトリを展開する際、いったん既存ディレクトリを空にする
  --suffix=接尾辞 バックアップの接尾辞を指定する(環境変数「SIMPLE_BACKUP_SUFFIX」より優先する。どちらも指定されていない場合は「~」を使用する)
  --remove-files アーカイブへ追加した後にファイルを削除する
-T ファイル --files-from=ファイル 対象とするファイル名を指定したファイルから読み込む
  --unquote 「-T」で読み込んだファイル名の引用符を外す(デフォルト)
-X ファイル --exclude-from=ファイル 除外するファイル名をファイルから読み込む
-z --gzip アーカイブgzip形式で圧縮する、gzip形式で圧縮されたアーカイブを展開する(拡張子は「.tar.gz」または「.tgz」)
-j --bzip2 アーカイブをbzip2形式で圧縮する、bzip2形式で圧縮されたアーカイブを展開する(拡張子は.tar.bz2)
-Z --compress,
--uncompress
アーカイブをcompress形式で圧縮する、compress形式で圧縮されたアーカイブを展開する(拡張子は「.tar.Z」)
-W --verify アーカイブを書き出した後に検証する
-v --verbose 処理したファイルを詳しく出力する

 

 

ousei.hatenablog.com