1. システム関連
1-1. バージョン確認
//AlmaLinux
$ cat /etc/almalinux-release
AlmaLinux release 9.1 (Lime Lynx)
//CentOS
$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
//redhat系
$ cat /etc/redhat-release
AlmaLinux release 8.9 (Midnight Oncilla)
$ ll /etc/redhat-release
lrwxrwxrwx. 1 root root 17 11月 16 2023 /etc/redhat-release -> almalinux-release
1-2. メモリ確認
$ free -h
total used free shared buff/cache available
Mem: 62G 3.0G 55G 658M 4.3G 58G
Swap: 127G 0B 127G
1-3. CPU情報
$ lscpu
アーキテクチャ: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
コアあたりのスレッド数:1
ソケットあたりのコア数:4
Socket(s): 1
NUMAノード: 1
ベンダーID: GenuineIntel
CPUファミリー: 6
:
:
2. ファイル操作関連
2-1. ディレクトリを再帰的に表示
$ ll -R
.:
合計 8
drwxrwxr-x 3 www www 4096 6月 20 2018 backup
drwxrwxr-x 2 www www 4096 4月 17 2018 bin
:
:
//ベタに出力したい場合
$ ll -d $(find `pwd`)
rwx------ 8 www www 4096 5月 25 12:27 /home/www
-rw------- 1 www www 17386 5月 25 01:46 /home/www/.bash_history
-rw-r--r-- 1 www www 18 9月 7 2017 /home/www/.bash_logout
:
:
2-2. 再帰的に処理する(chmod/chown/diff/grep)
//再帰的にchmod(パーミッションを変更)
$ chmod -R xxx . //全部
$ find . -type d -print | xargs chmod xxx //ディレクトリのみ
$ find . -type f -print | xargs chmod xxx //ファイルのみ
//再帰的にchown(所有者を変更)
$ chown -R xxx:xxx . //全部
$ find . -type d -print | xargs chown xxx:xxx //ディレクトリのみ
$ find . -type f -print | xargs chown xxx:xxx //ファイルのみ
//再帰的にdiff(比較)
$ diff -r hoge1 hoge2
//再帰的にgrep(文字検索)
$ grep -r todo: .
./posts/mac-tips.md:todo:Homebrew関連は独立してまとめる。
2-3. ディレクトリサイズを確認
//サブディレクトリも再起的に表示する
$ du -h /hoge
//指定ディレクトリだけ表示する
$ du -hs /hoge
//ワイルドカードも指定できる
$ du -hs /hoge/*
//深さを指定できる
$ du -h --max-depth=2 /hoge
2-4. ファイル/ディレクトリを圧縮/解凍
//hoge01.txtをhoge.zipに圧縮
$ zip hoge.zip hoge01.txt
//複数ファイルを圧縮
$ zip hoge.zip hoge01.txt hoge02.txt
//ワイルドカードも指定できる
$ zip hoge.zip hoge*.txt
//解凍
$ unzip hoge.zip
//ディレクトリを圧縮
$ zip -r hoge.zip hogedir
//パスワードを指定
$ zip -e hoge.zip hoge01.txt
$ zip -er hoge.zip hogedir
3. ネットワーク操作関連
3-1. ポート番号とサービス名の対応を確認
$ cat /etc/services
:
:
$ cat /etc/services | grep ^https
https 443/udp # http protocol over TLS/SSL
https 443/tcp # http protocol over TLS/SSL
3-2. firewalld
//サービスの操作
$ systemctl start firewalld.service //起動
$ systemctl stop firewalld.service //停止
$ systemctl status firewalld.service //状態確認:systemctl
$ firewall-cmd --state //状態確認:firewall-cmd
//自動起動
$ systemctl enable firewalld.service //有効化
$ systemctl disable firewalld.service //無効化
$ systemctl is-enabled firewalld.service //設定確認
//ゾーンの確認 ... 「アク=デフォ」しかやった事ない。「アク≠デフォ」の場合は要確認。
$ firewall-cmd --get-active-zones //アクティブゾーン
$ firewall-cmd --get-default-zone //デフォルトゾーン
//設定内容確認
$ firewall-cmd --list-all //デフォルトゾーン
$ firewall-cmd --list-all --permanent //デフォルトゾーン(恒久設定)
$ firewall-cmd --list-all-zones //全ゾーン
//許可サービスの追加・削除 ... --permanent無しは再起動後に戻る
$ firewall-cmd --add-service=http --zone=public --permanent //追加
$ firewall-cmd --remove-service=http --zone=public --permanent //削除
//許可ポートの追加・削除 ... --permanent無しは再起動後に戻る
$ firewall-cmd --add-port=postgres/tcp --permanent //サービス名で追加 @see 3-1.
$ firewall-cmd --add-port=12345/tcp --permanent //ポート番号で追加
$ firewall-cmd --remove-port=postgres/tcp --permanent //サービス名で削除
$ firewall-cmd --remove-port=12345/tcp --permanent //ポート番号で削除
//許可IPアドレスの追加・削除 ... --permanent無しは再起動後に戻る
firewall-cmd --add-source=x.x.x.x/x --zone=public --permanent //追加
firewall-cmd --remove-source=x.x.x.x/x --zone=public --permanent //削除
//ルールの追加・削除
$ firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address="x.x.x.x/x" port port=xxx protocol=tcp accept' --permanent
$ firewall-cmd --zone=public --remove-rich-rule='rule family=ipv4 source address="x.x.x.x/x" port port=xxx protocol=tcp accept' --permanent
//設定のリロード
$ firewall-cmd --reload
4. ユーザ/グループ操作関連
4-1. ユーザを管理
//ユーザ一覧
$ cat /etc/passwd | sort
//UserName:pwd:UID:GID:Comment:HomeDir:LoginShell
//普通に作られたユーザは/homeの下を見る
$ ll /home
//ユーザ作成
$ sudo useradd hoge
//パスワード設定
$ sudo passwd hoge
//ユーザ削除 -rオプションはホームディレクトリも削除
$ sudo userdel -r hoge
- ユーザの追加削除はrootが必要。
4-2. グループを管理
//グループ一覧
$ cat /etc/group
//GroupName:GroupPwd:GID:AffiliatedUsers
//指定ユーザの所属グループ
$ groups ユーザ名
//ユーザuserfugaをグループgrouphogeに追加する
$ sudo gpasswd -a userfuga grouphoge
//ユーザuserfugaをグループgrouphogeから削除する
$ sudo gpasswd -d userfuga grouphoge
- usermodコマンドでも変更できるけど、全所属グループを指定する必要があるのと、間違ってプライマリーグループを変更する可能性もあるのでgpasswdのがいいと思う。
- グループへの追加削除はrootが必要。
- グループの変更が反映されるのは次回ログインから。
9. その他
9-1. cron
$ crontab -l
05 01 01 * * /usr/bin/php /hoge/app/batch/logRotate.php
30 19 * * * /usr/bin/php /hoge/app/batch/backup.php
:
:
分 時 日 月 曜 コマンド 05 01 01 * * /usr/bin/php /hoge/app/batch/logRotate.php パラメタ 分 : 0-59 時 : 0-23 日 : 1-31 月 : 1-12 曜 : 0-7 (0|7=日曜) 指定方法 リスト : 0,15,30,45(分で指定した場合、15分に一度処理実行) 範 囲 : 1-5(曜で指定した場合、月~金に処理実行)
9-2. ftp
//ファイルを1個だけ転送するサンプル
$ cat ftp1.sh
#!/bin/sh
ftp -n <<END
open -xxx.xxx.xxx.xxx-
user -user- -password-
binary
prompt
lcd $1
put $2
END
$ ftp1.sh -転送元ディレクトリ- -転送ファイル-
ftp -n -nは自動ログインなし、ログインプロンプトの表示なし。 シェルスクリプトでftpするときの定番おまじない。 open -xxx.xxx.xxx.xxx- リモートホストに接続。 close openで接続したリモートホストから切断する。 quit/by/bye/exit ftpを終了 binary ファイル転送時に改行コード変換をしない。 対になるコマンドでascii(改行コード変換あり)がある。 今の時代、転送時に改行コードを変換はしない、binary一択。 ls -dir- リモートホストのファイルを一覧する。 cd -dir- リモートホストのディレクトリを移動する lcd -dir- ローカルマシンのディレクトリを移動する pwd リモートホストのカレントディレクトリを表示する。 mkdir リモートホストにディレクトリを作成する chmod リモートホストのファイルやディレクトリのアクセス権を指定する。 !*** ローカルマシンで任意のコマンド(***)を実行する get -rfile- [-lfile-] リモートホストのファイルをローカルマシンへ受信する。-lfile-は省略可。 put -lfile- [-rfile-] ローカルマシンのファイルをリモートホストへ送信する。-rfile-は省略可。 mget -rfiles- リモートホストの複数ファイルをローカルマシンへ受信する。-rfiles-はワイルドカード使用可。 mput -lfiles- ローカルマシンの複数ファイルをリモートホストへ送信する。-lfiles-はワイルドカード使用可。 user -user- -password- 指定ユーザ/パスワードでログイン。 prompt mget/mputしたときのプロンプトを抑止する。 シェルスクリプトでftpするときの定番おまじない。
9-3. scp
//基本形
$ scp [オプション] コピー元パス 保存先パス
//鍵を指定してコピー
$ scp -i ~/.ssh/id_xxxxx ~/hoge [ユーザ]@[ホスト]:~/
//.ssh/configを使用してコピー
$ scp ~/hoge [config定義名]:~/
9-4. dnf
//パッケージをインストールする
$ sudo dnf install hoge
//パッケージをアンインストールする
$ sudo dnf remove hoge
$ sudo dnf erase hoge
//インストール済みパッケージでアップデートを確認する
$ dnf check-update
//パッケージを更新する
$ sudo dnf upgrade hoge
//パッケージを指定しなかった場合はインストール済みの全パッケージを更新する
$ sudo dnf upgrade
//指定した文字列が名前や概要に含まれているパッケージを一覧表示する
$ dnf search 文字列
//キャッシュを更新してからsearchする
$ dnf search 文字列 --refresh
//指定した名前のパッケージを一覧表示する
$ dnf list パッケージ名
//名前の末尾が"hoge"であるパッケージを一覧表示する
$ dnf list "*hoge"
//インストール済みのパッケージを一覧表示する
$ dnf list installed
//名前の末尾が"hoge"で、インストール済みのパッケージを一覧表示する
$ dnf list "*hoge" --installed
//パッケージの情報を表示する(listをinfoに読み替えればオッケー)
$ dnf info ...
//現在有効になっているリポジトリを一覧表示する
$ dnf repolist --enabled
//現在無効になっているリポジトリを一覧表示する
$ dnf repolist --disabled
//現在利用可能なリポジトリを全て表示する
$ dnf repolist --all
//指定したリポジトリを有効にする
$ sudo dnf config-manager --enable リポジトリ名
//指定したリポジトリを無効にする
$ sudo dnf config-manager --disable リポジトリ名
参考
368回【 dnf 】コマンド(基礎編)――ソフトウェア(パッケージ)をインストールする
369回【 dnf 】コマンド(応用編その1)――ソフトウェア(パッケージ)を探す
:
:
374回【 dnf 】コマンド(応用編その6)――リポジトリを有効化/無効化する
375回【 dnf 】コマンド(応用編その7)――リポジトリを追加する
376回【 dnf 】コマンド(応用編その8)――パッケージを更新する
377回【 dnf 】コマンド(応用編その9)――パッケージをダウングレードする