เรียนคำสั่ง Linux เบื้องต้นสำหรับ Cloud และ DevOps

Nopnithi Khaokaew (Game)
7 min readNov 18, 2022

--

รวบรวมคำสั่ง Linux/Unix จากประสบการณ์จริงที่คิดว่าผู้ที่ทำงานด้าน cloud, DevOps หรือแม้แต่ developer ทุกคนควรรู้

สวัสดีครับทุกคน 🙏 ผมกำลังเริ่มทำ Facebook Page และ YouTube Channel ซึ่งจะแชร์เรื่อง cloud, infrastructure as code (IaC), automation/DevOps, programming, generative AI และอื่น ๆ ตามอารมณ์ 😅

และตั้งใจจะทำวิดีโอสอนพื้นฐาน(ยัน advanced)ฟรีตั้งแต่ AWS ไล่มา Git, Linux, networking, Terraform, Docker, Kubernetes, Python, Go, etc. ไม่ครบไม่เลิกทำ 😂

รบกวนทุกคนกด Follow/Subscribe ไว้ทุกช่องทางเลยนะครับ 🙏

การจัดการ File และ Directory บน Linux

การดู Current Working Directory

pwd

  • ใช้ดูว่า terminal กำลังทำงานอยู่ที่ path ไหนหรือใน directory อะไร

ตัวอย่าง: การใช้ pwd เพื่อเช็ค Path

pwd

จะได้

/Users/nopnithi

การอ่าน File

ls

  • ใช้ list ข้อมูลที่อยู่ใน directory ปัจจุบัน

ตัวอย่าง 1: การใช้ ls เพื่อ List ข้อมูลใน Directory

ls

จะได้ (ขึ้นอยู่กับไฟล์ใน directory ของเรา)

test1.txt	test2.txt	test3.txt	test14.txt

ตัวอย่าง 2: การใช้ ls -l เพื่อ List ข้อมูลใน Directory พร้อมรายละเอียด

ls -l

จะได้

total 32
-rw-r--r-- 1 nopnithi staff 0 May 24 21:55 test1.txt
-rw-r--r-- 1 nopnithi staff 0 May 24 21:55 test2.txt
-rw-r--r-- 1 nopnithi staff 30 May 25 22:27 test3.txt
-rw-r--r-- 1 nopnithi staff 248 May 25 22:14 test4.txt
  • Column 3 คือ owner ของไฟล์ซึ่งในตัวอย่างนี้คือ nopnithi (user)
  • Column 4 คือ group ของ owner
  • Column 5 คือ ขนาดของไฟล์ (bytes)
  • Column 6 คือ วันและเวลาที่ไฟล์มีการเปลี่ยนแปลงล่าสุด
  • Column 7 คือ ชื่อไฟล์

cat

  • ใช้เพื่อแสดงเนื้อหาภายในไฟล์
  • เช่น อ่านไฟล์ /etc/ssh/ssh_config

ตัวอย่าง: การใช้ cat เพื่อแสดงเนื้อหาในไฟล์

cat /etc/ssh/ssh_config

จะได้

<output omitted>
# Site-wide defaults for some commonly used options. For a comprehensive
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.

# Host *
# ForwardAgent no
# ForwardX11 no
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# BatchMode no
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
# Port 22
<output omitted>

การเขียน File

touch

  • ใช้เพื่อสร้างไฟล์เปล่า

ตัวอย่าง 1: การใช้ touch เพื่อสร้างไฟล์ file.txt

touch file.txt

เช็คด้วยคำสั่ง ls จะได้

file.txt

ตัวอย่าง 2: การใช้ touch เพื่อสร้างไฟล์ (หลายไฟล์)

touch file1.txt file2.txt file3.txt

เช็คด้วยคำสั่ง ls จะได้

file1.txt file2.txt file3.txt

echo

  • ใช้เพื่อสร้างไฟล์พร้อมข้อความ
  • ที่จริง echo ใช้เพื่อ print ข้อความใน terminal
  • แต่เราใช้คู่กับ > เพื่อ redirect ข้อความไปเขียนไว้ในไฟล์ text

