2019年11月21日木曜日

joinコマンドの使い方

コマンド概要

ファイルの中身を見て、同じ要素を持つ行を連結させるjoinコマンドについての情報を整理します。

コマンド書式
$join [オプション] ファイル1 ファイル2

オプション 説明
-j 連結するキーとなるフィールドの場所

コマンド使用例

  • 連結するフィールドの指定方法と連結結果
  • 
     $ cat join_test1.txt
     0001 aaaaa
     0002 bbbbb
     0003 ccccc
     0004 ddddd
     0005 eeeee
     $ cat join_test2.txt
     0001 AAAAA
     0002 BBBBB
     0003 XXXXX CCCCC
     0004
     0005 EEEEE
     $
     $ join -j 1 join_test1.txt join_test2.txt
     0001 aaaaa AAAAA
     0002 bbbbb BBBBB
     0003 ccccc XXXXX CCCCC ★要素の数が多ければそのまま連結する
     0004 ddddd       ★連結するデータが無ければ連結しない
     0005 eeeee EEEEE
     $
     $ join -j 2 join_test1.txt join_test2.txt   
     join: join_test2.txt:4: is not sorted: 0004
     $★2番目の要素をキーにすると、join_test2.txtの0004のデータが無いからエラーになる
    
    

cutコマンドの使い方

コマンド概要

ファイルの各行から特定のフィールドを取り出すcutコマンドについての情報をまとめます。

コマンド書式
$ cut [オプション] [ファイル名]

オプション 説明
-c 取り出す文字位置を決める
-d 区切り文字を決める
-f 取り出すフィールドを指定する

コマンド使用例

  • オプションの使い方です。スペースを区切り文字にするやり方は覚えておくと便利かもしれません。
  • 
     $ cat cut_test.txt
     123 456 789
     abc def ghi
     klm opq rst
     $
     $ cut -c 3 cut_test.txt ★各行の3文字目を表示している
     3
     c
     m
     $
     $ cut -c 5-7 cut_test.txt  ★各行の5文字目から7文字目を表示している
     456
     def
     opq
     $
     $ cut -d" " -f 2 cut_test.txt ★スペースを区切り文字と認識して2番目の情報を表示している
     456
     def
     opq
    
    

tailコマンドの使い方

コマンド概要

ファイルの末尾を表示するtailコマンドについて情報をまとめます。
ログを見るときなど使用頻度が多いコマンドです。

コマンド書式
$tail [オプション] [ファイル名]

オプション 説明
-n 末尾から指定された行数分の情報を表示します
-c 末尾から指定されたバイト数分の情報を表示します
-f ファイルの末尾に追加された行をリアルタイムで表示します

コマンド使用例

  • 「-f」オプションの使い方
  • このようにログの出力を見ながら別の画面から操作した時のログを表示させることができるので、とても便利です。

    
     $ tail -f /var/log/syslog
     Nov 21 22:17:48 raspberrypi kernel: [11778.294583] Voltage normalised (0x00000000)
     Nov 21 22:19:28 raspberrypi systemd[1]: Started Session c4 of user pi.
     Nov 21 22:19:30 raspberrypi kernel: [11880.215039] Under-voltage detected! (0x00050005)
     Nov 21 22:19:34 raspberrypi kernel: [11884.375055] Voltage normalised (0x00000000)
     Nov 21 22:19:42 raspberrypi kernel: [11892.695106] Under-voltage detected! (0x00050005)
     Nov 21 22:19:47 raspberrypi kernel: [11896.855088] Voltage normalised (0x00000000)
     Nov 21 22:21:43 raspberrypi kernel: [12013.335575] Under-voltage detected! (0x00050005)
     Nov 21 22:21:47 raspberrypi kernel: [12017.495595] Voltage normalised (0x00000000)
     Nov 21 22:22:04 raspberrypi python[305]: humidity: 40 %,  Temperat
     Nov 21 22:22:04 raspberrypi systemd[1]: Stopping Temp Service...
     Nov 21 22:22:04 raspberrypi systemd[1]: Pi-temp.service: Main process exited, code=killed, status=15/TERM
     Nov 21 22:22:04 raspberrypi systemd[1]: Pi-temp.service: Succeeded.
     Nov 21 22:22:04 raspberrypi systemd[1]: Stopped Temp Service.
     Nov 21 22:22:04 raspberrypi systemd[1]: Started Temp Service.
    
    

headコマンドの使い方

コマンド概要

ファイルの先頭部分を表示するheadコマンドについて情報をまとめます。

コマンド書式
$ head [オプション] [ファイル名]

オプション 説明
-n 指定した行数分、先頭から表示する。
-c 指定したバイト数分、先頭から表示する。

コマンド使用例

  • 先頭から3行表示する場合と8バイト表示する場合
  • 
      $ cat test.txt
     aaa
     bbb
     ccc
     ddd
     eee
     fff
     ggg
     hhh
     iii
     $
     $ head -n 3 test.txt  ★先頭から3行表示
     aaa
     bbb
     ccc
     $
     $ od -a test.txt
     0000000   a   a   a  nl   b   b   b  nl   c   c   c  nl   d   d   d  nl
     0000020   e   e   e  nl   f   f   f  nl   g   g   g  nl   h   h   h  nl
     0000040   i   i   i  nl
     0000045
     $
     $ head -c 8 test.txt  ★先頭から8バイト表示
    aaa
    bbb
     $
    
    

2019年11月20日水曜日

odコマンドの使い方

コマンド概要

バイナリファイルの内容を16進数やASCLL文字で表示してくれるodコマンドについて情報をまとめます。

コマンド書式
$od [オプション] [ファイル名]

オプション 説明
-t フォーマットを指定して出力する「c:ASCLL文字」「o:8進数」「x:16進数」

コマンド使用例

  • 「100」とかかれたテキストファイルの表示方法を変えた場合
  • 
     $ cat aaa.txt
     100  ★ファイルの中身
     $
     $ od -t c aaa.txt
     0000000   1   0   0  \n  ★アスキーで「1」「0」「0」[\n]   
     0000004
     $
     $ od -t x aaa.txt
     0000000 0a303031  ★16進数だと「\n」→0a 「0」→30 「0」→30 「1」→31
     0000004
     $
     $ od -t o aaa.txt
     0000000 01214030061 ★8進数
     0000004
     $
    
    

nlコマンドの使い方

