ข้อใดบอกความหมายและลักษณะระบบปฏิบัติการ centos ได้ถูกต้องที่สุด

CentOS คือ Linux OS ที่เน้นใช้งานระดับองค์กรและรับประกันเรื่องความ stable ในเมื่อผมเล่นเกมบน Windows OS ทำงานใช้ MacOS หนนี้จึงอยากทำความรู้จักกับ CentOS เพิ่มขึ้นเพราะอยากเอามาใช้งาน — ขอแบบเบื้องต้นก่อนแล้วกัน

CentOS version details

ความเดิมจาก part ที่แล้ว

เปิด Kitematic แล้วค้นหา centos เลยครับ

เจอ official image แล้วก็กดปุ่ม CREATE

CentOS อยู่ในตระกูล Linux โดดเด่นในการใช้งานองค์กร — หน่วยงาน รับประกันเรื่องความเสถียรภาพ ถูกสร้างและส่งมอบแก่สาธารณะเพื่อประโยชน์ของผู้ที่ต้องโปรแกรมระบบปฏิบัติการคุณภาพระดับ Red Hat Enterprise Linux (RHEL) แบบไม่มีค่าใช้จ่ายและนำไปแจกจ่ายซ้ำได้ฟรี (เป็นอีกหนึ่งช่องทางโปรโมท RHEL)

CentOS GUI

CentOS เวอร์ชัน Desktop นั้นมี Graphical User Interface (GUI) แต่ที่ทำเป็น image นี้จะไม่มี GUI มันถูกตัดออกไปเพื่อให้ image มีขนาดเล็ก การใช้งานโปรแกรมจึงอยู่ในรูป text-based ทำได้เพียงพิมพ์คำสั่งสั่งงานระบบ

โปรแกรมที่จะใช้ติดต่อกับระบบนี้ชื่อว่า bash เมื่อรอกระทั่ง container พร้อมแล้วให้กดปุ่ม EXEC เพื่อใช้งาน bash ครับ

Bash

bash หรือ bash shell คือ Unix shell เป็นโปรแกรมที่ทำหน้าที่เป็น interface หรือส่วนติดต่อผู้ใช้ในรูปแบบ text command line ที่อยู่ระหว่างสิ่งที่เรียกว่า core หรือ Kernel ของระบบปฏิบัติการกับ application หรือโปรแกรมประยุกต์

Docker Image ใดๆที่ใช้ Linux เป็นระบบปฏิบัติการก็มักจะมีโปรแกรม shell นี้เสมอ

shell มีหลายประเภท แต่ละประเภทมีกลุ่มคำสั่งที่คล้ายหรือต่างกันขึ้นอยู่กับจุดประสงค์การใช้งานว่าถูกสร้างขึ้นเพื่อแก้ปัญหาอะไร ตารางต่อไปนี้แสดง directory ของ configure file ที่ shell นั้นรู้จักและจะเข้าไปอ่านค่าในความหมายต่างๆ

https://saixiii.com/what-is-shell-unix-linux/

คำสั่งพื้นฐาน

cd / ไปยัง root directory

cd /home ไปยัง home directory

pwd ดูว่าอยู่ที่ไหน

ls ดู directory และ file ทั้งหมด

ls -l ดูรายการ direcoty และ file ทั้งหมด

ls -la ดูรายการ directory และ file ทั้งหมดรวมถึงที่ซ่อนไว้ด้วย (การซ่อนไฟล์จะใช้ . นำหน้าชื่อไฟล์)

ctrl + l คือ clear screen (อื่นๆอาจใช้ clear หรือ cls)

ctrl + c ออกจากบรรทัดคำสั่ง

cd .. ย้อนกลับ 1 directory

mkdir <name> สร้าง directory เช่น mkdir pros

touch <name> สร้างไฟล์ เช่น touch data.txt

cp <src> <des> คัดลอกไฟล์จากต้นทางไปยังปลายทาง
เช่น cp /data.txt /home/user-data.txt หมายถึง copy ไฟล์ data.txt จาก root ไปยัง home ในชื่อใหม่ว่า user-data.txt

echo <mgs> > <file-name> เขียนไฟล์ด้วย msg แบบเขียนทับ
เช่น echo hello i am ProS > user-data.txt

cat <file-name> อ่านไฟล์
เช่น cat user-data.txt

อ่านไฟล์ด้วย cat

echo <msg> >> <file-name> เขียนไฟล์ด้วย msg แบบต่อจากเดิมขึ้นบรรทัดใหม่
เช่น echo I will survive. >> user-data.txt

เขียนไฟล์ต่อจากเดิมขึ้นบรรทัดใหม่ด้วย echo

mv <file-name> <new-file-name> ย้ายไฟล์แบบเปลี่ยนชื่อไฟล์ได้ด้วย
เช่น mv user-data.txt data.txt (สิ่งที่ทำคือสร้างไฟล์ใหม่แล้วลบไฟล์เก่าอัตโนมัติ)

