හරි, ළමයි මම මේ පාඩමට ටිකක් මහන්සි වුණා. මොකද මට තෝරලා ගන්න වුණා අපේ ටාගට් එකට අත්‍යවශ්‍ය තියරි ටික.

මට ඔයාලට කියලා දෙන්න ඕන වුණේ Hard Links සහ Soft Links ගැන. ඒත්, ඒක ගහකින් ගෙඩියක් ආවා වගේ ඩෝං ගාලා අතාරින්න මට හිතුණෙ නෑ. ඒ නිසා පොඩි තියරි ටිකක් ඔයාලට දෙන්න මම තීරණය කළා. මේ ටිකෙන් පස්සෙ මම අපිට අවශ්‍ය වෙන Hard Links සහ Soft Links පාඩම ගේන්නම්. මේක ඉගෙනගත්තම ඒක වඩාත් පැහැදිලියි, තේරුමක් ඇතිව වැඩේට බහින්න පුළුවන්. එහෙනම් අද පාඩමට යමු.

Linux File System එකේ සංවිධානය

ඕන OS එකක File management කියන ප්‍රධාන කාර්යය සිදු වෙනවා. Linux ගැන කතා කළොත් එහිදිත් File System එක ගැන අපිට කතා කරන්න සිදු වෙනවා. Linux file system එක අපිට කොටස් දෙකකට බෙදා දක්වන්න පුළුවන්. ඒ

  1. Physical Filesystem
  2. Virtual Filesystem

කියන කොටස් දෙක. අපි ඒ දෙක ගැන වෙන වෙනම සාකච්ඡා කරමු.

Physical Filesystem

භෞතික වශයෙන්, ඒ කියන්නෙ Physically දත්ත තැන්පත් කිරීම අපි මෙතනදි සලකා බලනවා. Virtual Filesystem එකෙන් අපිට පේන දේවල් ඇත්තටම තියෙන්නෙ මෙතන.

මෙතනදි අපි කතා කරන ප්‍රධාන Data blocks වර්ග තුනක් තියෙනවා. Physical Filesystem එක ඉතාමත් සරලව පහත ආකාරයට දක්වන්න පුළුවන්.

අපි දැන් මේ blocks වර්ග තුන ගැන වෙන වෙනම කතා කරමු.

Super Block

මෙතන ගබඩා වෙන්නෙ File system එක සම්බන්ධ විස්තර. i-node blocks වල ප්‍රමාණය, storage blocks වල ප්‍රමාණය වගේ file system layout එකට බොහොම වැදගත් වෙන විස්තර මෙතන ගබඩා වෙනවා.

i-node Blocks

මෙන්න අපිට වැදගත් blocks විශේෂයක්. මේවයෙ ගබඩා වෙන්නෙ files වල විස්තර. මොන විදිහේ ෆයිල් එකක්ද, කොච්චර විශාලද, ගබඩා වෙලා තියෙන්නේ කොතැනද වගේ විස්තර i-node blocks වල සටහන් වෙනවා.

තවත් විස්තරාත්මකව දැක්වුවොත්, i-node blocks වල සඳහන් වෙන්නෙ මෙන්න මේ වගේ තොරතුරු.

  • File එකේ අයිතිකාරයා ගෙ, group එකේ විස්තර.
  • File එකේ access permissions. (මතකනෙ අපි මේවා කතා කළා.)
  • File type එක.
  • File එක අන්තිමට access කරපු වෙලාව (timestamp එක), access කරපු කෙනා ගැන විස්තර.
  • Link ගණන. (ඉස්සරහට කතා කරමු මේ links ගැන.)
  • File එකේ size එක bytes වලින්.
  • Physical data blocks වලට අදාළ ලිපින (addresses).

Linux file system එකේ තියෙන file එකකට නම් ගොඩක් (links ගොඩක්) තියෙන්න පුළුවන් වුණාට, i-node තියෙන්නෙ එකයි.

I-node විස්තර බලන්න ආසයි නම්, අපි කලින් කතා කරපු කමාන්ඩ් එකකට option එකක් එකතු කරලා බලමු.

ls -i

ඔන්න ඔහොමයි පෙන්නන්නෙ. ඔතන ඔය හැම ෆයිල් එකක් ඉස්සරහින්ම පේන සංඛ්‍යාව තමයි i-node number එක.