コマンド概要

ファイルに行番号をつけて表示するnlコマンドについて情報をまとめます。


コマンド書式
$nl [オプション] [ファイル名]


オプション 説明
-b 指定した形式で本文に行番号を入れる。形式は「a:すべての行」「t:空白以外の行」

コマンド使用例

  • 表示形式を変えて行番号をつける例
  • 「-b t」のオプションはソースコードとかconfigの行数を数えるときとかに便利かもしれません。

    
     $ nl -b a test.txt
          1  aaa
          2  bbb
          3
          4  ccc
          5  ddd
          6
          7
          8  eee
     $
     $ nl -b t test.txt
          1  aaa
          2  bbb
     
          3  ccc
          4  ddd
     
     
          5  eee
     $
    
    

catコマンドの使い方

コマンド概要

ファイルの内容を表示するcatコマンドについて情報をまとめます。

コマンド書式
$ cat [ファイル名]

オプション 説明
-n 各行の左側に行番号を付与する

コマンド使用例

  • 「-n」をつけて行番号を表示する
  • 行数をつけると見やすくなりますが、ターミナル画面に収まらないサイズだと使いづらい印象です。

    
     $ cat test.txt
     aaa
     bbb
     ddd
     eee
     $ cat -n test.txt
          1  aaa
          2  bbb
          3  ddd
          4  eee
     $
    
    
    

2019年11月19日火曜日

コマンド実行の表示先について

概要

コマンド実行時の出力先の指定方法についての手法を整理します。

要点

  • 標準入出力
  • コマンドを実行した際の入出力には、標準入力(0)、標準出力(1)、標準出力エラー(2)の3種類あり、それぞれ番号に対応しています。

  • パイプ
  • コマンドを実行する際に「|」を使う事によって複数のコマンドを合わせて実行することができます。
    例えばdmesgコマンドを実行してその中から「Boot」という文字列を探したいときは以下のようにコマンドを実行します。

    
     $ dmesg | grep Boot
     [    0.000000] Booting Linux on physical CPU 0x0 ★「Boot」の文字列が入った行を抽出する。
     $
    
    

  • リダイレクト
  • コマンドを実行する際に「>」を使う事によってファイルの出力先を指定することができます。
    例えば、lsコマンドの実行結果をファイルに出力したい場合は以下のようにします

    
     $ ls > ls.txt  ★実行結果が画面出力しない
     $
     $ cat ls.txt  ★実行結果がファイル出力してる
     aaa.txt
     bbb.txt
     ls.txt
     $
    
    
    この時、「>>」を使えば、追記形式でファイル出力することができます。

    逆に「<」を使うと標準入力の切り替えを行うことができるし、
    「<<」を使うと指定した文字列を入力するまでファイルへの入力を行うことができます。
    これをヒアドキュメントと言いますが、あまり使わないかもしれません。

    以下は、「ccc」を入力するまでファイルへの入力を行う例です。

    
     $ cat > test.txt << ccc
     > aaa
     > bbb
     > ddd
     > eee
     > ccc ★「ccc」が入力されたから入力ここまで。
     $ cat test.txt
     aaa
     bbb
     ddd
     eee
     $
    
    
  • /dev/nullのファイルについて
  • /dev/nullファイルは特殊なデバイスファイルで、このファイルに書かれたものは全て消去されて、このファイルを読み込むと常にEOFが返ってきます。
    例えば以下のようにコマンドの実行結果を表示させたくないときに使います。

    
     $ ls  > /dev/null ★lsの結果を標準出力しない
     $
     $ ls  > /dev/null 2>&1 ★標準出力エラーの出力先を標準出力にして、結果を標準出力しない
     $
    
    

2019年11月18日月曜日

fileコマンドの使い方

コマンド概要

ファイルの種類や文字コードを確認するのに便利なfileコマンドについて情報をまとめます。

コマンド書式
$ file ファイル名


コマンド使用例

  • fileコマンドの出力結果
  • 
     $ file temp.txt
     temp.txt: ASCII text  ★ASCIIのテキストファイル
     $
     $ file dht11
     dht11: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, 
     BuildID[sha1]=e1572ad78436df4b5f6c6133f14de00721c82428, not stripped 
    ★32bitのシステムでコンパイルされたバイナリファイル
     $
     $ file dht11.c
     dht11.c: C source, ASCII text ★Cのソースファイル。ASCIIのテキスト。
     $
     $ file dht11.py
     dht11.py: Python script, ASCII text executable ★Pythonのスクリプト。ASCIIのテキスト。
    
    

touchコマンドの使い方

コマンド概要

ファイルのタイムスタンプを更新するコマンドです。
空のファイルを作りたいときにも使えます。

コマンド書式
$ touch [オプション] ファイル名

オプション 説明
-t ファイルのタイムスタンプを任意の時間に変える
-a ファイルのアクセス時刻のタイムスタンプを変える
-m ファイルの修正時刻のタイムスタンプを変える

コマンド使用例

  • ファイルの更新日時を2019年11月19日00時00分00秒にする
  • 時間指定の仕方は、[[CC]YY]MMDDhhmm[.ss]なので、「201911190000.00」が引数になる。

    
     $ ls -l
    合計 0
    -rw-r--r-- 1 pi pi 0 11月 18 23:18 aaa.txt
     $ touch -t 201911190000.00 aaa.txt
     $ ls -l
    合計 0
    -rw-r--r-- 1 pi pi 0 11月 19  2019 aaa.txt ★ファイルのタイムスタンプが更新されている。
     $ touch bbb.txt
     $ ls -l
    合計 0
    -rw-r--r-- 1 pi pi 0 11月 19  2019 aaa.txt
    -rw-r--r-- 1 pi pi 0 11月 18 23:25 bbb.txt  ★ファイルが無いとtouchと空のファイルが作られる。
    
    

rmコマンドの使い方

コマンド概要

ファイルやディレクトリを削除するrmコマンドについて情報をまとめます。

コマンド書式 
$ rm [オプション] ファイル名

オプション 説明
-f ユーザに確認なしで削除する
-r ディレクトリも含めて削除する

コマンド使用例

  • 「-r」オプションをつけて、ディレクトリの配下のファイルも含めて一気に削除する
  • 
     $ ls
     bbb
     $ rm bbb
     rm: 'bbb' を削除できません: ディレクトリです  ★「-r」オプションがないとディレクトリは削除できない
     $ rm -rf bbb
     $ ls
     $
    
    