เปลี่ยนชื่อไฟล์ด้วย mv

mv <src> <des> ย้ายไฟล์จากต้นทางไปยังปลายทาง
เช่น mv data.txt foo เมื่อ foo เป็น folder ที่เพิ่งสร้างขึ้นมา

ย้ายไฟล์เข้าไปใน foo folderย้ายไฟล์จาก foo folder กลับออกมาที่เดิม

คำสั่งอื่นๆก็สามารถค้นหาและอ่านเพิ่มเติมได้ครับ เช่น

Vi Text Editor

อีกโปรแกรมที่น่าจะใช้บ่อยคงหนี้ไม่พ้นโปรแกรมแก้ไขข้อความชื่อ Vi ย่อมาจาก Visual แถมยังมี advanced version ออกมาด้วยชื่อ VIM ย่อมาจาก Vi Improved

เราสามารถหาโปรแกรม Vi ได้ในทุก Linux เวอร์ชันหรือดูได้ที่ cd /bin

vi <file-name> เปิดไฟล์
เช่น vi /home/data.txt หากไม่พบเท่ากับเขียนไฟล์ใหม่ (in memory)

เปิด data.txt ด้วยโปรแกรม vi

เขียนและบันทึกไฟล์

ก่อนการเขียนและบันทึกไฟล์ต้องเข้าใจก่อนว่า Vi ประกอบด้วย 2 mode ได้แก่

  1. Command mode
  2. Insert mode

Command mode เราสามารถเคลื่อนย้าย cursor สามารถ cut, copy และ paste ข้อความ

Insert mode ใช้เขียนข้อความ

การเปิดไฟล์ที่มีอยู่แล้วหรือสร้างไฟล์ใหม่จะอยู่ใน Command mode หากต้องการเขียนข้อความลงไฟล์ให้สลับจาก Command mode เป็น Insert mode ในทางตรงข้ามหากอยู่ใน Insert mode แล้วต้องการบันทึกไฟล์ให้สลับเป็น Command mode แทน

Command mode เป็น Insert mode ให้กด i หนึ่งครั้ง

Insert mode เป็น Command mode ให้กด ESC หนึ่งครั้ง

คำสั่งที่น่าสนใจของ Command mode

:q ปิดไฟล์ (q คือ quit)

:q! ปิดไฟล์โดยไม่ต้องบันทึก

:w บันทึกไฟล์ (w คือ write)

:wq บันทึกแล้วปิดไฟล์

:wq! บังคับบันทึกและปิดไฟล์

i สลับเป็น Insert mode และจะเขียนข้อความ ณ cursor

a สลับเป็น Insert mode และจะเขียนข้อความหลัง cursor

A สลับเป็น Insert mode และย้าย cursor ไปท้ายข้อความ

u คือ undo ยกเลิกการเปลี่ยนแปลงล่าสุด

ctrl + r คือ redo ที่ถูก undo ล่าสุด

v คือ visual เพื่อเลือกอักษร (selected) ใช้ลูกศร (arrow keys) ช่วยเลือกได้

V คือ visual line เลือกข้อความทั้งบรรทัด

d คือ cut อักษรหรือข้อความที่ได้เลือกไว้

y คือ copy อักษรหรือข้อความที่ได้เลือกไว้

yy คือ copy ข้อความ ณ​ บรรทัดนั้นทั้งหมด

p คือ paste วางข้อความที่ได้ cut หรือ copy ณ​ บรรทัดถัดไป

dd ลบข้อความและบรรทัด ณ cursor

<number>dd เช่น 3dd หรือ 4dd ลบข้อความและบรรทัดตามจำนวนที่ระบุ

D ลบเฉพาะข้อความแต่ไม่ลบบรรทัด ณ cursor

/<text> ค้นหาข้อความภายในไฟล์ เช่น /hello

n ใช้กับฟังก์ชันค้นหา เลื่อน cursor ไปยังข้อความถัดไป

N ใช้กับฟังก์ชันค้นหา เลื่อน cursor ไปยังข้อความก่อนหน้า

ยังมีอีกมากแต่นี่คือที่ผมใช้บ่อย

คำสั่งที่น่าสนใจของ Insert mode

ESC สลับเป็น Command mode

ไม่รู้ว่ามีอีกไหม แต่ผมใช้เท่านี้ที่ mode นี้ครับ

YUM

ผมเป็นคนหนึ่งที่ติดการใช้งาน Windows แบบ user บ้านๆ จะหาเกมหรือโปรแกรมก็จะมองหาไฟล์ .exe ไม่ก็ .msi มาติดตั้ง ตั้งแต่ใช้ MacOS จึงได้รู้จักกับโปรแกรมจำพวก package management เช่น Homebrew เวลาใช้งานก็จะสั่ง brew install ตามด้วยชื่อโปรแกรมที่ต้องการ มันง่ายและสะดวกมาก อย่างเดียวกันสำหรับ Linux โปรแกรมจำพวก package management เลื่องชื่อก็เช่น yum, apt-get

