Linux

LinuxとはLinuxカーネルを利用したUnix系OSです。

目次

  1. シェル
    1. sh
    2. ash
    3. bash
    4. csh
    5. dash
    6. ksh
    7. zsh
  2. コマンド
    1. オプション
    2. 正規表現
    3. apt
    4. apt-get
    5. Atom
    6. awk
    7. basename
    8. bzcmp
    9. bzdiff
    10. bzegrep
    11. bzfgrep
    12. bzip2
    13. bzless
    14. bzmore
    15. cat
    16. chmod
    17. cmp
    18. code (Visual Studio Code)
    19. curl
    20. cut
    21. date
    22. df
    23. diff
    24. dirname
    25. dpkg
    26. du
    27. echo
    28. egrep
    29. expr
    30. fgrep
    31. file
    32. find
    33. ftp
    34. fuser
    35. gcc
    36. gcore
    37. gdb
    38. getconf
    39. Git
    40. grep
    41. groupadd
    42. groupdel
    43. groupmod
    44. gunzip
    45. gzip
    46. hostname
    47. ifconfig
    48. ipcs
    49. iptables
    50. julia
    51. kill
    52. less
    53. ld
    54. ls
    55. lsof
    56. man
    57. more
    58. mount
    59. netstat
    60. nohup
    61. passwd
    62. perl
    63. ps
    64. ping
    65. pstree
    66. rgrep
    67. route
    68. rpm
    69. rsync
    70. script
    71. sed
    72. seq
    73. shutdown
    74. su
    75. Subversion
    76. sudo
    77. tar
    78. top
    79. traceroute
    80. traceroute6
    81. uname
    82. uncompress
    83. useradd
    84. userdel
    85. usermod
    86. uuidgen
    87. vi
    88. visudo
    89. vim
    90. vmstat
    91. yum
    92. zcat
    93. zcmp
    94. zdiff
    95. zegrep
    96. zfgrep
    97. zless
    98. zmore
  3. デーモン
    1. crontab
    2. sshd
    3. rsyslog
  4. システムコール
    1. accept
    2. bind
    3. close
    4. connect
    5. creat
    6. dup
    7. execve
    8. fcntl
    9. fork
    10. fstat
    11. listen
    12. lstat
    13. open
    14. openat
    15. poll
    16. read
    17. recv
    18. recvfrom
    19. send
    20. sendto
    21. socket
    22. stat
    23. time
    24. write
  5. errno
    1. EPERM
    2. ENOENT
    3. ESRCH
    4. EINTR
    5. EIO
    6. ENXIO
    7. E2BIG
    8. ENOEXEC
    9. EBADF
    10. ECHILD
    11. EAGAIN
    12. ENOMEM
    13. EACCESS
    14. EFAULT
    15. ENOTBLK
    16. EBUSY
    17. EEXIST
    18. EXDEV
    19. ENODEV
    20. ENOTDIR
    21. EISDIR
    22. EINVAL
    23. ENFILE
    24. ENOTTY
    25. ETXTBSY
    26. EFBIG
    27. ENOSPC
    28. ESPIPE
    29. EROFS
    30. EMLINK
    31. EPIPE
    32. EDOM
    33. ERANGE
    34. ENOMSG
    35. EIDRM
    36. ECHRNG
    37. EL2NSYNC
    38. EL3HLT
    39. EL3RST
    40. ELNRNG
    41. EUNATCH
    42. ENOCSI
    43. EL2HLT
    44. EDEADLK
    45. ENOLCK
    46. ECANCELED
    47. ENOTSUP
    48. EDQUOT
    49. EBADE
  6. ブートローダ
    1. GRUB
    2. LILO
  7. プロセス間通信
    1. シグナル
    2. ソケット
  8. ファイル
    1. /dev/null
    2. /etc
  9. ディストリビューション
    1. CentOS
    2. Linux Mint
    3. Ubuntu
  10. ライブラリ関数
    1. dlopen
    2. dlsym
    3. dlclose
    4. dlerror
    5. perror
    6. pthread_create
    7. pthread_join
    8. pthread_detach
    9. pthread_exit
    10. pthread_cancel
  11. 日本語入力
    1. IBus
    2. Fcitx
    3. Mozc
  12. 高可用システム
    1. HA