mkdirコマンドの使い方

コマンド概要

ディレクトリを作成するmkdirコマンドです

コマンド書式
$ mkdir [オプション] ディレクトリ名

オプション 説明
-m 指定したアクセス権でディレクトリを作成する
-p 必要なら親ディレクトリも同時に作成する

コマンド使用例

  • 「-m」オプションをつけてアクセス権も設定する
  • 
     $ mkdir aaa
     $ mkdir -m 700 bbb
     $ ls -l
    合計 8
    drwxr-xr-x 2 pi pi 4096 11月 18 21:19 aaa ★デフォルトのアクセス権は755
    drwx------ 2 pi pi 4096 11月 18 21:20 bbb  ★アクセス権が700になっている
    
    
  • 「-p」オプションをつけて親ディレクトリも含めて一度に作成する
  • 
     $ mkdir -p ./aaa/bbb/ccc
     $ ls
     aaa
     $ ls aaa/
     bbb
     $ ls aaa/bbb/   ★./aaa/bbb/cccの階層でディレクトリができてる
     ccc
    
    

mvコマンドの使い方

コマンド概要

ファイルやディレクトリを移動するmvコマンドです。
オプションをつけてコマンドを実行する機会は少ないかもしれません


mv [オプション] 移動するファイル 移動先のディレクトリ

オプション 説明
-f 移動先に同名のファイルがあれば上書きする
-n 移動先に同名のファイルがあれば上書きしない
-i 移動先に同名のファイルがあれば上書きするか確認する