File Storage Blocks

මේ blocks වල ගබඩා වෙන්නෙ file වල අඩංගු දත්ත. මේ ගැන ඒ තරම් දෙයක් මෙතනදි කතා කරන්න අවශ්‍ය නෑ.

ඊළඟට අපි කතා කරමු Linux filesystem එකේ අනෙක් ප්‍රධාන කොටස Virtual Filesystem එක ගැන.

Virtual Filesystem

Files සහ directories ටික hierarchy එකක් විදියට දැක්වීම සරලව virtual filesystem එක කියලා කියන්න පුළුවන්. Hierarchy කියන්නෙ සිංහලෙන් ධූරාවලිය කියන එක. ඒකට ටිකක් තේරෙන සිංහල වචනයක් තියේ නම් comment එකක් දාන්න. මං හිතන්නෙ file hierarchy එක කියන්නෙ මොකක් ද කියලා හැමෝටම තේරෙනවා ඇති.

Physical filesystem එකට සපයන අතුරුමුහුණතක් විදියට මේ virtual filesystem එක සලකන්න පුළුවන්. Virtual Filesystem එකක අන්තර්ගත වෙන විවිධ දේවල් ගැන අපි පහළින් සාකච්ඡා කරමු.

Files

File එකක් කියන්නෙ, තොරතුරු සමූහයක් කියලා කියන්න පුළුවන්. මේ තොරතුරු සමූහය එක නමකින් හඳුන්වන්න පුළුවන්. Filename එක කියලා ඒ නම හඳුන්වනවා.

Directories

Directory එකක් කියන්නෙ ඇත්තටම විශේෂ file එකක්. Files ගොඩක් එකට group කරන්න පාවිච්චි කරනවා. Directory එකක් ඇතුළෙ තවත් directories තියෙන්නත් පුළුවන්, ඒ එක්ක files තියෙන්නත් පුළුවන්.

Path එකක් කියන්නෙ මාර්ගයක් කියන එකනෙ. කිසියම් file එකකට හෝ directory එකකට යන පාර අපි pathname කියලා කියනවා. මේ pathnames වර්ග දෙකයි.

1. Absolute pathnames

මේ pathnames ආරම්භ වෙන්නෙ root directory එකෙන්. කිසිම directory එකකට සාපේක්ෂ නෑ, කොතැනකදි මේ path එක ගැහුවත් command එක යසට වැඩ කරනවා.

උදාහරණයක් විදියට, මම මගේ home directory එකේ තියෙන file1.txt කියන file එක nano editor එකෙන් ඕපන් කරන්න මෙන්න මෙහෙම ලියන්න පුළුවන්.

nano /home/optimuspnj/file1.txt

මම මේක home directory එක ඇතුළේ ඉඳන් run කළත්, මොන directory එකක් ඇතුළට cd වෙලා run කරත් කිසි ප්‍රශ්ණයක් නැතිව file එක open වෙනවා.

2. Relative pathnames

මෙතනදි, අපි path එක කියන්නෙ මොකක් හරි directory එකකට සාපේක්ෂව. අපි මේක උදාහරණයක් අරන් පැහැදිලි කර ගනිමු.

මම මගේ කලින් file එකම මගේ home directory එක ඇතුළේ ඉඳන් nano editor එකේ open කරගන්න run කරනවා මේ command එක.

nano file1.txt

කිසි අවුලක් නැතිව file එක ඕපන් වෙනවා. හැබැයි, අපි වෙන directory එකක් ඇතුළට cd වෙලා මේක ආයෙත් run කළොත් අපිට error එකක් එනවා No such file or directory කියලා.

Relative pathnames පාවිච්චි කරන්න පුළුවන් අපි නියම කරපු එක් directory එකකට සාපේක්ෂව විතරයි. මේ pathnames පටන්ගන්නෙ root directory එකෙන් නෙවෙයි.

වඩා පැහැදිලි කරගන්න තව උදාහරණයක් ගනිමු.

මම මගේ home folder එකේ mydir කියලා directory එකක් හදලා ඒක ඇතුළේ file.txt කියලා text file එකක් හැදුවොත්, home directory එකේ ඉන්න ගමන් මට පුළුවන්,