ディレクトリ構成

Ubuntuのディレクトリ構成を次に示す。

/dev/null

特殊なデバイスとして、ヌルデバイス(/dev/null)を指定することもできます。出力先とした場合、何も出力しないのと同義になります。入力元とした場合、常に EOF が入力されます。

$ echo hello > /dev/null

標準出力をヌルデバイスにリダイレクトした場合、/dev/nullというファイルに出力するのではなく、どこにも出力しないことになります。

/proc

/proc
パス 説明
/proc/pid/maps プロセスのメモリマップ
/proc/pid/cmdline プロセスのコマンドライン引数
/proc/pid/stat プロセスの状態
/proc/cpuinfo CPUに関する情報
/proc/diskstats ストレージデバイスに関する情報
/proc/meminfo メモリ関する情報
/proc/sys カーネルのチューニング・パラメータ
$ cat /proc/cpuinfo
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 23
model		: 24
model name	: AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx
stepping	: 1
microcode	: 0x8108109
cpu MHz		: 2452.618
cache size	: 512 KB
physical id	: 0
siblings	: 8
core id		: 0
cpu cores	: 4
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
$ cat /proc/diskstats
7       0 loop0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7       1 loop1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7       2 loop2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7       3 loop3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7       4 loop4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7       5 loop5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7       6 loop6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7       7 loop7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
259       0 nvme0n1 428166 104379 16659976 102701 482678 680548 34791602 130543
3 0 542780 1469421 0 0 0 0 80209 61286
259       1 nvme0n1p1 309 21 20422 71 2 0 2 7 0 236 79 0 0 0 0 0 0
259       2 nvme0n1p2 427489 104358 16625578 102557 482676 680548 34791600 1305
425 0 542648 1407983 0 0 0 0 0 0
$ cat /proc/meminfo
emTotal:        5935204 kB
MemFree:          274724 kB
MemAvailable:    2447692 kB
Buffers:          152308 kB
Cached:          2463844 kB
SwapCached:        39328 kB
Active:          2212840 kB
Inactive:        2685160 kB
Active(anon):     519260 kB
Inactive(anon):  2082944 kB
Active(file):    1693580 kB
Inactive(file):   602216 kB
Unevictable:       12764 kB
Mlocked:           12764 kB
SwapTotal:       2097148 kB
SwapFree:        1579516 kB
Dirty:               660 kB
Writeback:             0 kB
AnonPages:       2275028 kB
Mapped:           817732 kB
Shmem:            307632 kB
KReclaimable:     194828 kB
Slab:             332120 kB
SReclaimable:     194828 kB
SUnreclaim:       137292 kB
KernelStack:       17520 kB
PageTables:        48676 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     5064748 kB
Committed_AS:   13319012 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       75604 kB
VmallocChunk:          0 kB
Percpu:            13952 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      637052 kB
DirectMap2M:     5529600 kB
DirectMap1G:           0 kB

Wine

Linux に Wine をインストールすると、Linux 上で Microsoft Windows のアプリケーションを動かすことができる。

Wine は「Wine is not an emulator」の再帰的頭字語である。OSのエミュレーターではなく、Windows API を実装した環境でアプリケーションを動かしている。

日本語入力

IBus

IBus (Intelligent Input Bus) とは、Linuxのインプットメソッドフレームワークである。

Fcitx

Fcitx (Flexible Context-aware Input Tool with Extension) とは、Linuxのインプットメソッドフレームワークである。

Mozc

Mozcは「Google日本語入力」のオープンソース版である。Mozcはあくまで日本語変換エンジンであり、IBusやFcitx等のインプットメソッドフレームワークが別途必要である。

参考文献

IEEE and The Open Group (2018) Utility Conventions

Free Software Foundation, Inc. (2020) Standards for Command Line Interfaces