LinuxコマンドP-T
LinuxコマンドP-T:記事リスト
LinuxコマンドP-Tのカテゴリーには以下の記事がリストされています。
CentOS7での日付、時刻、タイムゾーン設定
CentOS7では、日付、時刻の設定コマンドとして従来のdateコマンド、hwclockコマンドが
存在していますが、新たにsystemdで制御されるtimedatectlコマンドが用意されています。
■日付、時間、タイムゾーンの表示
timedatectlコマンドをオプションなしで実行すると、
日付、時間、タイムゾーン、NTPの同期設定の有無などを表示できます。
-----------------------------------------------------------------
[root@Tiger system]# timedatectl
Local time: 木 2016-01-14 13:51:12 JST
Universal time: 木 2016-01-14 04:51:12 UTC
RTC time: 木 2016-01-14 04:51:11
Timezone: Asia/Tokyo (JST, +0900)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
-----------------------------------------------------------------
■日付の設定
timedatectlで日付設定を行う場合は、オプションに「set-time」を付けて実行します。
下記の例では、2016年1月15日に設定しています。
-----------------------------------------------------------------
[root@Tiger system]# timedatectl set-time 2016-01-15
[root@Tiger system]# timedatectl
Local time: 金 2016-01-15 00:00:03 JST
Universal time: 木 2016-01-14 15:00:03 UTC
RTC time: 木 2016-01-14 15:00:04
Timezone: Asia/Tokyo (JST, +0900)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
-----------------------------------------------------------------
■時刻の設定
timedatectlで時刻設定を行う場合も、オプションに「set-time」を付けて実行します。
下記の例では、15時54分00秒に設定しています。
-----------------------------------------------------------------
[root@Tiger system]# timedatectl set-time 15:54:00
[root@Tiger system]# timedatectl
Local time: 金 2016-01-15 15:54:00 JST
Universal time: 金 2016-01-15 06:54:00 UTC
RTC time: 金 2016-01-15 06:54:00
Timezone: Asia/Tokyo (JST, +0900)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
-----------------------------------------------------------------
■タイムゾーンの表示
timedatectlでタイムゾーンを表示するには、オプション「list-timesones」を付けて実行します。
-----------------------------------------------------------------
[root@Tiger system]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
〜中略〜
Asia/Tashkent
Asia/Tbilisi
Asia/Tehran
Asia/Thimphu
Asia/Tokyo
-----------------------------------------------------------------
■タイムゾーンの変更
タイムゾーンを変更するには、timedatectlコマンドにオプション「set-timesone」を付けて実行します。
-----------------------------------------------------------------
[root@Tiger system]# timedatectl set-timezone Asia/Tokyo
-----------------------------------------------------------------
CentOS7のサービス・デーモンの起動
具体的なコマンドとしては、systemctlを利用して起動、停止、状態確認などを行います。
これらはユニットと呼ばれる単位で管理を行い、下記の幾つかのタイプが存在ます。
| start | httpdを起動します。 |
| stop | httpdを停止します。 |
| service | 各種デーモンやサービスを起動 |
| target | 起動プロセスやサービスなどの複数のユニットをグループにしてまとめたもの |
| mount | ファイルシステムのマウントポイント制御 |
| device | ディスクデバイス |
| socket | FIFO、UNIXドメインソケット、ポート番号などに関する通信資源 |
CentOS7に登録されているサービスのOS起動時の自動起動の有効化、
無効化の設定を確認するには、
ユニット「sevice」を指定し、更に「list-unit-files」を指定します。
-----------------------------------------------------------------
[root@Tiger ~]# systemctl -t service list-unit-files
UNIT FILE STATE
abrt-ccpp.service enabled
abrt-oops.service enabled
abrt-pstoreoops.service disabled
abrt-vmcore.service enabled
abrt-xorg.service disabled
abrtd.service enabled
arp-ethers.service disabled
以下省略
-----------------------------------------------------------------
■サービスの登録状況確認
サービスの設定例として、WEBサービスの起動、停止、状態確認、
OS起動時の自動起動の有効化、無効化の設定を紹介します。
WEBサービスのがsystemdのユニットで
どのような名前で登録されているのかを確認します。
(例ではApacheがインストールされている環境を利用しています。)
-----------------------------------------------------------------
[root@Tiger ~]# systemctl -t service list-unit-files | grep -i httpd
httpd.service enabled
-----------------------------------------------------------------
WEBサーバーのサービスは「httpd.service」になります。
「httpd.serviceの右側に「enabled」と表示されています。
これはOS起動時に「httpd.service」が自動起動する
設定になっている事を意味します。
「disabled」だと自動起動しない設定という意味になります。
■サービスの状態確認
サービスの状態確認は、systemctlコマンドに「status」を指定します。
systemctlコマンドを利用する場合、サービス名の「.service 」は省略できます。
-----------------------------------------------------------------
[root@Tiger ~]# systemctl status httpd
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since 水 2016-01-13 15:40:13 JST; 9min ago
Process: 1145 ExecStart=/usr/local/apache2/bin/apachectl start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/httpd.service
tq2114 /usr/local/apache2/bin/httpd -k start
tq2115 /usr/local/apache2/bin/rotatelogs /var/log/httpd/192.168.0.36_error_log_%Y%m%d ...
tq2116 /usr/local/apache2/bin/rotatelogs /var/log/httpd/192.168.0.36_access_log_%Y%m%d...
tq2117 /usr/local/apache2/bin/httpd -k start
tq2118 /usr/local/apache2/bin/httpd -k start
tq2119 /usr/local/apache2/bin/httpd -k start
tq2120 /usr/local/apache2/bin/httpd -k start
mq2121 /usr/local/apache2/bin/httpd -k start
1月 13 15:40:13 Tiger systemd[1]: Started The Apache HTTP Server.
-----------------------------------------------------------------
コマンドの実行結果「Active: active (running) 」となっており、
プロセスも正常起動していることから、Apacheサービスが正常に起動していることが分かります。
■サービスの起動と停止
Apacheを停止してみます。
停止は「systemctl stop httpd」で行えます。
-----------------------------------------------------------------
[root@Tiger ~]# systemctl stop httpd
[root@Tiger ~]# systemctl status httpd
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: inactive (dead) since 水 2016-01-13 15:52:20 JST; 4s ago
Process: 2384 ExecStop=/usr/local/apache2/bin/apachectl stop (code=exited, status=0/SUCCESS)
Process: 1145 ExecStart=/usr/local/apache2/bin/apachectl start (code=exited, status=0/SUCCESS)
1月 13 15:40:13 Tiger systemd[1]: Started The Apache HTTP Server.
1月 13 15:52:20 Tiger systemd[1]: Stopping The Apache HTTP Server...
1月 13 15:52:20 Tiger systemd[1]: Stopped The Apache HTTP Server.
-----------------------------------------------------------------
コマンドの実行結果が「Active: inactive (dead)」になっていることから
Apacheが停止していることが分かります。
因みに、起動は「systemctl start httpd」で行えます。
■起動時の自動実行、停止設定
CentOS7が起動した時に、Apacheサービスが自動的に起動するように設定します。
-----------------------------------------------------------------
[root@Tiger ~]# systemctl enable httpd
ln -s '/usr/lib/systemd/system/httpd.service'
'/etc/systemd/system/multi-user.target.wants/httpd.service'
-----------------------------------------------------------------
自動起動を無効にする場合は、下記コマンドになります。
-----------------------------------------------------------------
[root@Tiger ~]# systemctl disable httpd
rm '/etc/systemd/system/multi-user.target.wants/httpd.service'
-----------------------------------------------------------------
「enable」を「disable」に変更します。
CentOS7が起動した際、Apacheサービスが自動起動するように 設定されているか確認します。
-----------------------------------------------------------------
[root@Tiger ~]# systemctl -t service is-enabled httpd
enabled
-----------------------------------------------------------------
| 機能 | CentOS6 | CentOS7 |
| サービスの開始 | # service httpd start | # systemctl start httpd |
| サービスの停止 | # service httpd stop | # systemctl stop httpd |
| サービスの再起動 | # service httpd restart | # systemctl restart httpd |
| サービスの設定ファイル再読み込み | # service httpd reload | # systemctl reload httpd |
| サービスの状態確認 | # service httpd status | # systemctl status httpd |
| サービスが既に稼働している場合、サービスを再起動する | # service httpd condrestart | # systemctl condrestart httpd |
| 次回OS起動時に自動的にサービスを起動する | # chkconfig httpd on | # systemctl enable httpd |
| 次回OS起動時に自動的にサービスを起動しない | # chkconfig httpd off | # systemctl disable httpd |
| ランレベルごとに全サービスが有効・無効になっているかを表示する | # chkconfig --list | systemctl -t service list-unit-files または # ls /etc/systemd/system/*.wants/ |
| ランレベルごとに指定したサービスが有効・無効になっているかを表示する | # chkconfig --list httpd | # ls /etc/systemd/system/*.wants/httpd.service |
sync
キャッシュ(メモリ)の内容をディスクに書き込む
■-- 文法 --■
sync
例)
sync
キャッシュの内容をディスクに書き込む
※▲はスペースを表してます。
■ 説明
syncコマンドは任意にキャッシュの内容をディスクに書き込むコマンドです。
syncコマンドはメモリ内に存在するデータでありながら、ディスクに存在しない
データをディスクに書き込むコマンドになります。
実行するにはオプションなしでsyncコマンドを実行します。
また、shutdownコマンド、rebootコマンド、haltコマンドを実行した場合も
自動的に実行されるようになっています。
※補足
処理を高速に実現する為には、処理の実行及び、実行結果をそのまま
ディスクに書き込む事は得策ではないため、通常のOSではメモリにデータを書き込み、
CPUの不可やI/O(ハードディスクやメモリ)の利用状況を判断しながら自動的に
ディスクに書き込みを行うようになっています。
■ 実行例
▼キャッシュ(メモリ)の内容をディスクに書き込む
[root@Tiger ~]# sync ←syncコマンドを実行して、メモリ内のデータをディスクに書き込みます。
■ 関連記事
shutdownコマンドの詳細はこちら
rebootコマンドの詳細はこちら
haltコマンドの詳細はこちら
telinit
ランレベルを切り替える
■-- 文法 --■
telinit [runlevel]
例)
runlevel 5
ランレベルを5に変更
※▲はスペースを表してます。
■ 説明
telinitコマンドはランレベルを切り替えるコマンドです。
telinitコマンドを実行するには設定したいランレベルを
引数として指定し、実行します。
また、telinitコマンドの実行にはroot権限が必要になり、
設定後は再起動して設定を有効にする必要があります。
■ 主なオプション
なし
■ 実行例
[pakira@Tiger ~]$ su - ←rootにユーザ切り替えを行う
パスワード: ←rootパスワードを入力する(パスワードは表示されません)
[root@Tiger ~]# runlevel ←現在のランレベルを確認します。
N 3 ←現在のランレベルは「3」に設定されています。
[root@Tiger ~]# telinit 5 ←ランレベルを5に設定します。
[root@Tiger ~]# runlevel ←設定後のランレベルを確認します。
3 5 ←ランレベルが「5」に変更されます。
■ ランレベルとモード
レベル:0 停止
レベル:1 シングルユーザモード
レベル:2 マルチユーザモード(テキストログイン、NFSサーバーは停止)
レベル:3 マルチユーザモード(テキストログイン)
レベル:4 未使用
レベル:5 マルチユーザモード(グラフィカルログイン)
レベル:6 再起動(リブート)
レベル:S シングルユーザモード(/etc/rc.d/rc.sysinitを読み込む)
runlevel
現在のランレベルと変更前のランレベルを表示する
■-- 文法 --■
runlevel
例)
runlevel
現在のランレベルと変更前のランレベルを表示する
※▲はスペースを表してます。
■ 説明
runlevelコマンドは現在のランレベルと変更前のランレベルを表示コマンドです。
ランレベルとは、Linuxの動作モードを表し、Linuxではランレベルがいくつか
定義されていて、ランレベルを変更することによって Linuxの動作を変えることができます。
ちなみに起動時のデフォルトランレベルは、/etc/inittabに記述されており、
runlevelコマンドを実行する場合にはrootでなければなりません。
■ 主なオプション
なし
■ 実行例
▼ 現在のランレベルと変更前のランレベルを表示する
[root@Tiger ~]# runlevel ←ランレベルを表示します。
5 3 ←現在のランレベルは「3」です。
↑
行頭の「5」は現在のランレベルにする前のランレベルが表示され、
前回ランレベルがない場合は「N」と表示されます。
■ ランレベルとモード
レベル:0 停止
レベル:1 シングルユーザモード
レベル:2 マルチユーザモード(テキストログイン、NFSサーバーは停止)
レベル:3 マルチユーザモード(テキストログイン)
レベル:4 未使用
レベル:5 マルチユーザモード(グラフィカルログイン)
レベル:6 再起動(リブート)
レベル:S シングルユーザモード(/etc/rc.d/rc.sysinitを読み込む)
telnet
リモートホストに接続する
■-- 文法 --■
telnet host名 [IPアドレス]
例)
telnet host名 [IPアドレス]
リモートホストに接続する
※▲はスペースを表してます。
■ 説明
telnetは遠隔地にあるサーバーにログインし、操作するためのコマンドです。
直接サーバーを操作している感覚で遠隔地のサーバーを操作できるため、
広く使われています。
しかし、通信経路が暗号化されないため、セキュリティ面からインターネット
などの環境では使用されず、専用線やLANなどの閉じた環境で使用されることが
多くなっています。
topコマンドでCPU・メモリ使用率を確認する方法|load averageの見方も
「topコマンドを実行してみたけど、数字がたくさん並んでいて何を見ればいいのか分からない」
Linuxサーバーの運用で、こうした場面に遭遇したことはないでしょうか。
この記事では、Linuxの
top コマンドを使ってCPU使用率やメモリ使用量をリアルタイムに監視する実践的な手順を解説します。ヘッダー行(load average・タスク数・CPU%・メモリ/スワップ)の読み方から、操作キー、バッチモードでのスクリプト活用、さらにload averageが高い場合やCPUが100%に張り付いた場合のトラブルシュートまで、現場で必要な知識をまとめました。
traceroute
パケットの通信経路を確認する
■-- 文法 --■
例)
ntpdate eric.nc.u-tokyo.ac.jp
パケットの通信経路を確認する
※▲はスペースを表してます。
■ 説明
traccerouteコマンドは、特定のホストへパケットを送信し、ネットワークの通信経路を表示するコマンドです。
目的のホストへの接続が行えない場合などに、ネットワーク上に障害がないかを確認する場合などに使われます。また、このコマンドを実行することで、どのような通信経路でホストとの通信を行っているのか、ルーティングに問題ないかなどを確認することができます。
su
ユーザーを切り替える
■-- 文法 --■
su▲(-)▲(ユーザー名)
例)
su▲tomohiro
ユーザーを切り替える
※▲はスペースを表してます。
■ 説明
suコマンドは、ユーザーを切り替える場合に使用するコマンドです。
使用方法としては、suコマンドの引数として、切り替えたいユーザー名を指定して実行します。
また、ユーザー名を指定しないで実行した場合には、
スーパーユーザーへの切り替えになります。
もとのユーザーに戻る場合にはexit、logoutと入力するか、「Ctrl」+「d」で戻れます。
ちなみに、suとは「substitute User」の略になります。
passwd
パスワードを変更する
■-- 文法 --■
passwd▲ユーザ名
例)
passwd▲pakira
パスワードを変更す
※▲はスペースを表してます。
■ 説明
passwdコマンドは、ログインするときのパスワードを設定、変更する為のコマンドです。一般ユーザは自分自身のパスワードしか変更することができませんが、スーパーユーザ(root)はすべてのユーザのパスワードを設定、変更することができます。
passwdコマンドを実行する際には、引数に変更したいユーザ名を指定して実行することでパスワードの設定、変更することができます。
一般ユーザ、スーパーユーザが自身のパスワードを変更する場合にはユーザ名を指定する必要ありません。
sedコマンドで文字列を置換する方法|-iの一括置換やファイル編集も
「sedコマンドの書き方が複雑で、毎回ネットで調べてしまう」
サーバーの構築や設定変更で、設定ファイルの特定の文字列をまとめて置換したい場面は頻繁に発生します。
この記事では、テキストを加工する
sed(セド)コマンド の実践的な使い方を解説します。基本的な文字列置換から、ファイルを直接書き換える
-i オプション、正規表現を使った高度な置換、find との組み合わせによる複数ファイルの一括置換まで、実務で使える手順をまとめました。paste
ファイルを行ごとに結合する
■-- 文法 --■
paste▲(オプション) ▲ファイル1▲ファイル2
例)
paste▲file1.txt▲file2.txt
ファイルを行ごとに結合する
※▲はスペースを表してます。
■ 説明
pasteコマンドは、ファイルを同じ行ごとに結合するコマンドです。
結合された出力結果はタブ区切りで出力されます。
コマンドを実行する際には、引数として行ごとに結合するファイルを
「ファイル1」、「ファイル2」として指定して実行します。
入力がファイルではない場合、標準入力が利用されます。
tac
ファイルを逆順に表示する
■-- 文法 --■
tac▲(オプション) ▲ファイル名
例)
tac▲test.txt
ファイルを逆順に表示する
※▲はスペースを表してます。
■ 説明
tacコマンドはファイル内の行を逆順にして表示します。
コマンドの意味どおりcatコマンドと表示が逆になります。
コマンドを実行する際には、引数に表示したいファイルを指定して実行します。
また、tacはコマンドのつづりもcatの逆になっています。
split
ファイルを決まった大きさに分割する
■-- 文法 --■
split▲(オプション) ▲ファイル名▲(プリフィックス)
例)
split▲-b▲1024▲acpid-1.0.3-2.i386.rpm▲acpid.
ファイルを決まった大きさに分割する
※▲はスペースを表してます。
■ 説明
splitコマンドは一つのファイルを一定の容量や行数を指定して分割するコマンドです。
主にフロッピーディスクなどのデバイスなどのデータを保存しきれない場合などに
ファイルを分割して保存するために使用するコマンドです。
オプションを付けずに実行した場合、1000行ごとにファイルを分割します。
また、分割ファイルのプリフィックス(接頭辞)を指定しない場合は、
「x」という(プリフィックス)が付けられます。
つまり、分割されたファイルはxaa、xab、xacをいうファイル名で分割されます。
tee
標準出力をモニタとファイルへ出力する
■-- 文法 --■
tee (オプション) (ファイル)
例)
tee▲-a▲test.txt
標準出力をモニタとファイルへ出力する
※▲はスペースを表してます。
■ 説明
teeコマンドは処理結果を、画面に表示すると共にファイルへの出力も行うコマンドです。
通常、出力結果は画面に表示され、標準出力で「>」や「>>」を指定しないと、
ファイルへ保存されることはありません。
また標準出力でファイルへ結果を保存した場合には、処理結果は画面に表示されません。
このteeコマンドを使用すると、処理結果が画面に表示されるとともにファイルへも保存されます。
source
シェルの設定ファイルを読み込む
■-- 文法 --■
source▲設定ファイル名
例)
source▲./.bashrc
シェルの設定ファイルを読み込む
※▲はスペースを表してます。
■ 説明
エイリアスや変数の設定などは、bashの設定ファイル(.bashrc)に記述されており、ログイン時やログアウト時に読み込まれることで設定を反映させています。しかし、これらの設定を変更した場合、再度ログアウトまたはログインしなおさなければ設定が反映しません。
そのような場合にこのsourceコマンドを実行すると変更内容を即時反映させることができます。
setenvコマンドで環境変数を設定する方法|csh・tcshの書き方とbash exportとの違い
「bashでは export を使うのに、csh では setenv? 違いがよく分からない」
Linuxサーバーの運用では、シェルの種類によって環境変数の設定方法が異なるため、混乱するエンジニアが少なくありません。
この記事では、csh/tcsh環境で環境変数を設定する
setenv コマンドの使い方を解説します。基本的な書き方から、bashの export との違い、設定を永続化する方法、トラブル対処まで、実務で必要な知識をまとめました。1. setenvコマンドとは? bashのexportとの違い
setenv は、csh(Cシェル)および tcsh で環境変数を設定するコマンドです。bash(Bourneシェル系)の export に相当します。| 項目 | csh / tcsh | bash / sh / zsh |
|---|---|---|
| 環境変数の設定 | setenv 変数名 値 |
export 変数名=値 |
| 環境変数の削除 | unsetenv 変数名 |
unset 変数名 |
| 環境変数の一覧表示 | setenv(引数なし) |
env または printenv |
| 区切り文字 | スペース(変数名と値の間) | =(イコール) |
| 設定ファイル | ~/.cshrc / ~/.tcshrc |
~/.bashrc / ~/.bash_profile |
export HOME=/home/user と「=」を使いますが、cshでは setenv HOME /home/user と「スペース」で区切ります。「=」を使うとエラーになるため気をつけてください。set
シェル変数を表示・設定する
■-- 文法 --■
set▲(変数=値)
例)
set▲NAME=pakira
シェル変数を設定する
※▲はスペースを表してます。
■ 説明
setコマンドはシェル内部のコマンドで、シェル変数を表示したり、
設定したりするコマンドです。
シェル変数を表示する場合にはsetコマンドのみを実行します。
また、シェル変数を設定する場合には、シェルによって異なりますが、
bsh、bashの場合は「変数=値」で、cshの場合は「set 変数=値」と指定し実行します。
また、設定した変数を参照するには変数名の前に「$」をつける必要があります。
reboot
システムを再起動する
■-- 文法 --■
reboot
例)
reboot
システムを再起動する
※▲はスペースを表してます。
■ 説明
rebootコマンドはシステムを再起動するコマンドです。
実行する際には、引数なしで実行します。
このコマンドを実行する際にはスーパーユーザ権限が必要です。
shutdown
システムをシャットダウン(終了)、再起動する
■-- 文法 --■
shutdown▲(オプション)▲(時間)▲(メッセージ)
例)
shutdown▲-h▲now
システムをシャットダウンする
※▲はスペースを表してます。
■ 説明
shutdownコマンドは、システムのシャットダウン(終了)、再起動をする際に使用するコマンドです。
shutdownコマンドが実行されると、ユーザーへシステムが終了するメッセージが送付されます。
これは、Linuxはマルチユーザ環境なため、ログインしているユーザーに利用の終了を促す必要があるためです。
また、shutdownコマンドは引数に時間を指定することで、指定した時間分の猶予をもってシステムを終了します。
なお、shutdownコマンドはスーパーユーザー(root)のみ実行することができます。
touch
0バイトファイルを作成する
▼ 文法
touch (オプション) ファイル名
■ 説明
touchコマンドはファイルサイズが0バイトのファイルを作成する場合にも使われます。
また、ファイルのアクセス時刻や修正時刻を変更する場合にも使用します。
特にオプションで時刻指定が無い場合は、現在時刻に変更します。
rpm
RPMパッケージを管理する
■-- 文法 --■
rpm (オプション) パッケージ名
例)
rpm▲-q▲example.rpm
RPMパッケージを管理する
※▲はスペースを表してます。
■ 説明
rpmコマンドはRedhatLinux社が開発したパッケージ管理のコマンドです。
rpmは、「Redhat Package Manager」の略で、パッケージのインストール、
アンインストール、問い合わせ、検証、アップデートなどの操作を行うことができ、
Linuxのソフトウェアを簡単に管理することができます。
RPM形式は、一種の圧縮されたアーカイブで、パッケージされたファイルや
参照するファイルのデータベースを保持しています。
RedHat系のLinuxでサポートされており、各種のソフトウェアが簡単に
インストール、アンインストールできるようになっています。
restore
ファイルを復元する
■-- 文法 --■
restore (オプション) ファイル名
例)
restore▲tf▲/home/pakira
ファイルを復元する
※▲はスペースを表してます。
tarコマンドで圧縮・解凍(展開)する方法|必須のzxvfやディレクトリ指定も
「ディレクトリごとバックアップとして圧縮したいけど、オプションが多すぎて覚えられない」
Linuxを触り始めたエンジニアが必ず一度は壁にぶつかるのが、この
tar(ター)コマンドです。この記事では、Linux環境でファイルやディレクトリを圧縮・解凍(展開)する
tar コマンドの実践的な使い方を解説します。単なるオプション一覧の羅列ではなく、現場で必ず使う「黄金の組み合わせ(zxvf / zcvf)」や、解凍先ディレクトリの指定(-C)など、実務で迷わないための鉄則をまとめました。
1. 解凍(展開)の黄金パターン「tar -zxvf」
ネット上で配布されているLinux用ソフトウェアのほとんどは、.tar.gz という形式で圧縮されています。これを解凍(展開)するには、以下のコマンドを丸暗記しておけば間違いありません。
# tar -zxvf ファイル名.tar.gz
・
z:gzip形式(.gz)を扱う・
x:解凍(eXtract)する・
v:処理したファイル名を画面に詳細表示(Verbose)する・
f:対象のファイル名を指定(File)する※
f f オプションの直後には必ずファイル名が来なければなりません。tar -zxfv のように f の後ろに別のオプション文字を置くと、v をファイル名として解釈しようとしてエラーになります。慣例として f は一番最後に置くと覚えておくと安全です。
特定のディレクトリに解凍する(-C)
デフォルトでは、コマンドを実行した「現在のディレクトリ」に解凍されてしまいます。「/opt」や「/usr/local」など、別のディレクトリを指定して解凍したい場合は
-C(大文字のシー)オプションを追加します。これも実務で頻出する必須テクニックです。# /opt ディレクトリ配下に解凍する # tar -zxvf sample.tar.gz -C /opt/
psコマンドでプロセスを確認する方法|auxと-efの違いやgrep検索も
「サーバーが重いので、CPUやメモリを食い潰している原因のプログラムを特定したい」
Linuxサーバーを運用していると、システム内で現在どんなプログラム(プロセス)が動いているのかを確認する場面に必ず直面します。
この記事では、現在実行中のプロセスを表示する
ps コマンド の使い方を解説します。現場のエンジニアが必ず使う2つの定番オプション(
aux と -ef)の違いから、grep コマンドと組み合わせて特定のプロセスだけを抽出する実務テクニックまで、トラブル対応で絶対に役立つノウハウをまとめました。1. 現場で使うpsコマンドの「2大巨頭」
ps コマンドには非常に多くのオプションがありますが、実務で使うのは実質的に以下の2パターンだけです。この2つさえ覚えておけば現場で困ることはありません。パターンA: ps aux (BSD系オプション)
Linux界隈で最もポピュラーな組み合わせです。システム上で動いている「すべてのユーザー」の「すべてのプロセス」を、CPUやメモリの使用率も含めて詳細に表示します。(※ハイフンは付けません)# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 123456 4567 ? Ss 10:00 0:05 /usr/lib/systemd/systemd apache 12345 0.1 1.5 543210 34567 ? S 10:15 0:01 /usr/sbin/httpd -DFOREGROUND
kill コマンドを使う時に必要)・%CPU / %MEM: CPUとメモリの使用率
・COMMAND: 実行されているコマンド名
パターンB: ps -ef (System V系オプション)
もう一つの定番が-ef です。こちらもすべてのプロセスを表示しますが、親プロセス(PPID)の情報が表示されるため、プロセスの親子関係を調べたい時によく使われます。# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 10:00 ? 00:00:05 /usr/lib/systemd/systemd apache 12345 12344 0 10:15 ? 00:00:01 /usr/sbin/httpd -DFOREGROUND
【結論】どちらを使うべきか?
CPUやメモリの使用率も見たいならps aux を、プロセスの親子関係(誰がどのプログラムを起動したか)を追いたいなら ps -ef を使うのが現場のセオリーです。ping
■-- 文法 --■
ping (オプション) ホスト名、又はIPアドレス
例)
ping▲IPアドレスまたは、ホスト名
ネットワーク上のリモートホストにデータ(パケット)が送れるか疎通確認をする
※▲はスペースを表してます。
■ 説明
pingコマンドは、送信先に指定したホストへICMPパケットを送信し、
送信先ホストの反応の可否、ネットワークの返信時間などを測定するコマンドです。
主に、送信先ホスト、ネットワーク機器が正常に稼動しているか、
疎通確認するために使用されます。
Linuxのpingコマンドは、1秒おきにパケットを指定したリモートホストに
パケットを送信しますが、Windowsのようにデフォルトで4パケット送信して
終了するということはありません。
オプションを指定しない場合、ユーザーが割り込みキーでキャンセルしないと、
延々とパケットを送り続けるので注意が必要です。
※pingコマンドを終了させるには「Ctrl」+「c」キーを入力します。
但し、pingコマンドの結果から、疎通確認できない場合、疎通できない事は分かっても
実行結果だけから障害の原因を特定することは困難です。
リモートホスト全体が停止している場合や、途中経路の回線や機器トラブル、
自分のマシンのトラブルなど様々な原因が考えられます。
また最近では、ネットワーク負荷の軽減、セキュリティ保持の観点から
pingコマンドに応答を停止しているホストやルーター、スイッチなどがあります。
こうしたリモートホストにコマンドを実行しても応答が無いため、
事前に対象リモートホストがpingコマンドを受け付けるかの確認も必要です。
sort
テキストファイルをソート(昇順)する
■-- 文法 --■
sort (オプション) (開始位置 終了位置) ファイル名
例)
sort▲file.txt
ファイル内容をソート(昇順)する
※▲はスペースを表してます。
tailコマンドでログ監視する方法|tail -fの使い方やgrep連携も
「tail コマンドでファイルの末尾を表示できるのは知っているけど、オプションの使い分けが曖昧」
Linuxサーバーの運用保守で、ログファイルをリアルタイムに監視する場面は毎日のように訪れます。
この記事では、Linuxの
tail コマンドの基本的な使い方から、実務で最も重要な tail -f によるリアルタイム監視、grep との組み合わせによる特定ログの抽出、ログローテーションに対応する -F オプション、さらに journalctl -f との使い分けまでを解説します。pg
ファイルの内容を画面ずつ表示する
■-- 文法 --■
pg (オプション) ファイル名
例)
pg▲new_file.txt
「new_file.txt」のファイル内容を画面ずつ表示する
※▲はスペースを表してます。
rmdir
ディレクトリを削除する
■-- 文法 --■
rmdir (オプション) ディレクトリ名
例)
rmdir▲/home/pakira/dir
ディレクトリを削除します
※▲はスペースを表してます。
■ オプション
-p 指定されたディレクトリを強制的にすべて削除する但し、削除するディレクトリ内にファイルがない場合のみファイルが存在する場合は「rm」コマンドを使用する
pwd
rm
ファイル名を削除する
■-- 文法 --■
rm (オプション) ファイル名
例)
rm▲ -r▲pakira/
「/pakira」ディレクトリごと削除する
※▲はスペースを表してます。