nano mydir/file.txt

කියන command එකෙන් ඒ ෆයිල් එක nano editor එකේ open කරගන්න. හැබැයි වෙන කිසිම directory එකක ඉඳන් මේ command එක පාවිච්චි කරන බෑ. මොකද මේකෙ mydir/file.txt කියන්නෙ relative path එකක් නිසා.

වැඩේ පැහැදිලියි මං හිතන්නෙ.

Note: Directory components වෙන් කරලා දක්වන්න අපි පාවිච්චි කරන්නෙ ඇල ඉර නොහොත් Forward Slash එක. Back Slash එක නෙවෙයි.

UNIX File වර්ග

Unix නොහොත් Linux ගෙ මුත්තගෙ කාලෙ ඉඳන් තිබුණ file වර්ග ටිකක් ගැන අපි දැන් කතා කරමු.

  1. Regular Files
  2. Directory Files
  3. Special Files
  4. Links
  5. Sockets

මේවා මොනාද කියලා විස්තර සහිතව පහළින් සාකච්ඡා කරමු.

Regular Files (සාමාන්‍ය ගොණු)

විවිධ තොරතුරු ඇතුළත් bytes සමූහයක් තමයි regular file එකක් කියන්නෙ.

Directory Files

දැනටමත් මේ මොනාද කියලා දන්නවා. මේවයෙ උපකාරයෙන් තමයි file hierarchy එක සකසාගන්නෙ.

Special Files (විශේෂ ගොණු)

මොනාද මේ විශේෂ ගොණු කියන්නෙ,

Input/Output devices නොහොත් ආදාන ප්‍රතිදාන උපාංග system එකත් එක්ක එක්කහු වෙන්නෙත් files විදියටයි. සෑම I/O device එකකටම /dev කියන pathname එකට assign වෙනවා. මෙන්න මේ ෆයිල් වලට තමයි ඔය special files කියන්නෙ. මේ ෆයිල් වර්ග දෙකක් තියෙනවා.

1. Character special files

Character stream එකක් input හෝ output කරන උපාංග සඳහා වූ files අපි මේ නමින් හඳුන්වනවා. උදාහරණයක් වශයෙන් keyboards, printers, networks වගේ ගන්න පුළුවන්.

2. Block special files

දත්ත blocks විදියට හුවමාරු කරන උපාංග සඳහා වූ files තමයි block special files කියන නමින් හඳුන්වන්නෙ. උදාහරණයක් විදියට, disk drives ගන්න පුළුවන්.

දැනටමත් තියෙන file එකකට හදන shortcut එකක් වගේ එකක් තමයි මේ link එකක් කියන්නෙ. Microsoft Windows වල තියෙන shortcut ගැනයි මම අර කලින් කිව්වෙ. හැබැයි මේවා ඊට වඩා සංකීර්ණයි. මේවා කොටස් දෙකක් තියෙනවා.

  1. Hard Links
  2. Soft Links

මේවා ගැන ඉදිරි පාඩම් වලදි බරටම සාකච්ඡා වෙනවා.

Sockets

ප්‍රොසෙස් අතර සන්නිවේදනය කරන්න පාවිච්චි කරන ෆයිල්ස් වර්ගයක් තමයි මේ. මැෂින් දෙකක තියෙන process දෙකක් අතර වුණත් සන්නිවේදනය කරන්න මේවාගෙ උදව්වෙන් පුළුවන්. වැඩි දුර විස්තර දැනට අවශ්‍ය නෑ.


හොඳයි, එහෙනම් අදට පාඩම මෙතනින් නවත්වන්නයි සූදානම. හතේ හත වගේ හත් වෙයි තොවිලෙ දරුණුවට ගියානෙ. මේවා කියවන්න, පාඩම් කරගන්න නම් කම්මැලියි තමයි. ලිව්වෙත් මම හෙනම කම්මැලිකමේ. හැබැයි ඉස්සරහට මේ දේවල් ගැන දැණුම යොදාගන්න වෙනවා. මේ මූලික theory ටික නැතුව හරි අමාරුයි වැඩේ. එහෙනම්, අදට සමුගනිමු. ඔබට ජය!