Linux
LinuxとはLinuxカーネルを利用したUnix系OSです。
コマンドのオプション
コマンドに指定できるオプションには、POSIX と GNU の2種類の形式がある。
POSIX の場合、オプションはハイフンで始まり、アルファベット1文字で指定する。
command -a -c
POSIX オプションに引数を指定する場合、オプションとその引数の間には空白を入れる。
command -a -b foo -c
複数の POSIX オプションを指定する場合、ひとつに纏めて指定できる。
command -ac
ただし、引数を伴う POSIX オプションをひとつに纏めて指定することはできない。
command -ac -b foo
コマンドに引数を指定する場合、全てのオプションはコマンド引数より先に指定する必要がある。
command -a -b foo -c /home/tsuka
GNU の場合、オプションはハイフン2つから始まり、複数のアルファベットで指定する。
command --foo --baz
GNU オプションに引数を指定する場合、オプションとその引数の間には等号記号を入れる。
command --foo --bar=foobar --baz
GNU オプションをサポートしている全てのコマンドには、--help
及び --version
オプションを指定できる。
command --help
ash
Almquist shell (ash) とは、Bourne shell (sh) の上位互換シェルである。BSDや組込みLinuxで使用されている。
dash
Debian Almquist shell (dash) とは、Almquist shell (ash) の上位互換シェルである。Debian系のLinuxディストリビューションで使用されている。
ksh
KornShell (ksh) とは、Bourne shell (sh) の上位互換シェルである。
zsh
Z shell (zh) とは、Bourne shell (sh) の上位互換シェルである。
fuser
ファイルまたはソケットを使用しているプロセスを識別する。
- PID
- ファイルまたはファイルシステムを使用しているプロセスのプロセスID
次に示すオプションを fuser コマンドに指定できる。
- -a
- コマンドラインで指定されたすべてのファイルを表示する。--all オプションと同じ。
$ fuser -a /home/tsuka /home/tsuka: 7c
- --all
- コマンドラインで指定されたすべてのファイルを表示する。-a オプションと同じ。
- -k
- 指定したファイルにアクセスしているプロセスを終了させる。--kill オプションと同じ。
- --kill
- 指定したファイルにアクセスしているプロセスを終了させる。-k オプションと同じ。
- -i
- プロセスを強制終了する前に、ユーザーに確認を求める。-k 又は --kill オプションと共に指定する。--interactive オプションと同じ。
- --interactive
- プロセスを強制終了する前に、ユーザーに確認を求める。-k 又は --kill オプションと共に指定する。-i オプションと同じ。
- -l
- 利用可能なシグナル名を一覧表示する。--list-signals オプションと同じ。
$ fuser -l HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
- --list-signals
- 利用可能なシグナル名を一覧表示する。-l オプションと同じ。
- -u
- 各PIDにプロセス所有者のユーザ名を付加する。--user オプションと同じ。
- --user
- 各PIDにプロセス所有者のユーザ名を付加する。-u オプションと同じ。
- -v
- プロセスはpsのようなスタイルで表示される。PID、USER、COMMANDの各フィールドは、psと同様である。--verbose オプションと同じ。
$ fuser -av /home/tsuka USER PID ACCESS COMMAND /home/tsuka: tsuka 7 ..c.. bash
- --verbose
- プロセスはpsのようなスタイルで表示される。PID、USER、COMMANDの各フィールドは、psと同様である。-v オプションと同じ。
- -V
- バージョン情報を表示する。--version オプションと同じ。
- --version
- バージョン情報を表示する。-V オプションと同じ。
lsof
オープンしているファイルを一覧表示する。
- -?
- ヘルプを表示する。
- -h
- ヘルプを表示する。
- -n
- ホスト名を表示しない。
$ lsof
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE NODE NAME
init 1 root cwd DIR 0,2 4096 2533274790450951 /
init 1 root rtd DIR 0,2 4096 2533274790450951 /
init 1 root txt REG 0,2 632096 3377699720582928 /init
Ubuntuのディレクトリ構成を次に示す。
- etc
- dev
- home
- mnt
- opt
- proc
- tmp
- usr
- bin
- lib
- local
- sbin
- var
- log
/etc/sysctl.conf
Linux カーネル・パラメータを変更するには、/etc/sysctl.conf ファイルを編集する。
Parameter | Desctiption |
---|---|
kernel.sem | セマフォに関するパラメータ |
kernel.shmmax | 共有メモリセグメントの最大サイズ |
net.ipv4.tcp_rmem | TCPソケット受信バッファのサイズ |
net.ipv4.tcp_wmem | TCPソケット送信バッファのサイズ |
net.ipv4.tcp_windows_scaling | TCPウィンドウスケーリングの有効/無効 |
net.core.rmem_default | TCPソケット受信バッファのデフォルトサイズ |
net.core.wmem_default | TCPソケット送信バッファのデフォルトサイズ |
net.core.rmem_max | TCPソケット受信バッファの最大サイズ |
net.core.wmem_max | TCPソケット送信バッファの最大サイズ |
/etc/sysctl.conf ファイルを編集した後、再起動するか、次のコマンドを実行する。
# /sbin/sysctl -p
kernel.sem
セマフォに関する4つのパラメータを以下の形式で指定する。
kernel.sem = SEMMSL SEMMNS SEMOPS SEMMNI
Parameter | Description |
---|---|
SEMMSL | セマフォ集合ごとのセマフォ数の最大値 |
SEMMNS | システム全体でのすべてのセマフォ集合におけるセマフォ数の制限 |
SEMOPS | semop(2)コールに指定されるオペレーション数の最大値 |
SEMMNI | システム全体でのセマフォ識別子の最大値 |
net.ipv4.tcp_rmem
TCPソケット受信バッファのサイズを以下の形式で指定する。
net.ipv4.tcp_rmem = min default max
- min
-
TCPソケット受信バッファの最小サイズを指定する。
- default
-
TCPソケット受信バッファのデフォルトサイズを指定する。net.core.rmem_defaultが設定されている場合でも、こちらの方が優先される。
- max
-
TCPソケット受信バッファの最大サイズを指定する。net.core.rmem_maxが設定されている場合、net.core.rmem_maxの方が優先される。
net.ipv4.tcp_wmem
TCPソケット送信バッファのサイズを以下の形式で指定する。
net.ipv4.tcp_wmem = min default max
- min
-
TCPソケット送信バッファの最小サイズを指定する。
- default
-
TCPソケット送信バッファのデフォルトサイズを指定する。net.core.wmem_defaultが設定されている場合でも、こちらの方が優先される。
- max
-
TCPソケット送信バッファの最大サイズを指定する。net.core.wmem_maxが設定されている場合、net.core.wmem_maxの方が優先される。
chmod
chmod (change mode) コマンドを使って、ファイルやディレクトリのパーミッションを変更できる。
アカウント | user | group | other | ||||||
モード | r | w | x | r | w | x | r | w | x |
2進数 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
8進数 | 7 | 5 | 5 |
$ chmod 0755 bin
/etc/hostname
/etc/hostname はホスト名を設定するファイルである。
$ cat /etc/hostname
sakura
/etc/hosts
/etc/hosts は各ホスト名のIPアドレスを設定するファイルである。
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 sakura
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
/etc/issue
/etc/issue はLinuxディストリビューションに関する情報が格納されているファイルである。
$ cat /etc/issue
Linux Mint 20 Ulyana \n \l
/etc/os-release
/etc/os-release はLinuxディストリビューションに関する詳細な情報が格納されているファイルである。
$ cat /etc/os-release
NAME="Linux Mint"
VERSION="20 (Ulyana)"
ID=linuxmint
ID_LIKE=ubuntu
PRETTY_NAME="Linux Mint 20"
VERSION_ID="20"
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
VERSION_CODENAME=ulyana
UBUNTU_CODENAME=focal
/etc/profile
/etc/profile とは、どのログインユーザでも共通の処理を記述したスクリプトシェルである。ログインシェルがshまたはbashの場合、ユーザがログインしたとき自動的に実行される。
/dev/null
特殊なデバイスとして、ヌルデバイス(/dev/null)を指定することもできます。出力先とした場合、何も出力しないのと同義になります。入力元とした場合、常に EOF が入力されます。
$ echo hello > /dev/null
標準出力をヌルデバイスにリダイレクトした場合、/dev/nullというファイルに出力するのではなく、どこにも出力しないことになります。
rsyslog
システムログとは、システムの動作状態の記録である。ログの多くは /var/log
ディレクトリに保存される。システムログにはfacilityとpriorityの2つの分類がある。
facility | 説明 |
---|---|
auth、security | セキュリティ、認証 |
authpriv | セキュリティ、認証(プライベート) |
cron | cron |
daemon | デーモン |
kern | カーネル |
lpr | プリンタ |
メール | |
news | NetNews |
syslog | syslog自身のメッセージ |
user | ユーザアプリケーション |
uucp | UUCP |
local0 | 独自に利用できるfacility |
local1 | |
local2 | |
local3 | |
local4 | |
local5 | |
local6 | |
local7 |
priority | 説明 |
---|---|
debug | デバッグ |
info | 情報 |
notice | 重要 |
warning | 警告 |
err、error | エラー |
crit | 重大なエラー |
alert | すぐに対処が必要 |
emerg、panic | システムが不安定な状態 |
参考文献
IEEE and The Open Group (2018) Utility Conventions
Free Software Foundation, Inc. (2020) Standards for Command Line Interfaces