yum ย่อมาจาก Yellowdog Updater Modified มันช่วยให้เราสามารถ install, update และ remove โปรแกรมที่ต้องการได้

yum --version ขอดูเวอร์ชันปัจจุบัน

yum version

yum update จะปรับปรุงเวอร์ชัน yum นี้ให้ล่าสุดเสมอ

yum -y update เหมือนกับ yum update แต่ยอมรับข้อตกลง (ทางกฏหมาย) อัตโนมัติ

yum list available แสดงรายการโปรแกรมทั้งหมดที่รู้จัก

yum list available java\* แสดงเฉพาะรายการโปรแกรม java เช่น JRE และ JDK

yum java available list

ตัวอย่าง

yum install java-1.8.0-openjdk มันก็จะหา JRE 1.8 ของ Open JDK มาติดตั้งให้

yum install JRE 1.8

คำสั่งอื่นๆของ yum ที่นี่

Hello World ด้วยภาษาจาวา

ภาษาจาวาต้องใช้โปรแกรมชื่อ javac มาแปลคำสั่ง .java ให้กลายเป็น .class และทำงาน .class ด้วยโปรแกรมชื่อ java ดังนั้นต้องบอกระบบปฏิบัติการให้ทราบก่อนว่าจะหา javac และ java ได้ที่ไหน เรียกว่าการ set path

Install JRE 1.8

yum install java-1.8.0-openjdk ติดตั้ง JRE 1.8 ของ Open JDK

Set JRE path to .bash_profile

update-alternatives --config java จะทำให้รู้ path ของ JRE ที่ได้ติดตั้งไปซึ่งด้านในจะมี bin folder ในนี้มีโปรแกรมชื่อ java ดังภาพด้านล่าง

update alternatives configuration of java

กลับไปที่ root cd / จากนั้นสร้างไฟล์ชื่อ .bash_profile ด้วย Vi ไฟล์นี้เมื่อสร้างแล้วจะมองไม่เห็น (ถูกซ่อนเพราะชื่อนำหน้าด้วยเครื่องหมาย dot) จึงต้องค้นหาด้วย ls -a หรือ ls -la

เพิ่มตัวแปรชื่อ JAVA_HOME ไว้ภายใน .bash_profile

export JAVA_HOME=<path-of-jre>
เช่น

JRE set pathlist all hidden files

Reload .bash_profile

เพื่อให้ระบบปฏิบัติการอ่านไฟล์นี้

source /.bash_profile

จากนั้นตรวจสอบด้วย

echo $JAVA_HOME
ผล

check java path already to use

Install JDK 1.8

yum install java-1.8.0-openjdk-devel
ผล

yum install JDK 1.8

Set JDK path to .bash_profile

update-alternatives --config javac
ผล

เปิดไฟล์ .bash_profile ด้วย Vi จากนั้นเพิ่ม path ของ javac ลงไป

JDK set path

หนึ่งตัวแปรมีได้หลายค่า ให้คั่นแต่ละค่าด้วยเครื่องหมาย :

โหลดไฟล์ .bash_profile อีกครั้งจากนั้นทดสอบด้วย
javac -version และ
java -version
ผล

เป็นที่น่าสังเกตอย่างหนึ่งว่า JDK นั้นจะมี JRE มาให้อยู่แล้ว แล้วเราจะติดตั้ง JRE เพียวๆแยกไว้ทำไมตั้งแต่แรก?

JRE in JDK package

คำตอบที่ผมมีให้มือใหม่คือ ชุด JDK เป็นชุดสำหรับนักพัฒนาโปรแกรม ส่วนชุด JRE เพียวๆนั้นสำหรับผู้ใช้โปรแกรม เครื่อง server ที่จะใช้งานโปรแกรมก็จะติดตั้ง JRE เพียวๆนั่นแหละครับ เราจึงควรทดสอบโปรแกรมบน JRE ของเครื่อง server เป็นหลัก

Create Hello.java

เราจะสร้างโปรเจ็กต์ชื่อ hello ไว้ใน /home จากนั้นจะสร้างไฟล์ Hello.java เขียนข้อความ “Hello Wolrd!” จากนั้นแปล .java เป็น .class แล้วรัน .class อีกที

สร้าง Hello.java ด้วย viเขียนข้อความ Hello World! บันทึกแล้วออกจากไฟล์ แปล .java เป็น .class ด้วย javacรัน .class ด้วย java

เรียบร้อย เราทำมันได้เห็นไหม ขอให้เชื่อมั่นในตนเอง ความรู้ต่างๆหาได้ในอินเตอร์เน็ต นำมาประกอบร่างสร้างเป็นงานของเรานะครับ

อ่านต่อ

อ้างอิง

https://conemu.github.io/en/ClearScreen.html