コマンド使用例

  • ディレクトリ内のファイルをすべて移動する
  • 
     $ ls TEMP
     dht11  dht11.c  dht11.py  temp.txt
     $ ls TEMP2
     $
     $ mv TEMP/* TEMP2
     $ ls TEMP     ★TEMP配下にあったファイルが全て無くなっている
     $
     $ ls TEMP2  ★TEMP配下にあったファイルが全て移動している
     dht11  dht11.c  dht11.py  temp.txt
     $
    
    
  • 「-i」オプションのつけた時の動き
  • 
     $ mv -i TEMP/temp.txt TEMP2
     mv: 'TEMP2/temp.txt' を上書きしますか? n
     $ ls -l TEMP2
     合計 24
     -rwxr-xr-x 1 pi pi 8668 11月 16 14:24 dht11
     -rw-r--r-- 1 pi pi 3215 11月 16 14:55 dht11.c
     -rw-r--r-- 1 pi pi 3788 11月 16 17:30 dht11.py
     -rw-r--r-- 1 pi pi 1095 11月 16 17:31 temp.txt  ★上書きされてない
     $
     $ mv -i TEMP/temp.txt TEMP2
     mv: 'TEMP2/temp.txt' を上書きしますか? y
     $ ls -l TEMP2
     合計 24
     -rwxr-xr-x 1 pi pi 8668 11月 16 14:24 dht11
     -rw-r--r-- 1 pi pi 3215 11月 16 14:55 dht11.c
     -rw-r--r-- 1 pi pi 3788 11月 16 17:30 dht11.py
     -rw-r--r-- 1 pi pi 1095 11月 18 20:34 temp.txt ★上書きされた(タイムスタンプから)
     $
    
    

cpコマンドの使い方

コマンド概要

ファイルやディレクトリをコピーするコマンドです。

cp [オプション] コピー元ファイル名 コピー先ファイル名

オプション 説明
-f コピー先に同名のファイルがある場合にも上書きする
-p コピー元ファイルの属性(オーナー、アクセス権、タイムスタンプなど)を保持したままコピーする
-r ディレクトリごとコピーする

使用例

  • フォルダごとコピーする場合は「-r」を使います
  • 以下の例では試しに「-p」オプションをつけた場合とつけない場合を比較してみました。
    
     $ ls
     LED
     $ cp -r LED LED2
     $ cp -rp LED LED3
     $ ls -l
     合計 16
     drwxr-xr-x 2 pi pi 4096 11月 16 15:04 LED
     drwxr-xr-x 2 pi pi 4096 11月 18 19:54 LED2 【★普通にコピーしたからタイムスタンプが更新されてる】
     drwxr-xr-x 2 pi pi 4096 11月 16 15:04 LED3 【★「-p」オプションをつけたからタイムスタンプが元のまま】
    
    
    

lsコマンドの使い方

概要

ディレクトリの内容を表示するlsコマンドについて情報を整理します。
基本的なコマンドなので、オプションを変えながら何個か表示します。

オプション 説明
-a 隠しファイル(.から始まる名前のファイル)も含めて表示する
-A -aと同じだが、「.」「..」は表示しない
-F ファイルの種類も表示する
-i iノード番号も表示する
-l ファイルの詳細な情報を表示する
-t ファイルを最終更新日時順に表示する
-h -lとセットで使う。ファイルのサイズを単位付きで表示する

表示例

  • 普段見やすくてよく使うのは「-lA」オプション
  • 
    pi@raspberrypi:~ $ ls -lA
    合計 100
    -rw------- 1 pi pi   56 11月 17 10:17 .Xauthority
    -rw------- 1 pi pi 7327 11月 18 17:22 .bash_history
    -rw-r--r-- 1 pi pi  220  9月 26 09:09 .bash_logout
    -rw-r--r-- 1 pi pi 3523  9月 26 09:09 .bashrc
    drwxr-xr-x 7 pi pi 4096 10月 27 13:35 .cache
    drwx------ 5 pi pi 4096 10月 27 13:35 .config
    drwx------ 3 pi pi 4096  9月 26 09:46 .gnupg
    drwxr-xr-x 3 pi pi 4096  9月 26 09:18 .local
    drwx------ 3 pi pi 4096 10月 27 13:35 .pki
    -rw-r--r-- 1 pi pi  807  9月 26 09:09 .profile
    drwx------ 3 pi pi 4096 10月 27 14:52 .vnc
    -rw------- 1 pi pi 2436 11月 17 10:17 .xsession-errors
    -rw------- 1 pi pi 2436 11月 16 23:26 .xsession-errors.old
    drwxr-xr-x 2 pi pi 4096 10月 27 14:21 Desktop
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Documents
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Downloads
    drwxr-xr-x 2 pi pi 4096  9月 26 09:18 MagPi
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Music
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Pictures
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Public
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Templates
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Videos
    drwxr-xr-x 2 pi pi 4096 11月  2 14:48 local
    drwxr-xr-x 4 pi pi 4096 11月 16 15:05 osoyo
    
    

  • ファイルサイズを聞かれたときに見やすいのは「-lAh」オプション
  • 
    pi@raspberrypi:~ $ ls -lAh
    合計 100K
    -rw------- 1 pi pi   56 11月 17 10:17 .Xauthority
    -rw------- 1 pi pi 7.2K 11月 18 17:22 .bash_history
    -rw-r--r-- 1 pi pi  220  9月 26 09:09 .bash_logout
    -rw-r--r-- 1 pi pi 3.5K  9月 26 09:09 .bashrc
    drwxr-xr-x 7 pi pi 4.0K 10月 27 13:35 .cache
    drwx------ 5 pi pi 4.0K 10月 27 13:35 .config
    drwx------ 3 pi pi 4.0K  9月 26 09:46 .gnupg
    drwxr-xr-x 3 pi pi 4.0K  9月 26 09:18 .local
    drwx------ 3 pi pi 4.0K 10月 27 13:35 .pki
    -rw-r--r-- 1 pi pi  807  9月 26 09:09 .profile
    drwx------ 3 pi pi 4.0K 10月 27 14:52 .vnc
    -rw------- 1 pi pi 2.4K 11月 17 10:17 .xsession-errors
    -rw------- 1 pi pi 2.4K 11月 16 23:26 .xsession-errors.old
    drwxr-xr-x 2 pi pi 4.0K 10月 27 14:21 Desktop
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Documents
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Downloads
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:18 MagPi
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Music
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Pictures
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Public
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Templates
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Videos
    drwxr-xr-x 2 pi pi 4.0K 11月  2 14:48 local
    drwxr-xr-x 4 pi pi 4.0K 11月 16 15:05 osoyo
    
    

  • 最近更新されたファイルを探したいときは「-lAt」オプション
  • 
    pi@raspberrypi:~ $ ls -lAt
    合計 100
    -rw------- 1 pi pi 7327 11月 18 17:22 .bash_history
    -rw------- 1 pi pi 2436 11月 17 10:17 .xsession-errors
    -rw------- 1 pi pi   56 11月 17 10:17 .Xauthority
    -rw------- 1 pi pi 2436 11月 16 23:26 .xsession-errors.old
    drwxr-xr-x 4 pi pi 4096 11月 16 15:05 osoyo
    drwxr-xr-x 2 pi pi 4096 11月  2 14:48 local
    drwx------ 3 pi pi 4096 10月 27 14:52 .vnc
    drwxr-xr-x 2 pi pi 4096 10月 27 14:21 Desktop
    drwx------ 3 pi pi 4096 10月 27 13:35 .pki
    drwxr-xr-x 7 pi pi 4096 10月 27 13:35 .cache
    drwx------ 5 pi pi 4096 10月 27 13:35 .config
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Documents
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Downloads
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Music
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Pictures
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Public
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Templates
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Videos
    drwx------ 3 pi pi 4096  9月 26 09:46 .gnupg
    drwxr-xr-x 2 pi pi 4096  9月 26 09:18 MagPi
    drwxr-xr-x 3 pi pi 4096  9月 26 09:18 .local
    -rw-r--r-- 1 pi pi  220  9月 26 09:09 .bash_logout
    -rw-r--r-- 1 pi pi 3523  9月 26 09:09 .bashrc
    -rw-r--r-- 1 pi pi  807  9月 26 09:09 .profile
    
    

環境変数の設定方法


概要

Linux上で操作をする際に使用する変数に、シェル変数と環境変数があります。
シェル変数は設定をしたプロセスでのみ有効な変数であるのに対して環境変数は別のプロセスにも引き継がれます。
環境変数の設定方法と、表示方法について整理します。
また、よく使うPATHの環境変数についても整理します。

要点

  • 環境変数の表示方法
  • 環境変数を表示するにはprintenvコマンドを使います。
    
     $ printenv
     SHELL=/bin/bash
     LANGUAGE=ja_JP.UTF-8
     NO_AT_BRIDGE=1
     PWD=/home/pi
     LOGNAME=pi
     XDG_SESSION_TYPE=tty
     HOME=/home/pi
    
     【省略】
    
     LC_ALL=ja_JP.UTF-8
     PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
     DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
     MAIL=/var/mail/pi
     SSH_TTY=/dev/pts/0
     TEXTDOMAIN=Linux-PAM
     _=/usr/bin/printenv
    
    

    個別に表示する場合は「echoコマンド $変数名」を使って表示することもできます。
    
     $ echo $LANG
     ja_JP.UTF-8
    
    

  • 環境変数の設定方法
  • 環境変数を設定する際には「変数名=値」とします。以下の例はLANGの変数を「en_US.UTF-8」に設定しています。
    
     $ echo $LANG
     ja_JP.UTF-8
     $
     $ LANG=en_US.UTF-8
     $
     $ echo $LANG
     en_US.UTF-8
    
    
  • 環境変数の設定方法
  • 環境変数を引き継ぐ場合にはexportコマンドが必要です。
    以下は環境変数を設定したけど、exportしてないから子プロセスに引き継がれなくて、exportしたら環境変数が引き継がれた様子です。

    
     $ NAME=aaa
     $ echo $NAME
     aaa
     $ bash ★子プロセスへ移動
     $ echo $NAME ★表示されない
     $ exit
     $
     $ echo $NAME
     aaa
     $ export NAME
     $ bash ★子プロセスへ移動
     $ echo $NAME ★表示されてる
     aaa 
    
    
  • 主な環境変数

  • 変数名 説明
    PWD カレントディレクトリの絶対パス
    PATH 参照しているコマンドのパス
    HOME ユーザのホームディレクトリ
    PS1 プロンプトを定義
    PS2 2次プロンプトを定義
    HISTFILE コマンド履歴を格納するファイルを定義
    LANG 言語情報
    HOSTNAME ホスト名
    USER 現在のユーザ名
    HISTSIZE コマンド履歴の最大値
    LAGNAME ログインシェルのユーザ名

  • 環境変数PATHについて
  • PATHの環境変数を表示すると以下のようになっていました。
    
     $ echo $PATH
     /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
    
    
    これは、このユーザが以下のフォルダにあるコマンドを相対パスで実行できることを示しています。
    • /usr/local/sbin
    • /usr/local/bin
    • /usr/sbin
    • /usr/bin
    • /sbin
    • /bin
    • /usr/local/games
    • /usr/games

    なので、例えば実行できるコマンドを追加してパスを通す必要が出てきたときは、この環境変数PATHにコマンドのパスを追加します。

2019年11月14日木曜日

aptitudeコマンド remove とpurgeの違いの実験

概要

パッケージのインストールと確認ができるaptitudeコマンドについての情報をまとめます。
アンインストールする際のremoveオプションとpurgeオプションの違いもためしてみました。

要点

  • aptitudeコマンドについて
  • aptitudeコマンドはapt-getコマンドとapt-chaheコマンドと同等の事ができるコマンドです。
    試しに使ってみようと思ったらaptitudeがインストールされていませんでした。
    なので、まずはapt-getでインストールします
    
     #apt-get install aptitude
    
    

    サブコマンド 説明
    update データベースを更新する
    show パッケージ名 パッケージ情報を表示する
    search パターン パッケージを検索する
    install パッケージ名 パッケージをインストールする
    remove パッケージ名 設定ファイルを残してパッケージをアンインストールする
    purge パッケージ名 設定ファイルも含めてパッケージをアンインストールする
    full-upgrade すべてのパッケージファイルをアップグレードする
    safe-upgrade ほかのパッケージを削除しないようにすべてのパッケージファイルをアップグレードする

  • aptitude updateコマンド
  • 「apt-get update」と同様にパッケージデータベースの更新を行います。試しにどっちも試してみたところ、発見とヒットの違いがありました。

    
     # apt-get update
     ヒット:1 http://archive.raspberrypi.org/debian buster InRelease
     ヒット:2 http://raspbian.raspberrypi.org/raspbian buster InRelease
     パッケージリストを読み込んでいます... 完了
     #
     # aptitude update
     発見 http://raspbian.raspberrypi.org/raspbian buster InRelease
     発見 http://archive.raspberrypi.org/debian buster InRelease
    
    
  • aptitude removeコマンドとaptitude purge コマンド
  • 設定ファイルを残してパッケージを削除するコマンドです。
    設定ファイルを残す場合がremoveで、場合と残さない場合がpurgeなので、本当に設定ファイルが消えるのか実験してみました。

    1. まずはremoveでsnmpをアンインストール。
    2. 
       # ls snmp
       snmp.conf  【★設定ファイルがある】
       #
       # aptitude remove snmp
       以下のパッケージが削除されます:
         libmariadb3{u} libsnmp-base{u} libsnmp30{u} mariadb-common{u} mysql-common{u} snmp
       更新: 0 個、新規インストール: 0 個、削除: 6 個、保留: 6 個。
       アーカイブの 0 B を取得する必要があります。展開後に 7,747 kB のディスク領域が解放されます。
       先に進みますか? [Y/n/?] Y
       (データベースを読み込んでいます ... 現在 156656 個のファイルとディレクトリがインストールされています。)
       snmp (5.7.3+dfsg-5+b1) を削除しています ...
       libsnmp30:armhf (5.7.3+dfsg-5+b1) を削除しています ...
       libmariadb3:armhf (1:10.3.17-0+deb10u1) を削除しています ...
       libsnmp-base (5.7.3+dfsg-5) を削除しています ...
       mariadb-common (1:10.3.17-0+deb10u1) を削除しています ...
       update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
       mysql-common (5.8+1.0.5) を削除しています ...
       man-db (2.8.5-2) のトリガを処理しています ...
       libc-bin (2.28-10+rpi1) のトリガを処理しています ...
      
       #
       # ls snmp
       snmp.conf 【★アンインストールしても設定ファイルが残っている 想定通り】
      
      
    3. 再度snmpをインストールして、今度はpurgeのサブコマンドを使ってアンインストール。
    4. 
       # ls snmp
       snmp.conf【★設定ファイルがある】
       # aptitude purge snmp
       以下のパッケージが削除されます:
         libmariadb3{u} libsnmp-base{u} libsnmp30{u} mariadb-common{u} mysql-common{u} snmp{p}
       更新: 0 個、新規インストール: 0 個、削除: 6 個、保留: 6 個。
       アーカイブの 0 B を取得する必要があります。展開後に 7,747 kB のディスク領域が解放されます。
       先に進みますか? [Y/n/?] Y
       (データベースを読み込んでいます ... 現在 156656 個のファイルとディレクトリがインストールされています。)
       snmp (5.7.3+dfsg-5+b1) を削除しています ...
       libsnmp30:armhf (5.7.3+dfsg-5+b1) を削除しています ...
       libmariadb3:armhf (1:10.3.17-0+deb10u1) を削除しています ...
       libsnmp-base (5.7.3+dfsg-5) を削除しています ...
       mariadb-common (1:10.3.17-0+deb10u1) を削除しています ...
       update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
       mysql-common (5.8+1.0.5) を削除しています ...
       man-db (2.8.5-2) のトリガを処理しています ...
       libc-bin (2.28-10+rpi1) のトリガを処理しています ...
       
       #
       # ls snmp
       snmp.conf 【★アンインストールしたのに設定ファイルが残っている! 想定外】
      
      
    5. snmp.confファイルが関連するパッケージを確認すると、snmpではなくlibsnmp-baseが紐づいているようでした。
    6. 
       # dpkg -S snmp.conf
       libsnmp-base: /etc/snmp/snmp.conf   【★関連しているパッケージは libsnmp-baseだった!】
       libsnmp-base: /usr/share/man/man5/snmp.conf.5.gz
      
      
    7. ということで、再度snmpをインストールして、今度はlibsnmp-baseをpurgeでアンインストール。
    8. 
       # ls snmp
       snmp.conf 【★設定ファイルがある】
       #
       # aptitude purge libsnmp-base
       以下のパッケージが削除されます:
         libsnmp-base{p}
       更新: 0 個、新規インストール: 0 個、削除: 1 個、保留: 6 個。
       アーカイブの 0 B を取得する必要があります。展開後に 2,176 kB のディスク領域が解放されます。
       以下のパッケージには満たされていない依存関係があります:
        snmp : 依存: libsnmp-base (>= 5.7.3+dfsg-5) インストールされません
        libsnmp30 : 依存: libsnmp-base インストールされません
       以下のアクションでこれらの依存関係の問題は解決されます:
      
           以下のパッケージを削除する:
       1)     libsnmp30 [5.7.3+dfsg-5+b1 (now, stable)]
       2)     snmp [5.7.3+dfsg-5+b1 (now, stable)]
      
       この解決方法を受け入れますか? [Y/n/q/?]Y
       以下のパッケージが削除されます:
         libmariadb3{u} libsnmp-base{p} libsnmp30{a} mariadb-common{u} mysql-common{u} snmp{a}
       更新: 0 個、新規インストール: 0 個、削除: 6 個、保留: 6 個。
       アーカイブの 0 B を取得する必要があります。展開後に 7,747 kB のディスク領域が解放されます。
       先に進みますか? [Y/n/?] Y
       (データベースを読み込んでいます ... 現在 156656 個のファイルとディレクトリがインストールされています。)
       snmp (5.7.3+dfsg-5+b1) を削除しています ...
       libsnmp30:armhf (5.7.3+dfsg-5+b1) を削除しています ...
       libmariadb3:armhf (1:10.3.17-0+deb10u1) を削除しています ...
       libsnmp-base (5.7.3+dfsg-5) を削除しています ...
       mariadb-common (1:10.3.17-0+deb10u1) を削除しています ...
       update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
       mysql-common (5.8+1.0.5) を削除しています ...
       man-db (2.8.5-2) のトリガを処理しています ...
       libc-bin (2.28-10+rpi1) のトリガを処理しています ...
       (データベースを読み込んでいます ... 現在 156439 個のファイルとディレクトリがインストールされています。)
       libsnmp-base (5.7.3+dfsg-5) の設定ファイルを削除しています ...
      
       # ls snmp 【★設定ファイルが消えてる! 想定通り】
       ls: 'snmp' にアクセスできません: そのようなファイルやディレクトリはありません 
      
      
    snmpをpurgeでアンインストールするときも、libsnmp-baseが関連するから一緒にアンインストールしてるように見えますが、どうやらその時は設定ファイルは消さないようです。
    表示内容をよく見ると、「libsnmp-base{u}」と表示されてる時と「libsnmp-base{p}」と書かれている時があり、{u}は設定残してアンインストール、{p}は設定含めてアンインストールしているように見えました。

2019年11月11日月曜日

apt-getコマンド


概要

パッケージをインストールする際に、ファイル転送も含めて一度にやってくれる便利なapt-getコマンドについて情報をまとめます。

要点

  • apt-getコマンドについて
  • apt-getコマンドはパッケージ管理をしてくれるコマンドで、インストールする際に必要なファイルを転送してくれて、ほかのパッケージとの依存関係があれば、解決しながらインストールをしてくれるとても便利なコマンドです。
    コマンドを実行する際には、任意のオプションと必須のサブコマンドをつけて実行します。

    オプション 説明
    -d ファイルのダウンロードだけする
    -s システムを変更せず動作をシミュレートする

    サブコマンド 説明
    install パッケージをインストールする
    remove パッケージをアンインストールする
    update パッケージリストのデータベースを更新する
    upgrade インストール済みのパッケージの内容を最新の状態にアップグレードする

  • apt-getコマンドに関連する設定ファイル
  • apt-getコマンドはパッケージファイルをネットワークの先から持ってくる必要があるので、設定ファイルに必要なサーバの情報を記載する必要があります。私のラズパイの設定を見ると以下のように書かれていました。
    
     $ cat /etc/apt/sources.list
      deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
      # Uncomment line below then 'apt-get update' to enable 'apt-get source'
      #deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
    
    
    URLにアクセスすると以下のページにアクセスできます。
    apt-getコマンドを使うとここからパッケージファイルをダウンロードすることになります。



  • apt-getコマンドを使ったパッケージ情報の更新
  • 
     # apt-get update
     取得:1 http://archive.raspberrypi.org/debian buster InRelease [25.2 kB]
     取得:2 http://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]
     取得:3 http://archive.raspberrypi.org/debian buster/main armhf Packages [259 kB]
     取得:4 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages [13.0 MB]
     13.3 MB を 45秒 で取得しました (295 kB/s)
     パッケージリストを読み込んでいます... 完了
    
    

  • apt-getコマンドを使ったパッケージのインストール
  • 試しにapt-getを使ってsnmpというパッケージをインストールしてみます。
    apt-getを使うと依存関係のあるパッケージも一緒にインストールしてくれます。

    
     # apt-get install snmp
     パッケージリストを読み込んでいます... 完了
     依存関係ツリーを作成しています
     状態情報を読み取っています... 完了
     以下の追加パッケージがインストールされます:
       libmariadb3 libsnmp-base libsnmp30 mariadb-common mysql-common
    【以下略】
    
    

  • apt-getコマンドを使ったパッケージのアンインストール
  • 
    #apt-get remove 【準備中】
    
    
  • apt-getコマンドを使ったインストール済みパッケージのアップグレード
  • apt-get upgrade コマンドを実行すると、インストール済みのパッケージの内容をアップグレードしてくれます。
    途中で追加のデータが必要な場合には「続行しますか?」と聞いてくるので、大文字の「Y」を打てば続行してくれます。
    
     # apt-get upgrade
      パッケージリストを読み込んでいます... 完了
      依存関係ツリーを作成しています
      状態情報を読み取っています... 完了
      アップグレードパッケージを検出しています... 完了
      以下のパッケージは保留されます:
        libjavascriptcoregtk-4.0-18 libwebkit2gtk-4.0-37
      以下のパッケージはアップグレードされます:
        dhcpcd5 firmware-atheros firmware-brcm80211 firmware-libertas firmware-misc-nonfree firmware-realtek gldriver-test libarchive13 libfribidi0 pi-bluetooth
        piwiz python-piglow python3-piglow raspberrypi-sys-mods rpi-eeprom rpi-eeprom-images
      アップグレード: 16 個、新規インストール: 0 個、削除: 0 個、保留: 2 個。
      16.1 MB のアーカイブを取得する必要があります。
      この操作後に 17.4 kB のディスク容量が解放されます。
      続行しますか? [Y/n] Y
      取得:2 http://archive.raspberrypi.org/debian buster/main armhf dhcpcd5 armhf 1:8.1.1+really7.0.8-0.1+rpt2 [142 kB]
      取得:1 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf libarchive13 armhf 3.3.3-4+deb10u1 [271 kB]
      【以下略】
    
    

dpkgコマンドについて

概要

Debian系のLinuxのパッケージ管理を行う際に使用するdpkgコマンドについての情報をまとめます。


要点

  • dpkgコマンドについて
  • dpkgコマンドを使う際には、任意のオプションと必須のアクションを指定する必要があります。


    オプション 説明
    -E 同じバージョンがインストールされている場合はインストールしない
    -G 新バージョンがインストールされている場合はインストールしない
    -R 再帰的に処理する


    アクション 説明
    -i パッケージをインストールする
    -r 設定ファイルを残してアンインストールする
    -P 設定ファイルも含めてアンインストールする
    -l インストール済みパッケージを表示する
    -L 指定パッケージからインストールされたファイルを一覧表示する
    -s パッケージの情報を表示する
    --configure 展開されたパッケージを構成する
    --unpack パッケージをインストールせず展開する(解凍する)
    -P

  • deb形式のパッケージファイルについて
  • deb形式のファイルは拡張子が.debとなっているファイルで、ファイル名には「パッケージ名称」、「バージョン情報」、「アーキテクチャ(i386など)」が書かれています。
    必要なパッケージとバージョンを、アーキテクチャ32bit版、64bit版などの情報に注意してファイルを選択します。
    取得したファイルは、USBなどの媒体に入れて運ぶか、SCPやなどのファイル転送のツールを使ってインストールしたい装置にファイルを移動します。

  • パッケージのインストール
  • おそらくdpkgのなかで一番使うアクションだと思います。
    間違ってバージョンを下げないように-Gをつけてい置くと安全なのかもしれません。
    ルート権限で行う必要があります。
    
     # dpkg -G -i debファイル 【準備中】
    
    
  • 設定ファイルも含めたパッケージのアンインストール
  • 設定ファイルだけ残してアンインストールしてもしょうがないと思うので、使うならpurgeアクションで使うと思います。
    ルート権限でおこなう必要があります。
    
     # dpkg -p debファイル 【準備中】
    
    
  • インストール済みパッケージの確認(一覧)
  • 装置にインストールされているファイルの一覧を表示します。
    例えば、zip関連のパッケージを確認する場合は以下のように確認することができるので便利です。
    
     $ dpkg -l | grep zip
     ii  bzip2                                 1.0.6-9.2~deb10u1                   armhf        high-quality block- 
     sorting file compressor - utilities
     ii  gzip                                  1.9-3                               armhf        GNU compression 
     utilities
     ii  unzip                                 6.0-23+deb10u1                      armhf        De-archiver for .zip 
     files
     ii  zip                                   3.0-11                              armhf        Archiver for .zip 
     files
    
    
  • インストール済みパッケージの確認(詳細)
  • このコマンドはパッケージの詳細を見るときに使うようです。
    試しにunzipのパッケージに使ってみたら以下のような情報が見れました。
    
     $ dpkg -s unzip
     Package: unzip
     Status: install ok installed
     Priority: optional
     Section: utils
     Installed-Size: 466
     Maintainer: Santiago Vila 
     Architecture: armhf
     Multi-Arch: foreign
     Version: 6.0-23+deb10u1
     Depends: libbz2-1.0, libc6 (>= 2.4)
     Suggests: zip
     Description: De-archiver for .zip files
      InfoZIP's unzip program. With the exception of multi-volume archives
      (ie, .ZIP files that are split across several disks using PKZIP's /& option),
      this can handle any file produced either by PKZIP, or the corresponding
      InfoZIP zip program.
      .
      This version supports encryption.
     Homepage: http://www.info-zip.org/UnZip.html
    
    

2019年11月9日土曜日

ブートローダ(GRUB系)について

概要

ハードディスからOSを読み込んで起動するプログラムをブートローダといいます。
代表的なブートローダがGRUBであり、GRUBには「GRUB Legacy」と「GRUB2」があります。
ここではGRUB2の設定方法についての情報を記載します。

要点

  • GRUB2の設定
  • GRUB2の設定は/etc/default/grubファイルに設定パラメータを記載してから、
    grub-mkconfigコマンドを実行することで、/boot/grub/grub.cfgに設定が反映されます。

    ※/etc/default/grubの設定例
    
     # cat /etc/default/grubの結果 【準備中】
    
    

    パラメータ名 意味
    GRUB_TIMEOUT 起動メニューがタイムアウトするまでの秒数

  • grub-mkconfigコマンド
  • /etc/default/grubの設定を反映するには、grub-mkconfigコマンドを使います。
    設定ファイルに反映させる場合には、「-o」のオプションをつけて、「/boot/grub/grub.cfg」
    を引数として記載する必要があります。

    
     # grub-mkconfig -o /boot/grub/grub.cfg 【準備中】
    
    

Linuxのパーティションについて

概要

Linuxをインストールする際に設定するパーティションに関しての情報をまとめます。

要点

Linuxをインストールする際には以下のディレクトリを、それぞれ別のパーティションに分割して利用するのが 一般的なようです。
  • /home
  • 一般ユーザのデータが格納されます。/home/アカウント名/というような形でフォルダが作成されるので、
    大人数が使用するシステムだとサイズを大きくする必要があります。

  • /var
  • ログファイルなどが格納されるフォルダです。ここのサイズを大きくするとそれだけ多くのログを残せます。
    ここのパーティションを分けないと、例えばログのサイズが膨大なものになった場合に、ほかのディレクトリへ
    影響を与えてしまう可能性があります。

  • /usr
  • プログラムやライブラリなどが格納されるディレクトリなので運用中にサイズが大きくなることが少ないです。

  • /boot
  • カーネルなどが格納されているディレクトリです。

  • スワップ領域
  • 仮想メモリとして利用される領域で搭載している物理メモリの1,2倍のサイズを割り当てることが多いようです。

  • /(ルート)
  • 上位以外のパーティションを設定していないディレクトリが/(ルート)配下に割り当てられます。

  • パーティションの確認方法
  • 実際にどのような割合でパーティションが割り当てられているかを確認するにはfdiskコマンドを使用します。 以下はラズパイで見た様子なので2つにしか分かれていないように見えます。
    
     # fdisk -l
     Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
     Units: sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 4096 bytes
     I/O size (minimum/optimal): 4096 bytes / 4096 bytes
     (省略)
     Device         Boot  Start      End  Sectors  Size Id Type
     /dev/mmcblk0p1        8192   532479   524288  256M  c W95 FAT32 (LBA)
     /dev/mmcblk0p2      532480 15196159 14663680    7G 83 Linux
    
    

2019年11月8日金曜日

systemdについて

概要

Linuxのプロセス起動に使われているsystemdについての情報をまとめます。


要点

  • systemd関連のプロセス
  • systemdはLinux上のサービスを管理する仕組みで、以下のデーモンプロセスによって構成されています。

    デーモンプロセス 説明
    systemd systemdのメインプロセス
    systemd-timesyncd 時刻同期関連のプロセス
    ystemd-logind ログイン関連のプロセス
    systemd-udevd デバイス検知関連のプロセス
    systemd-journald ジャーナル(systemd関連のログ)管理をするプロセス

  • systemdで扱うUnit
  • SystemdはUnitと呼ばれる単位でサービスを管理しています。 Unitはファイルの拡張子で分類することができ、通常のプロセスであればserviceファイルを使いますが、
    ほかにも以下の種類があります。

    ファイルの拡張子 説明
    service プロセスを起動する
    device デバイスを表す
    mount ファイルシステムをマウントする
    swap スワップ領域を有効にする
    target Unitファイルをグループ化する

  • systemctlコマンドによるUnitの管理
  • systemdを使ったUnitの管理にはsystemctlコマンドを使用します。

    主なサブコマンド 説明
    status Unitの稼働状況を確認する
    start Unitを起動する
    stop Unitを停止する
    enable Unitの自動起動を有効にする
    disable Unitの自動起動を無効にする
    list-unit-files Unitの一覧を表示する

    
     $ systemctl status ssh
     ● ssh.service - OpenBSD Secure Shell server
        Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
        Active: active (running) since Fri 2019-11-08 20:24:52 JST; 17h ago
          Docs: man:sshd(8)
                man:sshd_config(5)
       Process: 408 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
      Main PID: 423 (sshd)
         Tasks: 1 (limit: 2200)
        Memory: 4.0M
        CGroup: /system.slice/ssh.service
                mq423 /usr/sbin/sshd -D
    
     11月 08 20:24:52 raspberrypi systemd[1]: Starting OpenBSD Secure Shell server...
     11月 08 20:24:52 raspberrypi sshd[423]: Server listening on 0.0.0.0 port 22.
     11月 08 20:24:52 raspberrypi sshd[423]: Server listening on :: port 22.
    
    

起動とshutdownコマンド

概要

Linuxの起動時処理の見方と、シャットダウンコマンドの使い方についての情報をまとめます。

要点

  • 起動時のカーネルの処理
  • Linux起動時のカーネルの処理内容はdmesgコマンドで確認することができます。
    
    $dmesg
    
    
    dmesgの内容は/var/log/dmesgにも保存されます。

  • システムのシャットダウン
  • システムを停止する際には、電源ケーブルを抜いたり電源ボタンを押したりするのではなく、shutdownコマンドを使用することで安全に停止することができます。
    オプション 説明
    -h シャットダウンする
    -r 再起動する
    -k シャットダウンは行わず、
    警告メッセージをログインしている人全員に通知

    ※すぐに再起動したいとき
    
     # shutdown -r now
    
    

    ※警告メッセージを出して、5分後にシャットダウンするとき
    
     # shutdown -h +5 "Please logout!"
     Shutdown scheduled for Fri 2019-11-08 16:48:11 JST, use 'shutdown -c' to cancel.
    
    
    ※このようなメッセージが出ます
    
     Please logout!
     The system is going down for poweroff at Fri 2019-11-08 16:48:11 JST!
    
    

    ※23:00に再起動をするとき
    
     # shutdown -r 23:00
     Shutdown scheduled for Fri 2019-11-08 23:00:00 JST, use 'shutdown -c' to cancel.
    
    

ハード基礎知識


概要

デバイス情報を確認するためのLinuxコマンドについての情報をまとめます。

要点

  • CPU情報の確認
  • Linuxのデバイスに関する情報は/proc配下のファイルで確認する事ができます。
    
     $ cat /proc/cpuinfo
     processor       : 0
     model name      : ARMv7 Processor rev 4 (v7l)
     BogoMIPS        : 38.40
     Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
     CPU implementer : 0x41
     CPU architecture: 7
     CPU variant     : 0x0
     CPU part        : 0xd03
     CPU revision    : 4
     (以下省略)
    
    
  • PCIデバイスの情報を表示
  • PCが使用可能なPCIデバイス情報は、lspciコマンドで表示することができます。
    
    $lspci
    
    
  • USBデバイスの情報を表示
  • 接続しているUSBデバイスの情報は、lsusbコマンドで表示することができます。

    ※lsusbコマンドでよく使うオプション
    オプション 説明
    -v 詳細に表示する
    -t 階層をツリー構成で表示する

    
     $ lsusb -t
     /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
         |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
             |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
    
    

  • カーネルモジュールの確認
  • Linuxでデバイスを利用するために必要なプログラムをカーネルモジュールといい、デバイスを使用する際にはロードしておく必要があります。 現在ロードされているカーネルモジュールを確認するにはlsmodコマンドを使います。
    
     $ lsmod
     Module                  Size  Used by
     fuse                  110592  3
     rfcomm                 49152  4
     bnep                   20480  2
     hci_uart               40960  1
     btbcm                  16384  1 hci_uart
    (以下省略)
    
    
    必要なカーネルモジュールを手動でロードする際にはmodproveコマンドを使用します。
    
    # modprobe XXXX
    
    

2019年11月2日土曜日

LEDの点灯、消灯


概要

LEDの点灯、消灯をするコマンドを作成します。

やったこと

  • LEDを接続する
  • コマンドを作成する

ラズベリーパイの立ち上げ


概要

少し前に買った、RaspberryPi3 Model B があったので、いろいろやってみます。
リモートデスクトップを使えるように設定するところまでやりました。
これで、本体だけ放置しておいても、いじれるような環境になりました。

やったこと

  1. 物の準備
  2. SDカードのフォーマット
  3. SDカードにイメージファイルの書き込み
  4. ネットワークの設定
  5. SSH接続の確認
  6. リモートデスクトップ接続の確認
  7. IPアドレス固定の設定