ตัวอย่าง 1: การใช้ echo เพื่อสร้างไฟล์ใหม่พร้อมข้อความ

  • สร้างไฟล์และเขียนข้อความภายในไฟล์ (ถ้าใช้คำสั่งนี้สร้างไฟล์ที่มีอยู่แล้วจะเป็นการ overwrite)
  • เช่น สร้างไฟล์ nopnithi.txt และเขียนข้อความ Hello Nopnithi
echo "Hello Nopnithi" > nopnithi.txt

เช็คด้วยคำสั่ง cat nopnithi.txt จะได้

Hello Nopnithi

ตัวอย่าง 2: การใช้ echo เพื่อเขียนข้อความต่อจากไฟล์เดิม

  • ในกรณีที่ไฟล์ nopnithi.txt มีอยู่แล้ว จะเป็นการเขียนต่อ
  • หากไม่มีไฟล์ จะเป็นการสร้างไฟล์ใหม่พร้อมข้อความ
  • เช่น เพิ่มข้อความ Goodbye Nopnithi เข้าไปที่ไฟล์ nopnithi.txt
echo "Goodbye Nopnithi" >> nopnithi.txt

เช็คด้วยคำสั่ง cat nopnithi.txt จะได้

Hello Nopnithi
Goodbye Nopnithi

nano

  • คือ text editor บน Linux
  • สามารถใช้เพื่อสร้างไฟล์ใหม่และเขียนข้อความลงไปในไฟล์
  • หากมีไฟล์อยู่แล้วจะเป็นการเปิดไฟล์เพื่อแก้ไข

ตัวอย่าง: การใช้ nano เพื่อสร้างไฟล์พร้อมข้อความ

  • สร้างไฟล์ basic-linux.txt
  • บน text editor สามารถเขียนข้อความที่ต้องการลงไปได้เลย
nano basic-linux.txt

Nano จะถูกเปิดขึ้นและสามารถเขียนข้อความที่ต้องการลงไปในไฟล์ได้

UW PICO 5.09                     File: basic-linux.txt                     











^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text^T To Spell

เช็คด้วยคำสั่ง ls จะได้

basic-linux.txt

ด้วยคำสั่ง cat basic-linux.txt จะได้

basic linux for cloud engineers

การแก้ไขข้อความใน File

nano

  • ใช้เพื่อแก้ไขข้อความภายในไฟล์
  • เช่น แก้ไขข้อความภายใน basic-linux.txt

ตัวอย่าง: การใช้ nano เพื่อแก้ไขข้อความในไฟล์

nano basic-linux.txt

แก้ไขข้อความ basic linux for cloud engineers เป็น basic linux for everyone

UW PICO 5.09                     File: basic-linux.txt                        

basic linux for everyone








^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text^T To Spell

เช็คด้วยคำสั่ง cat basic-linux.txt จะได้

basic linux for everyone

การ Replace ข้อความใน File

sed

  • ใช้คำสั่ง sed -ie 's/<oldtext>/<newtext>/g' <file-name> เพื่อ replace ข้อความในไฟล์

ตัวอย่าง: การใช้ sed เพื่อ Replace ข้อความในไฟล์

  • เช่น replace คำว่า Nopnithi เป็น Cloud Engineers ในไฟล์ nopnithi.txt
sed -ie 's/Nopnithi/Cloud Engineers/g' nopnithi.txt

เช็คด้วยคำสั่ง cat nopnithi.txt จะได้

Hello Cloud Engineers
Goodbye Cloud Engineers

การสร้าง Directory

mkdir

  • ใช้เพื่อสร้าง directory

ตัวอย่าง 1: การใช้ mkdir เพื่อสร้าง Directory

  • สร้าง directory basic-linux
mkdir basic-linux

เช็คด้วยคำสั่ง ls จะได้

basic-linux

ตัวอย่าง 2: การใช้ mkdir เพื่อสร้าง Directory (หลาย Directory)

  • สร้าง directory basic-linux1 และ basic-linux
