ファイルの中身を表示するコマンド。
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 以下略
passwd
というファイルの中身を表示する。
CentOSサーバーのユーザー一覧を確認するときに使う。
自分で作成したユーザー以外にも、システム備付のユーザーが大量に表示される。
ファイル・ディレクトリのグループを変更するコマンド。
chgrp -R nginx /etc/phpMyAdmin
phpMyAdmin
ディレクトリおよびその子孫ディレクトリのグループをnginx
に変更している。
ファイル・ディレクトリのパーミッションを変更する。
777
のように数値でアクセス権を設定する。
100の位
が所有者
10の位
がグループ
1の位
がその他
のユーザー4
は読み込み権限
2
は書き込み権限
1
は実行権限
7
= 4 + 2 + 1
なので、読み・書き・実行
ができる。
5
= 4 + 1
なので、読み・実行
ができる。
のような仕組み。
chmod 700 xxx
xxx
(ファイルまたはディレクトリ)のパーミッションを700
に変更。
chmod -R 700 xxx
-R
オプションにより、xxx
ディレクトリの中のファイル・ディレクトリも一括でパーミッションを変更。
オプション | 説明 |
---|---|
u | user(所有者) |
g | group(所有グループ) |
o | others(所有者・所有グループ以外のユーザー) |
a | all(u, g, oすべて) |
省略 | a を指定したことに |
オプション | 説明 |
---|---|
+ | 権限を追加 |
- | 権限を削除 |
= | 指定した権限にする |
オプション | 説明 |
---|---|
r | 読み込み権限 |
w | 書き込み権限 |
x | 実行権限 |
s | SUID(Set User ID)権限 |
sはxよりも上位の権限。
rwx
は、読み・書き・実行
だが、
rws
は、読み・書き・SUIDで実行
。
/usr/bin/su
や/usr/bin/sudo
などのファイルはs
権限が設定されており
root
ユーザー以外でsu
やsudo
コマンドを実行しても
root
ユーザーが代理実行するような設定になっている。
chmod o+x xxx
othersに実行権を追加。
chmod o-x xxx
othersから実行権を削除。
ファイル・ディレクトリの所有者を変更する。
chown -R nginx:nginx /home/user1/xxx
/home/user1/xxx
以下のすべてのディレクトリとファイルの所有者を nginx:nginx に変更。
-R
はリカーシブ。指定ディレクトリ配下のすべてのディレクトリ・ファイルに対してchownを行う。
-R
を付けなければ、指定したディレクトリまたはファイルだけをchwon。
cp aaa bbb
aaa
というファイルをコピーして、bbb
というファイルを作成する。
cp -r aaa bbb
aaa
というディレクトリをコピーして、bbb
というディレクトリを作成する。
-r
オプションがないと、
cp: ディレクトリ `aaa' を省略しています
というエラーが出てコピーに失敗する。
cp -r aaa bbb
bbb
というディレクトリが元々ある場合、bbb/aaa
というディレクトリが作成される。
cron
でコマンドを定期実行。
crontab -e
crontab -l
curl(カール)とは、指定したURLからデータを取得するためのコマンド。
client for URLの略。
curl -OL https://ja.wordpress.org/wordpress-5.7.2-ja.tar.gz
https://ja.wordpress.org/wordpress-5.7.2-ja.tar.gz
というURLへアクセスしてデータをダウンロード、
wordpress-5.7.2-ja.tar.gz
というファイルへ保存する。
オプションなしでURLを指定すると、標準出力に取得したデータが表示される。
-O
オプションを指定すると、ファイルに保存される。
-L
オプションを指定すると、URLにリダイレクトが含まれていた場合に、リダイレクト後のURLからデータを取得できる。
curl -sS -o 出力先PATH http://対象のURL
-s
は、silentオプション。
経過を出力しなくなる。
-sS
は、silentだけどエラーだけは出力するためのオプション。
curl -I http://example.com
curl -I
でリクエストヘッダの中身を見られる。
nginxの.confの中に
add_header $document_root$fastcgi_script_name $document_root$fastcgi_script_name
のように書けば
$document_root$fastcgi_script_name
の値をヘッダから確認できる。
日付と時刻を表示するコマンド。
date
2021年 7月 2日 金曜日 21:11:47 JST
date "+%Y_%m%d"
2021_0702
ファイルをブロック単位でコピーする。
サイズを指定して空のファイルを作成したり、既存のファイルを上書きしたりする。
dd if=/dev/zero of=/swapfile bs=1M count=4096
4096+0 レコード入力 4096+0 レコード出力 4294967296 バイト (4.3 GB) コピーされました、 38.3469 秒、 112 MB/秒
if
はinput file(入力ファイル)、
of
はoutput file(出力ファイル)。
bs
はblock size、
count
は、ブロック数。
/dev/zero
は中身がnull(0x00)のファイル。
dd if=/dev/zero of=/swapfile bs=1M count=4096
は、
/dev/zero
というファイルを元に、
/swapfile
というファイルを作成している。
swapfile
はサイズが4096MB(4GB)で、
中身が0000……
(数字の0ではなく、nullの0)で埋め尽くされている。
/swapfile
の部分に既存のファイルを指定すれば、ファイルの中身にデータを上書きして、ツールなどを使った復旧が不可能なようにファイルの中身を消し去ることができる。
df -h
ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 988M 0 988M 0% /dev tmpfs 1000M 0 1000M 0% /dev/shm tmpfs 1000M 8.5M 991M 1% /run tmpfs 1000M 0 1000M 0% /sys/fs/cgroup /dev/mapper/centos-root 14G 5.1G 8.4G 38% / /dev/sda1 1014M 198M 817M 20% /boot tmpfs 200M 0 200M 0% /run/user/1000
ディスク使用量等を確認する
du . -m
78 ./xxx 78 .
ディレクトリの容量を調べる
du
の後ろの.
の部分にはディレクトリを指定する
デフォルトでは単位がKBで結果が表示されるが-m
オプションをつけるとMBになる
env
環境変数を一覧で表示する。
ファイルやディレクトリを検索。
オプション | 説明 |
---|---|
-type d | ディレクトリだけ検索 |
-type f | ファイルだけ検索 |
-exec command {} + | find の実行結果に対して、さらに別のコマンドを実行{} の部分に find の実行結果が入る+ はコマンドをまとめて実行するオプション |
-mtime | ファイルのデータが最後に変更された日付で絞り込み |
find .
カレントディレクトリを起点に、ディレクトリとファイルを検索。
find /aaa/bbb
指定したパスを起点に、ディレクトリとファイルを検索。
find /home/user1/xxx -type d
ディレクトリだけを一覧表示。
find /home/user1/xxx -type f
ファイルだけを一覧表示。
find . -type f -name "*.txt"
-name
オプションで、ファイル名を指定する。
ワイルドカードを使うと、特定の拡張子だけを検索できる。
find /home/user1/xxx -type d -exec chmod 700 {} +
ディレクトリだけをリストアップして、chmod
を実行。
find
の実行結果が{}
に代入されて、chmod
が実行される。
末尾の+
により、コマンドがまとめて実行される。
find
の結果により、
chmod 700 aaa
chmod 700 bbb
chmod 700 ccc
のような3つのコマンドが実行されるような場合に
chmod 700 aaa bbb ccc
のようにコマンドが統合してくれる。
(処理が速くなる)
find /home/user1/xxx -type f -exec chmod 600 {} +
ファイルだけをリストアップして、chmodを実行。
find . -mtime -3
現在~3日前(0時間~72時間前)に変更されたファイルだけを検索。
find . -mtime 3
ちょうど3日前(72時間~96時間前)に変更されたファイルだけを検索。
find . -mtime +3
更新日が3日超より古い(96時間前~)ファイルだけを検索。
find . -type f -exec grep xxx {} +
カレントディレクトリを起点にファイルを検索、
grep
を使いxxx
という文字が含まれる行(とそのファイル名)を表示。
firewall-cmd --list-all
firewallのサービス・ポートなどの解放状況を表示。
public (active) target: default icmp-block-inversion: no interfaces: enp0s3 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
デフォルトでは、
services: dhcpv6-client ssh
ports
は空欄となっているはず。
表示されているもののみ許可、表示されていないものはポートがブロックされている。
services
にssh
とあれば、ssh
サービスは許可している。
SSH
が何番ポートで動いているかは
/usr/lib/firewalld/services/ssh.xml
というファイルの中で定義されている。
(デフォルトでは22
番ポート)
firewall-cmd --get-services
firewalldで管理できるサービス一覧を表示。
ブロックされているものも含めて全サービスを確認できる。
firewall-cmd --remove-service=dhcpv6-client --permanent
dhcpv6-client
をブロックする。
(firewalld
の許可対象から削除する)
–permanent
オプションを指定しないと、サーバー再起動で設定がリセットされるので注意。
firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent firewall-cmd --add-service=ftp --permanent
http
・https
・ftp
を許可する。
firewall-cmd --reload
firewalld
の設定をリロード。
リロードしないと、–remove-service
や–add-service
で、削除・追加したものが有効にならない。
指定した文字列を含む行を抽出するコマンド
grep xxx example.txt
example.txt
というファイルの中で、xxx
という文字が含まれる行だけを表示する
|
を使って、前のコマンドの実行結果をフィルターする
yum list installed | grep php
yum list installed
の実行結果(数百行ある)から、php
という文字が含まれる行だけを表示する
ps auxf | grep -e php-fpm -e PID
ps auxf
の実行結果からphp-fpm
またはPID
を含む行だけを表示
ps auxf | grep -e php-fpm
だけだと先頭のヘッダー行が見えないのでどの列が何の項目なのか分からない
PID
を含む行も表示して、項目名を出力させると見やすくなる
ファイルを圧縮・解凍するコマンド。
gzip xxx
xxx
というファイル・ディレクトリを圧縮。
xxx
がなくなり、xxx.gz
というファイルが生成される。
gzip -d xxx.gz
xxx.gz
というファイルを解凍。
xxx.gz
がなくなり、xxx
とういファイルまたはディレクトリが生成される。
id user1
user1
というユーザーのグループ名などを確認する。
uid=1000(user1) gid=1000(user1) groups=1000(user1),10(wheel)
uid
がユーザーIDとユーザー名、gid
がグループIDとグループ名。
ユーザーに対して複数のグループを割り当てることが可能で、その場合はgroups
に複数のグループが表示される。
ip a
IPアドレスを確認する。
localectl status
System Locale: LANG=ja_JP.UTF-8 VC Keymap: jp X11 Layout: jp
System Locale
がLANG=ja_JP.UTF-8
以外になっている場合は、以下のコマンドを実行
localectl set-locale LANG=ja_JP.UTF-8
ロケールを日本語(ja_JP.UTF-8)に設定
VC Keymap
がjp106
以外になっていたら、jp106
に変更する
localectl list-keymaps | grep jp
上記のコマンドで選択可能なキーマップの一覧を表示
jp jp-OADG109A jp-dvorak jp-kana86 jp106
一覧にjp106
があることを確認
一般的な日本語キーボードの配列はjp106
というやつなので、キーマップをjp106
に変更する
localectl set-keymap jp106 localectl status
System Locale: LANG=ja_JP.UTF-8 VC Keymap: jp106 X11 Layout: jp X11 Model: jp106 X11 Options: terminate:ctrl_alt_bksp
上記のような表示になっていればOK
ディレクトリを作成するコマンド。
mkdir xxx
カレントディレクトリにxxx
というディレクトリを作成する。
xxx
は任意の文字列。
mkdir /home/user1/xxx
/home/user1/
というディレクトリの下に、xxx
というディレクトリを作成する。
mkdir -p /aaa/bbb/ccc
-p
オプションを付けると、親ディレクトリもまとめて作成していれる。
/aaa
ディレクトリを作成、
/aaa/bbb
ディレクトリを作成、
/aaa/bbb/ccc
ディレクトリを作成。
nmcli(Network Manager Command Line Interface)は、ipの設定などを行うコマンド
ネットワークデバイスの状態を確認するコマンド
nmcli device status
enp0s3 ethernet connected enp0s3 enp0s8 ethernet disconnected --
上記の例だと、ネットワークデバイスが2種類刺さっていて
enp0s3は動いているけど
enp0s8の方は機能していない
nmcli connection show
NAME UUID TYPE DEVICE enp0s3 xxx-xx-xx-xxx ethernet enp0s3 enp0s8 yyy-yy-yy-yyy ethernet --
enp0s8
のDEVICE
が–
となっていて機能していないことがわかる
コネクションを削除するコマンド
nmcli connection delete xxx-xx-xx-xxx
xxx-xx-xx-xxx
の部分は
nmcli connection show
のコマンドで確認した
UUID
の値
コネクションを作成するコマンド
nmcli connection add type ethernet ifname enp0s8 con-name enp0s8
enp0s8
のDEVICE
で新しいコネクションを作成
NAME
にenp0s8
を設定
nmcli connection modify enp0s8 ipv4.method manual ipv4.addresses 192.168.100.2/24
enp0s8
のネットワークで、IPアドレス(v4)に192.168.100.2
を設定
IPアドレスは各自の環境に合わせて設定する
VirtualBoxを使用している場合
ホストOSのVirtualBox Host-Only Network
のIPアドレスが192.168.100.1
ならば
enp0s8
には192.168.100.2
~192.168.100.254
の間で好きなIPを設定できる
nmcli device status
enp0s3 ethernet connected enp0s3 enp0s8 ethernet connected enp0s8
IPアドレスを設定したことにより
enp0s8
がdisconnected
からconnected
に変わっていればOK
passwd user1
user1
というユーザーのパスワードを設定。
ユーザー user1 のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。
新しいパスワード
の入力を求められるので、任意の文字列を設定する。
reboot
サーバーを再起動する。
rm -rf /home/user1/xxx
指定したファイル・ディレクトリを一括削除。
ディレクトリの場合は、ディレクトリ内のディレクトリ・ファイルもまとめて削除する。
文字列を置換するコマンド。
sed -i -e "s/aaa/bbb/g" test.txt
test.txt
というファイルの中で、aaa
という文字をbbb
という文字に置き換える。
-i
はinplace(直接編集)オプション。
-i
がないと、置換後のものがコンソールに表示される。(ファイルの中身は変化しない)
-i
があると、文字列を置換してファイルの中身を書き換える。
-e
の後ろに“s/元の文字列/置き換え後の文字列/g”
というルールを書く。
末尾のg
がないと、各行の最初にマッチした要素だけ置き換え。
末尾のg
があると、全てのマッチした要素を置き換え。
127.0.0.1:9000
という文字列を
/var/run/php-fpm/php-fpm.sock
という文字に置き換えるようなケース。
sed -i -e "s/127.0.0.1:9000//var/run/php-fpm/php-fpm.sock/g" www.conf
上記のように書いてしまうと、
どれが区切り記号の/
で、どれが置換文字列の/
なのか、システムは判別できない。
実は、区切り記号には、/
以外も使える。
@
や!
などを区切り記号として使う。
sed -i -e "s@127.0.0.1:9000@/var/run/php-fpm/php-fpm.sock@g" www.conf
上記のように書くと、
@
は区切り記号として認識され、
/
はただの文字として扱われる。
“s@元の文字列@置き換え後の文字列@g”
区切り記号は、改行とバックスラッシュ以外で、元の文字列と置換後の文字列に含まない記号ならば何でもOK。
shutdown
サーバーをシャットダウンする。
source ~/.bashrc
.bashrc
への変更を反映させる。
ユーザーを変更するコマンド。
su
su
とだけ打つと、root
ユーザーに切り替わる。
パスワード入力を求められるので、root
のパスワードを入力する。
su user1
su
の後ろにユーザー名を指定すると、そのユーザーに切り替わる。
サービスの状態を確認したり、起動・停止・再起動するコマンド。
systemctl status firewalld
firewalld
が起動しているか、自動起動になっているかなどを確認。
systemctl enable firewalld
firewalld
を自動起動に設定する。
次回のサーバー起動からfirewalld
が自動起動するようになる。
systemctl start firewalld
firewalld
を起動する。
ファイルの末尾を表示する
ログファイルなど、行数が多すぎるファイルの末尾の部分だけを見るために使う
tail xxx.txt
xxx.txt というファイルの末尾の10行だけが画面に出力される
-n
オプションで出力する行数を指定できる
tail -n 20 xxx.txt
上記の場合は、xxx.txt
というファイルの末尾20行を表示
(オプションを指定しない場合、デフォルトの表示は10行)
-f
オプションをつけるとファイルを継続して監視できる
(ログファイルが更新された場合など、最新の情報を表示できる)
tail -f -n 20 xxx.txt
上記の場合は、xxx.txt
というファイルの末尾20行を、常に最新の状態で表示
終了する場合はCtrl + C
複数のファイルを1つにまとめる(アーカイブする)コマンド。
普通は圧縮・解凍も同時に行う。
tar --version
オプション | 説明 |
---|---|
c | createの略 アーカイブを作成する |
x | extractの略 アーカイブを解凍する |
v | verboseの略 圧縮・解凍の対象になったファイル・ディレクトリ一覧を出力する |
f | fileの略 ファイル名を指定する |
z | gzipの略 gzipで圧縮・解凍(.tgzを圧縮・解凍) |
j | bzip2で圧縮・解凍(.tar.bz2を圧縮・解凍) |
J | xzで圧縮・解凍(.tar.xzを圧縮・解凍) |
tar czvf xxx.tgz yyy
yyy
というファイルを圧縮してxxx.tgz
を作成。
tar czvf xxx.tgz yyy zzz
のように、複数のファイル・ディレクトリ(yyy zzz)を指定することも可能。
tar xzvf xxx.tgz
xxx.tgz
というファイルを解凍。
bzip2
はgzip
よりも圧縮率が高い。
gzip
よりも圧縮・解凍に時間はかかるが、容量が小さくなる。
ディスクスペース節約や、別のサーバーにファイル転送するときに有利。
tar cjvf xxx.tar.bz2 yyy
yyy
をbzip2
で圧縮、xxx.tar.bz2
というファイルを作成する。
tar xjvf xxx.tar.bz2
xxx.tar.bz2
をbzip2
で解凍する。
xz
はbzip2
よりもさらに圧縮率が高い。
xz
が使えるのは、tar バージョン1.22
以降。
tar cJvf xxx.tar.xz yyy
yyy
をxz
で圧縮、xxx.tar.xz
というファイルを作成する。
tar xJvf xxx.tar.xz
xxx.tar.xz
をxz
で解凍する。
tar cJvf xxx.tar.xz aaa bbb ccc.txt
aaa
とbbb
とccc.txt
をxz
で圧縮、xxx.tar.xz
というファイルを作成する。
ファイルへの出力と、コンソールへの出力を同時に行うコマンド。
pwd | tee -a test.txt
/home/user1
コンソールにpwd
の結果が表示され、かつtest.txt
というファイルの中にも同じ結果が書き込まれる。
cat test.txt
/home/user1
-a
は追記オプション。
test.txt
がもともと存在するファイルの場合、
-a
オプションなしだと、test.txt
の中身は上書きされ、/home/user1
の1行だけになる。
-a
オプションありだと、test.txt
の中身はそのままで、末尾に/home/user1
が追加される。
pwd
だと、コンソールにしか出力されない。
pwd > test.txt
だと、ファイルには出力されるが、コンソールには出力されない。
pwd | tee test.txt
だと、ファイルとコンソールの両方に出力される。
pwd
は例として挙げただけなので、pwd
の部分が他のコマンドでも使える。
タイムゾーンの確認・変更などをするコマンド
timedatectl
Local time: 日 2021-07-25 08:24:08 JST Universal time: 土 2021-07-24 23:24:08 UTC RTC time: 土 2021-07-24 23:24:07 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no
Time zone
がAsia/Tokyo (JST, +0900)
以外になっていたら以下のコマンドを実行
timedatectl set-timezone Asia/Tokyo
タイムゾーンをAsia/Tokyo
に変更できる
timedatectl list-timezones | grep Tokyo
timedatectl list-timezones
でタイムゾーンに設定できるキーワード一覧を表示できる
大量のテキストが表示されるのでgrepで表示を絞り込んだほうがいい
uname
Linux
uname -m
x86_64
useradd user1
user1
という名前のユーザーを追加。
usermod -aG wheel user1
user1
というユーザーを、wheel
というグループに追加。
wheel
というのは、sudo
コマンドが使える管理者グループ。
visudo
visudo
を実行すると、テキストエディタが起動し、/etc/sudoers.tmp
というファイルを開いた状態になる。
/etc/sudoers.tmp
は、sudo
コマンドの権限管理をするファイル。
yum --version
yum update -y
yumで管理しているパッケージを一括でアップデート。
yum update --enablerepo=remi,remi-php74 -y
リポジトリを指定して、既存のパッケージを一括アップデート。
yum list installed | grep xxx
yumでインストール済みのパッケージを表示。
grep で結果を絞り込み。
zip -r xxx.zip yyy
yyy
というディレクトリを圧縮してxxx.zip
というファイルを生成している
unzip xxx.zip
xxx.zip
というファイルを解凍して、xxx
というディレクトリが生成される