専門学校44日目(情報工学)6月13日(木)

1時限~3時限
Linux実習 新しいLinuxの教科書 第2版

前回、5章のファイル操作の基本を学びました。
mvコマンドで..とすると一つ上のディレクトリを指定できる。
cpやcat、mkdir、touchなどをサッと復習しました。


今日は続きのlnコマンドから学びます。リンクを理解する必要がある。
ファイルに別名を付けることができ、この機能をリンクを張るという。Windowsのショートカットに似た機能。ハードリンクとシンボリックリンクがある。
cp /etc/crontab file1
ln file1 file2
catコマンドでfile2を見ても表示されるのはfile1の内容です。ハードリンクは1つのファイルの実体に複数の名前を付ける機能。
シンボリックリンクは
ln -s file1 file2
で作成する。lsコマンドで見ると色が変わった表示になり、ls -Fで確認すると@がつく。ls -lでもリンクを確認できる。
シンボリックリンクはパス名だけが書かれた特殊なファイルでリンク先が実体のファイル。色が水色だとリンクが張られていて、色が赤だとリンクが壊れた状態を意味する。この色の変化はシェルの設定による。

リンクは長いパス名を持つ深いディレクトリに張れば、深いところへ簡単にアクセスできる。複数のバージョンを共存させる場合があるが、Ver1.1とVer1.0があったとき、普段は1.1にリンクを張り、問題があって1.0に戻したいとき、リンク先を変更するだけで簡単に戻せる。


教科書6章は飛ばします。興味があれば見ておいて。8章も飛ばします。
9章ファイルパーミッション、スーパーユーザは大事なので学びます。
Linuxで扱うファイルはすべてに所有者が設定されている。
ls -l /bin/cat
で調べると/bin/catの所有者が見れる。
-rwxr-xr-x 1 root root 35280 Feb 8 2022 /bin/cat

touch testfile1
ls -l testfile1
を実行すると
-rwxrwxrwx 1 ユーザ名 グループ名 0 Jun 13 10:29 testfile1
と表示される。
groupsコマンドでどのグループに所属しているかを把握できる。

各ファイルには権限を規定する情報が設定されている。
-rwxr-xr-x 1 root root 35280 Feb 8 2022 /bin/cat
の先頭の-はファイルタイプ、rwxr-xr-xはファイルモードです。これによりファイルのパーミッションを表す。
rwxはオーナー、r-xはグループ、r-xはその他のユーザを表します。rは読み取り、wは書き込み、xは実行。オーナーはrwxなのですべて許可されている。
ls -l /etc/crontab
を実行すると
-rw-r--r-- 1 root root 1136 Mar 23 2022 /etc/crontab
と表示されるが、実行xはどのユーザにも許可されていない。


ディレクトリにもパーミッションが設定されている。
ls -ld linux
でディレクトリの情報を表示させる。これにもrwxがついている。
ディレクトリのパーミッションにwが設定されていると、そのディレクトリ下のファイルの作成、削除が行える。実行のxが設定されているとcdコマンドで移動したり、ファイルの読み書きを行える。

touch readonly.txt
でファイルを作ってみて、ls -l readonly.txtで権限を確認する。そしてchmodで権限の設定をします。
chmodコマンドのユーザ指定はuがオーナー、gはグループ、oはその他ユーザ、aはすべてを指す。
+は権限を追加する、-は権限を禁止する、=は指定した権限と等しくする。

wsl環境だと書き込みwの権限しか操作できないらしく、今後仮想環境を作って動かしていくときにはすべての権限について操作可能になると思います。https://github.com/Microsoft/WSL/issues/81を参照のこと。

来週は続きのp.161- スーパユーザの項から学んでいきます。

今日のレポートは以下の通りです。
■実際に実施したコマンド
$ wsl -d Ubuntu
$ cd "/mnt/c/Users/飯田延千代/Linuc/"
$ touch work1
$ rm -i work1
$ less crontab
$ cp -r linux linux2
$ mv crontab2 linux2
$ cp /etc/crontab file1
$ ln file1 file2
$ rm file1
$ cat file2
$ ln -s file1 file2
$ find . -name 'study*'
$ ls -l /bin/cat
$ ls -l testfile1
$ groups
$ ls -l /etc/crontab
$ ls -ld linux
$ chmod a-wx readonly.txt
$ chmod 555 file1



■疑問点1
リンク
■調査結果・解決方法1
Linuxでファイルを作成すると、inode番号という番号が割り振られる。一つのinodeに対して複数のファイル名を付けることができて、それがハードリンクとなっている。シンボリックリンクのほうはパスでの参照となり、inodeには依存しない。

■疑問点2
パーミッション
■調査結果・解決方法2
permissionは英語で許可を意味しますが、Linuxでのパーミッションも同じ意味。ファイルやディレクトリの権限設定のことでセキュリティなどのために重要です。

■疑問点3
シンボルモードと数値モード
■調査結果・解決方法3
chmodコマンドでの2つのモード。シンボルモードではアクセス権の追加、削除、指定ができる。数値モードは、コマンドのオプション部分の入力が短くてすむが、指定したアクセス権へ固定する事しかできない。


■振り返りレポート
※実施した内容を以下に列挙する
・ハードリンクとシンボリックリンクの張り方を学びました。
・ファイルの詳細情報から権限の情報の読み方を学びました。
・ファイルのパーミッションについて書き込み(w)だけ権限の変更をしました。


4時限~6時限
国家試験対策    コンピュータ概論
          キーワードで学ぶ最新情報トピックス2024

前回は教科書p.135のディレクトリまで学びました。