mkdir basic-linux1 basic-linux2

เช็คด้วยคำสั่ง ls จะได้

basic-linux1 basic-linux2

การลบ File และ Directory

rm

  • ใช้เพื่อลบไฟล์

ตัวอย่าง: การใช้ rm เพื่อลบไฟล์

  • เช่น ลบไฟล์ nopnithi.txt
rm nopnithi.txt

rm -rf

  • ใช้เพื่อลบ directory
  • จะเป็นการลบไฟล์ทั้งหมดใน directory ด้วย

ตัวอย่าง: การใช้ rm -rf เพื่อลบ Directory และไฟล์ข้างใน

rm -rf basic-linux

การเปลี่ยน Directory

cd

  • ใช้เพื่อเปลี่ยน working directory

ตัวอย่าง 1: เข้าไปที่ basic-linux1

cd basic-linux1

ตัวอย่าง 2: ถอยออกมาจาก basic-linux1

cd ..

ตัวอย่าง 3: เปลี่ยน directory ไปที่ path /etc/ssh/

cd /etc/ssh/

เช็คด้วย pwd จะได้

/etc/ssh/

การ Copy File และ Directory

cp

  • ใช้เพื่อคัดลอกไฟล์

ตัวอย่าง 1: คัดลอกไฟล์

  • คัดลอกไฟล์ basic-linux.txt ไปที่ไฟล์ new-basic-linux.txt
cp basic-linux.txt new-basic-linux.txt

เช็คด้วยคำสั่ง cat new-basic-linux.txt จะได้

Hello Cloud Engineers
Goodbye Cloud Engineers

จะได้ข้อความเหมือนกับไฟล์ basic-linux.txt

ตัวอย่าง 2: คัลลอกไฟล์ไปที่ directory

  • คัดลอกไฟล์ file1.txt ไปที่ directory ชื่อ basic-linux1 pathname /Users/nopnithi/basic-linux1
cp file1.txt /Users/nopnithi/basic-linux1

เช็คด้วยคำสั่ง ls ที่ pathname Users/nopnithi/basic-linux1

file1.txt

การย้าย File และ Directory

mv

  • ใช้เพื่อย้ายไฟล์ไปที่ directory อื่น

ตัวอย่าง: ย้ายไฟล์ไปที่ Directory

  • ย้ายไฟล์ file1.txt ที่ directory ไปที่ basic-linux1directory basic-linux2
mv file1.txt /Users/nopnithi/basic-linux2

เช็คด้วยคำสั่ง ls ที่ pathname /Users/nopnithi/basic-linux2

file1.txt

การค้นหา File

find

  • ใช้คำสั่ง find / -option <file-name> เพื่อค้นหาไฟล์
  • การใช้ option
  • -name ใช้ค้นหาไฟล์ด้วยชื่อไฟล์
  • -user ใช้ค้นหาไฟล์ด้วยชื่อเจ้าของไฟล์
  • -groupใช้ค้นหาไฟล์ด้วยชื่อกลุ่ม

ตัวอย่าง: ค้นหาไฟล์ชื่อ file1

find / -name file1

จะได้

/nopnithi/file1
/nopnithi/basic-linux2/file1

grep

  • ใช้เพื่อค้นหาข้อความภายในไฟล์
  • เราสามารถใช้ regular expression กับคำสั่ง grep ได้

ตัวอย่าง: ค้นหาบรรทัดที่มีคำว่า yes ที่อยู่ใน /etc/ssh/ssh_config

grep yes /etc/ssh/ssh_config

จะได้

#   PasswordAuthentication yes
# CheckHostIP yes

การเปลี่ยนชื่อ File

mv

  • ใช้เพื่อเปลี่ยนชื่อไฟล์

ตัวอย่าง: เปลี่ยนชื่อไฟล์จาก hello.txt เป็น hello-world.txt

mv hello.txt hello-world.txt

เช็คด้วยคำสั่ง ls จะได้

hello-world.txt

การจัดการ User และ Group บน Linux

ชนิดของ User

  • Root คือ administrator user
  • System User คือ user ที่สร้างจาก software หรือ application
  • Normal User คือ user ที่ถูกสร้างโดย root user

การเช็ค User

whoami

  • ใช้เพื่อเช็ค user ที่เรา logged in

ตัวอย่าง: เช็ค user

whoami

จะแสดง user nopnithi ที่ใช้ logged in

nopnithi

การสร้าง User

useradd

  • ใช้เพื่อสร้าง user

ตัวอย่าง 1: สร้าง user ชื่อ john

useradd john

ตัวอย่าง 2: สร้าง user เข้าไปที่ group

  • สร้าง user เข้าไปที่group1 และ group2
  • ต้องเป็นการสร้าง user ใหม่
  • ต้องมี group1 และ group2 อยู่แล้ว
useradd -G group1,group2 jane

การลบ User

userdel

  • ใช้เพื่อลบ user

ตัวอย่าง: ลบ user john

userdel john

การสร้าง Group

groupadd

  • ใช้เพื่อสร้าง group

ตัวอย่าง: สร้าง group group3

groupadd group3

การลบ Group

groupdel

  • ใช้ลบ group

ตัวอย่าง: ลบ group group3

groupdel group3

การเปลี่ยน Group ของ User

usermod

  • ใช้เพื่อเปลี่ยน settings ของ existing users

ตัวอย่าง: เพิ่ม john เข้าไปอยู่ใน group group1

usermod -g group1 john

การจัดการ Network บน Linux

การดูชื่อ Hostname

hostname

  • ใช้เพื่อดูชื่อของ hostname (ชื่อของ server)

ตัวอย่าง: ดูชื่อ hostname

hostname

จะได้

nopnithi-server-1

การตรวจสอบการเชื่อมต่อ Network

ping

  • ใช้ตรวจสอบการเชื่อมต่อระหว่าง server กับ internet หรือ network อื่น
  • ใช้คำสั่ง ping ตามด้วยชื่อโดเมนหรือ IP address
  • By default, บน Linux/MAC ต้องกด Ctrl+C เพื่อหยุดการ ping

ตัวอย่าง: เช็คการเชื่อมต่อกับ Google.com

ping google.com

หากสามารถเชื่อมต่อกับปลายทางได้ จะได้ output ตามนี้

PING google.com (142.251.10.138) 56(84) bytes of data.
64 bytes from sd-in-f138.1e100.net (142.251.10.138): icmp_seq=1 ttl=115 time=0.992 ms
64 bytes from sd-in-f138.1e100.net (142.251.10.138): icmp_seq=2 ttl=115 time=1.07 ms
64 bytes from sd-in-f138.1e100.net (142.251.10.138): icmp_seq=3 ttl=115 time=1.15 ms
^C
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.992/1.072/1.154/0.071 ms

แต่ถ้าไม่ได้

PING 1.2.3.4 (1.2.3.4): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
^C
--- 1.2.3.4 ping statistics ---
5 packets transmitted, 0 packets received, 100.0% packet loss
  • บางครั้ง network ถึงกันแต่ไม่ได้ เป็นเพราะปลายทางไม่ได้เปิด/บล็อค ICMP ไว้

การ Download Package/Software ด้วย Link Address

wget

  • ใช้เพื่อ download package หรือ software ด้วย link address

ตัวอย่าง: Download ไฟล์ติดตั้ง apache tomcat

wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.63/bin/apache-tomcat-9.0.63.tar.gz

จะได้

--2022-06-04 09:39:15--  https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.63/bin/apache-tomcat-9.0.63.tar.gz
Resolving dlcdn.apache.org (dlcdn.apache.org)... 151.101.2.132, 2a04:4e42::644
Connecting to dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11576445 (11M) [application/x-gzip]
Saving to: ‘apache-tomcat-9.0.63.tar.gz’

apache-tomcat-9.0.63.tar.gz 100%[==========================================>] 11.04M --.-KB/s in 0.07s