■パス指定
目的のファイルやディレクトリまでの道を表したもの。ルートディレクトリから指定する絶対パスと、カレントディレクトリから見たときの位置を示す相対パスの2つがある。
/A/B/file1のように書くのが絶対パス。
./C/file2のように書くのが相対パス。.はカレントディレクトリを表す。..とドットが2つだと一つ上のディレクトリを表します。
基本情報の過去問からパスの問題を解きました。
/A/Bは絶対パスを表す。ここから../../Bでルートディレクトリの中にあるBへ。そして./AでカレントディレクトリBの中にあるAへ移動する。

■バックアップ
1.フルバックアップはすべてコピーする方式。ただし時間がかかる。
2.差分バックアップはフルバックアップ後に更新された内容のみをコピーする。
3.増分バックアップは前回のバックアップから更新された分のみをコピーする。
とあるが、差分と増分が間違えやすい。
1日目に50GBをフルバックアップして、差分バックアップは2日目に5GB増えたら、その5GBをバックアップをとる。3日目にまた5GB増えたら合計で10GBのバックアップをとる。ここまでで容量は50+5+10=65GB。増分バックアップは、3日目に5GB増えても3日目の5GBだけバックアップする。そのため5GBずつ増えたら50+5+5=60GBとなる。

どこにバックアップを取るかというと、同じ記憶装置にバックアップをとってもあまり意味はない。ただ前の状態に戻したいといった場合は同じところに保存していても意味はある。最低でも物理的にストレージは分けます。もっと言うと地理的にも離れた場所にあるほうがいい。

フルバックアップも数世代分(2~3回)残しておくといいかなと思います。

⑨言語処理ツール
■言語プロセッサ
ソフトウェアの分類でいうと基本ソフトウェアの下にある。人間の作成したプログラムを機械語に変換するプログラム。
アセンブラはアセンブラ言語で記述されたものを機械語に翻訳するプログラム。アセンブラという言語があるわけでない。CASLⅡという情報処理試験で使われた言語がある。
コンパイラは高水準言語で記述されたものを一括で機械語にする。
インタプリタは高水準言語で記述されたものを1行ずつ実行していく。
ジェネレータはパラメータを用いてプログラムを生成するプログラム。
プリプロセッサはコンパイル前に実行されるプログラム。
クロスコンパイラは異なるコンピュータ用の機械語に訳すプログラム。Windowsでも64bit用と32bit用とがあるがそれぞれに適するように作れる。


■ソフトウェアの作成手順
原子プログラム(ソースコード)があり、これをコンパイルしてオブジェクトプログラムを生成する。それからリンカにより複数のオブジェクトファイルを組み合わせロードモジュールを作成するリンクという作業をする。それから実行する。
コンパイルでは以下の順に処理がなされる。
1.字句解析:ここで使う規則の定義には正規表現がよく用いられる
2.構文解析
3.意味解析
4.最適化
5.コード生成

⑩プログラミング言語
低水準言語は機械語やアセンブラ
手続き型言語にはC、Fortran、COBOL(銀行システムで使われていた)、PL/1、BASIC(VBAなどがここから派生した)
オブジェクト指向型言語にはJava、C++
スクリプト言語(主にWebで使われる)にはECMAScript(JavaScriptの標準となる規格)、Perl(電子掲示板などの作成に使われる)、PHP、Python(人工知能分野で使われる、初心者向け言語でもある)、Ruby
マークアップ言語にはSGML、HTML、XML、CSS(これらマークアップ言語は昨日のネットワーク概論の授業でも学びました)
TIOBEで毎月検索される人気の言語ランキングが見れます。https://www.tiobe.com/tiobe-index/
実務で使われる言語かはまた別なので、そこは反映されていないランキングだそう。

⑪オープンソースソフトウェア(OSS)
無償で利用できるもので、ソースプログラムの改変も行える。
ソフトウェアの利用にはフリーソフト(無料)、シェアウェア(無料期間有)、OSS(著作権はある)、PDS(著作権は放棄した形態だが、日本の法律では著作者人格権は譲渡・放棄ができない)という形態がある。
OSSのライセンスにはいくつかある。
GPL(GNU General Public License)
BSDL(Berkeley Software Distribution License)
MPL(Mozilla Public License)
LGPL(Lesser General Public License)
ほかにもあるが主なものは上に挙げた4つ。

LAMPとLAPPがOSSを利用したシステム構成。LAMPは(Linux、Apache、MySQL、PHP)の頭文字を並べたもの。LAPPは(Linux、Apache、PostgreSQL、PHP)。

⑫ミドルウェア
基本ソフトと応用ソフトの中間に位置する。DB管理システム、通信管理システムなど、アプリ開発の基盤を提供するもの。
シェルはOSの機能の呼び出しや入出力の受付からコマンドを実行するプログラム。入力はCUIやGUIで行う。Linuxの授業でも習いました。インターフェースになる部分のことでした。
API(Application Programming Interface)はソフトウェアの機能を外部のプログラムから呼び出すための仕組み。Webシステムで使われるAPIはWebAPIという。
コンポーネントソフトウェアはソフトウェアの部品を組み合わせてアプリを開発する技術のこと。

最後に第5章のまとめノートをやり終わりました。
解答は
スプーリング
ラウンドロビン方式
優先度順方式
オーバレイ方式
メモリリーク
相対パス
絶対パス
リエントラント(再入可能)
リカーシブ(再帰)
フルバックアップ
差分バックアップ
増分バックアップ
コンパイラ
リンカ
ローダ

この記事が気に入ったらサポートをしてみませんか?