2022-06-04 09:39:16 (154 MB/s) - ‘apache-tomcat-9.0.63.tar.gz’ saved [11576445/11576445]

เช็คด้วยคำสั่ง ls จะเห็นว่าเราได้ download package สำหรับไฟล์ติดตั้ง apache tomcat มาเรียบร้อยแล้ว

apache-tomcat-9.0.63.tar.gz

การแสดง IP Address ของ server

ifconfig

  • ใช้เพื่อแสดง IP address ของ server

ตัวอย่าง: เช็ค IP address ของ server

ifconfig

จะได้รายละเอียดของ IP address ของ server ซึ่ง IP address ของ server ที่ใช้ใน lab นี้คือ 10.4.0.27

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1460
inet 10.4.0.27 netmask 255.255.255.255 broadcast 10.4.0.27
inet6 fe80::4001:aff:fe04:1b prefixlen 64 scopeid 0x20<link>
ether 42:01:0a:04:00:1b txqueuelen 1000 (Ethernet)
RX packets 8838 bytes 150172084 (143.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4546 bytes 386143 (377.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ip address หรือ ip addr

  • ใช้เพื่อแสดง IP address ของ server ได้เช่นเดียวกับคำสั่ง ifconfig

ตัวอย่าง: เช็ค IP address ของ server

ip address

จะได้

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
link/ether 42:01:0a:04:00:1b brd ff:ff:ff:ff:ff:ff
inet 10.4.0.27/32 brd 10.4.0.27 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::4001:aff:fe04:1b/64 scope link
valid_lft forever preferred_lft forever

การเชื่อมต่อ Remote Host และเช็ค Port Status

telnet

  • ใช้ telnet protocol เชื่อมต่อเข้าไปที่ remote host
  • ปัจจุบันไม่แนะนำให้ใช้ในการ remote เพราะไม่ปลอดภัย (ควรใช้ SSH แทน)
  • และยังสามารถใช้เพื่อเช็ค port status ว่าเปิดใช้อยู่หรือไม่

ตัวอย่าง: telnet ไปที่ 10.1.1.1 port 22

telnet 10.1.1.1 22

output แสดงให้เห็นว่า server สามารถเชื่อมต่อไปยัง server 10.4.0.9 ได้ด้วย port 22

Trying 10.1.1.1...
Connected to 10.1.1.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.6

หากไม่ได้จะค้างประมาณนี้ (เปลี่ยนเป็น port 443 ซึ่ง server ไม่ได้เปิดไว้)

❯ telnet 10.1.1.1 443
Trying 10.1.1.1...

การเข้าถึง Application (HTTP Request) ด้วย URL

curl

  • ใช้เพื่อเช็คการเข้าถึง application จาก application layer หรือ HTTP
  • เป็นการส่ง HTTP request ไปยังปลายทาง
  • ใช้คำสั่ง curl ตามด้วย url

ตัวอย่าง: เช็คการเข้าถึงเว็บไซต์ Google.com

curl https://www.google.com

จะได้ HTML และ javascript จากหน้าเว็บไซต์ https://www.google.com

<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="th"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"><title>Google</title><script nonce="TGyCm2qmLRFQjfxbxVo8qg">(function(){window.google={kEI:'N0elYo3lHfDu4-EP9LS4kAY',kEXPI:'0,1302536,56873,1710,4349,206,2414,2390,2316,383,246,5,1354,4013,1123753,1197790,380701,16111,17447,1954,9286,17572,4858,1362,283,9007,3027,2817,14766,4997,13228,3847,10623,22740,6674,1279,2742,149,1103,840,1983,3,211,4100,3514,606,2023,1733,43,521,6342,8328,3227,2845,7,17450,11625,4695,4465,13142,3,346,230,6460,148,13975,4,1528,2304,1237,5802,6344,18729,2658,7356,13659,4437,16786,652,5169,2536,4094,4052,3,3541,1,42154,2,14022,14116,11623,5679,1021,2380,2719,18278,2,6,7736,4568,6253,23424,830,422,5835,12137,2831,4332,21,6068,1395,445,2,2,1,10789,13036,10962,6582,627,172,3043,8729,2908,2331,5010,3421,2,6,12955,5706,3466,53,554,23,6317,202,345,1279,1663,1,1108,4576,209,1496,420,1491,2804,1787,6739,1309,1295,2,546,2542,1331,195,644,353,2847,807,1758,2698,46,963,1089,4,246,1576,636,287,289,49,623,465,522,2,122,4,505,115,26,820,1686,861,1482,169,34,71,147,439,1015,7,1,200,11,603,488,729,323,145,944,703,5401399,2729,673,4,52,5995368,2804423,3311,141,795,19735,1,1,346,6,182,6,20730295,3219996,4042142,1964,2935,159,1358,7812,4409,2395,159,393,458,491,225,1965,1497,932716',kBL:'4YM4'};google.sn='webhp';google.kHL='th';})();(function(){
var f=this||self;var h,k=[];function l(a){for(var b;a&&(!a.getAttribute||!(b=a.getAttribute("eid")));)a=a.parentNode;return b||h}function m(a){for(var b=null;a&&(!a.getAttribute||!(b=a.getAttribute("leid")));)a=a.parentNode;return b}
function n(a,b,c,d,g){var e="";c||-1!==b.search("&ei=")||(e="&ei="+l(d),-1===b.search("&lei=")&&(d=m(d))&&(e+="&lei="+d));d="";!c&&f._cshid&&-1===b.search("&cshid=")&&"slh"!==a&&(d="&cshid="+f._cshid);c=c||"/"+(g||"gen_204")+"?atyp=i&ct="+a+"&cad="+b+e+"&zx="+Date.now()+d;/^http:/i.test(c)&&"https:"===window.location.protocol&&(google.ml&&google.ml(Error("a"),!1,{src:c,glmm:1}),c="");return c};h=google.kEI;google.getEI=l;google.getLEI=m;google.ml=function(){return null};google.log=function(a,b,c,d,g){if(c=n(a,b,c,d,g)){a=new Image;var e=k.length;k[e]=a;a.onerror=a.onload=a.onabort=function(){delete k[e]};a.src=c}};google.logUrl=n;}).call(this);(function(){
google.y={};google.sy=[];google.x=function(a,b){if(a)var c=a.id;else{do c=Math.random();while(google.y[c])}google.y[c]=[a,b];return!1};google.sx=function(a){google.sy.push(a)};google.lm=[];google.plm=function(a){google.lm.push.apply(google.lm,a)};google.lq=[];google.load=function(a,b,c){google.lq.push([[a],b,c])};google.loadAll=function(a,b){google.lq.push([a,b])};google.bx=!1;google.lx=function(){};}).call(this);google.f={};(function(){
document.documentElement.addEventListener("submit",function(b){var a;if(a=b.target){var c=a.getAttribute("data-submitfalse");a="1"===c||"q"===c&&!a.elements.q.value?!0:!1}else a=!1;a&&(b.preventDefault(),b.stopPropagation())},!0);document.documentElement.addEventListener("click",function(b){var a;a:{for(a=b.target;a&&a!==document.documentElement;a=a.parentElement)if("A"===a.tagName){a="1"===a.getAttribute("data-nohref");break a}a=!1}a&&b.preventDefault()},!0);}).call(this);
<output omitted>

เนื้อหาที่เราจะอัพเดทเพิ่มให้ในภายหลัง

  • การจัดการ System และ Process บน Linux
  • การจัดการ Service บน Linux
  • การจัดการ Package บน Linux

อย่าลืมนะครับ รบกวนทุกคนกด Follow/Subscribe ไว้ทุกช่องทางเลยนะครับ 🙏

--

--

Nopnithi Khaokaew (Game)
Nopnithi Khaokaew (Game)

Written by Nopnithi Khaokaew (Game)

Cloud Solutions Architect & Hobbyist Developer | 8x AWS/Azure Certified, CKA, CKAD, CKS, 2x HashiCorp Certified (Terraform, Vault), etc.

Responses (1)