Saturday, May 14, 2016

หมายหมายแต่ละอย่างของ Command top linux

เมื่อเข้า Terminal พิมคำสั่ง top จะบอกอะไรเราบ้าง

บรรทัดบนสุด
top – 09:13:20 up 187 days,  8:40,  1 user,  load average: 0.43, 0.66, 0.61
สีแดง: เวลาปัจจุบันของ server
สีเขียว: uptime (ระยะเวลาตั้งแต่ boot OS ขึ้นมา)
สีม่วง: จำนวน user ที่ login เข้าไปใน shell (การ login หน้าเครื่อง + ssh ที่เปิด terminal เท่านั้น)
สีน้ำเงิน: load average : ปริมาณงานที่ “ค้าง” ในระบบเฉลี่ย ในรอบ 1 , 5 และ 15 นาทีตามลำดับ
บรรทัดที่ 2: บรรทัดนี้จะบอกข้อมูลเกี่ยวกับ process ในเครื่องครับ
Tasks: 183 total,  3 running, 180 sleeping,  0 stopped,  0 zombie
สีแดง: จำนวน process ทั้งหมด
สีเขียว: จำนวน process ที่กำลังเรียกใช้ CPU อยู่ “ณ เวลานั้นๆ”
สีม่วง: จำนวน process ที่ไม่มีการทำงาน/ไม่มีการเรียกใช้ CPU อยู่
สีน้ำเงิน: process ที่อยู่ในสถานะ “หยุด” (ไอนี้ไม่แน่ใจครับ คู่มือมันเขียนแบบนั้นแต่ผมไม่เคยเห็นตัวเลขขึ้นซักที)
สีชมพู: process ผีดิบ lol มันคือ process ที่ตาย/จบการทำงานไปแล้ว แต่ยังไม่สามารถ clear ออกจากหน่วยความจำได้ ส่วนมากจะเป็นพวก process ที่รอการตอบสนองจาก hardware ต่างๆ อยู่ครับ (รวมถึงแรมด้วย
บรรทัดที่ 3: การใช้งาน CPU อันนี้มีของเล่นนิดหน่อยครับ สำหรับเครื่องที่ cpu หลาย core หรือหลาย cpu
Cpu(s):  4.0%us,  0.7%sy,  0.0%ni, 94.1%id,  0.9%wa,  0.0%hi,  0.3%si,  0.0%st
สังเกตดีๆ มันจะเขียนหน้าบรรทัดว่า Cpu(s) <– ตรง (s) หมายความว่าเป็นภาพรวม cpu ทุก core
ให้กดแป้นพิมพ์เลข 1 ตรงแป้นพิมพ์ธรรมดา ที่อยู่ข้างๆ ปุ่มตัวหนอน (` / ~) แล้วมันจะแตกออกมาเป็นแบบนี้ครับ
Cpu0  : 27.6%us,  7.2%sy,  0.2%ni, 53.6%id, 10.9%wa,  0.0%hi,  0.5%si,  0.0%st
Cpu1  : 28.1%us,  7.2%sy,  0.1%ni, 55.3%id,  9.0%wa,  0.0%hi,  0.4%si,  0.0%st
Cpu2  : 27.8%us,  7.0%sy,  0.2%ni, 62.0%id,  2.8%wa,  0.0%hi,  0.2%si,  0.0%st
Cpu3  : 28.1%us,  7.3%sy,  0.2%ni, 58.8%id,  3.4%wa,  0.2%hi,  2.1%si,  0.0%st
แยกกันให้เห็นหมดเลย ว่า CPU ไหนกำลังทำอะไรอยู่
ทีนี้ แต่ละ column ที่มีตัวอักษรย่อสองตัว มีความหมายต่างกันตามนี้ครับ
us => user :: เป็นการเรียกใช้ CPU ตามปกติของโปรแกรม ที่เป็นการประมวลผลภายในโปรแกรมนั้นๆ
sy => system :: การเรียกใช้คำสั่งในระดับ kernel ที่มีการประมวลผลอยู่ภายใน kernel โดยไม่เรียกใช้ hardware
ni => nice :: การจัดลำดับความสำคัญของการประมวลผล (priority) ไว้สลับการทำงานของ process ที่มี priority ต่างๆ กันเวลาเรียกใช้ cpu พร้อมๆ กัน
id => idle :: cpu ที่ว่างงาน
wa => iowait :: เป็นการ ‘เสียเวลารอ’ การเรียกใช้ และติดต่อกับ hardware ตั้งแต่ harddisk ram การ์ดจอ การ์ดแลน (แต่ส่วนใหญ่ก็ harddisk แหละ)
hi => ?
si => ? (สามอันนี้ขออภัยด้วยครับ ไม่ทราบจริงๆ ส่วนมากก็ไม่ค่อยขึ้นมาให้เห็นเท่าไหร่ด้วย)
st => ?
บรรทัดที่ 4-5: เกี่ยวกับหน่วยความจำ ขอรวบเป็นหัวข้อเดียวเลยนะครับ เพราะมันเกี่ยวข้องกัน
Mem:  8310380k total,  4970936k used,  3339444k free,  217448k buffers
Swap:  6225904k total,    52816k used,  6173088k free,  3001860k cached
สีแดง: RAM ทั้งหมดที่ติดตั้งไว้ และ OS มองเห็น (หมายถึงหน่วยความจำหลักอย่างเดียวครับ)
สีชมพู: ใช้แรมไปแล้ว “ทั้งหมด” เท่าไหร่
สีเขียว: แรมที่ยังว่างจริงๆ (คือไม่ได้จองให้กับอะไรเลย)
สีส้ม: แรมที่ถูกใช้เป็น buffer ที่พักข้อมูลก่อนที่จะมีการอ่าน/เขียนลง harddisk หรือ CPU
สีม่วง: swap space พื้นที่แรมเสมือนทั้งหมด ที่ใช้พื้นที่จาก harddisk เก็บข้อมูลแทนแรม — บน windows มันจะมีชื่อว่า pagefile
สีน้ำเงิน: ปริมาณการใช้งาน swap space มากน้อยไม่ใช่ปัญหาเท่าไหร่ (ถึงมันจะไม่ควรใช้ก็ตาม) แต่ถ้าตัวเลขแกว่งไปมา (พร้อมกับ iowait พุ่ง) หมายความว่ามีปัญหาแรมไม่พอจนต้องมาเขียนลง swap space
สีน้ำตาล: พื้นที่ swap space ที่ไม่ได้ใช้งาน
สีดำ: เป็น file system memory cache ครับ คือ linux จะมีการใช้ ram เพื่อเก็บข้อมูลไฟล์ที่มีการเรียกใช้งานบ่อยๆ ไว้ใน ram (เผื่อมีอะไรก็อ่านเอาจากแรมไปเลย เร็วกว่าเยอะ)
วิธีคิดพื้นที่แรมว่าง ให้คิดจาก free + cached ไม่นับพื้นที่ cache เป็นพื้นที่ที่มีการใช้งาน
เพราะมันจะถูกลบออกได้เสมอถ้ามีความต้องการใช้แรมจาก process เยอะๆ
ส่วนพื้นที่ที่เหลือด้านล่าง จะเป็นรายการ process ทั้งหมด (แสดงเท่าที่พื้นที่จอเหลือ)
เรียงลำดับตามปริมาณการใช้งาน CPU ของ process นั้นๆ (เปลี่ยนได้ครับ)
มีหัวข้อตามนี้
PID : หมายเลข process id
USER : user ที่ process ทำงาน
PR : priority ของ process ที่ nice เท่ากัน
NI : รหัส nice เรียงความสำคัญของ process (ยิ่งน้อยยิ่งสำคัญ)
VIRT : ปริมาณการใช้งาน virtual image ทั้งหมด (ตั้งแต่ process ยันเตไปถึงการเรียก library)
RES / SHR : การใช้แรมส่วนของ private (เฉพาะภายใน app) / shared (ram กลางของระบบ)
S : สถานะของ process
%CPU : ปริมาณการใช้งาน CPU (นับต่อ core นะครับ) สมมติ cpu 4 core + process รัน 4 thread แต่ละ thread เรียกใช้ cpu เต็มที่ มันก็ขึ้น 400 ขึ้นมาได้เหมือนกัน
%MEM : ปริมาณการใช้งาน ram เป็น %
TIME+ : “ระยะเวลา” ที่เรียกใช้ CPU ทั้งหมดตั้งแต่รัน process (เพราะ process ไม่ได้ทำงานตลอดเวลา)
COMMAND : คำสั่งที่ใช้รัน process

ที่มา : http://blog.hostthaisiam.com/?p=37

Monday, May 9, 2016

วิธีทำ Wildcard DNS บน DirectAdmin

การทำ Wildcard DNS บน DirectAdmin โดยทั่วไปแล้ว
การทำ Wildcard DNS บน DirectAdmin นั้น ไม่ยากเลยครับ แต่การทำ Wildcard DNS จะทำอยู่บน VPS หรือไม่ก็ DedicatedServer เท่านั้น พวก Share Hosting ทั่วไปมักไม่สามารถทำได้

ขั้นตอนการทำ
  •  1. Login เข้า Direct Admin
  •  2. เข้าไป DNS Administrator -> เลือก Domain -> ใส่ * และ IP ตรง A Record

  • 3. เข้าไป Custom HTTPD Configurations -> เลือก Domain -> ใส่ ServerAlias *.|DOMAIN| -> กด Save
 
  • 4. เสร็จเรียบร้อยครับ ง่ายไหมครับ


Friday, March 4, 2016

วิธีสร้าง local .gitignore

  • เปิด Terminal แล้วเข้าไปที่ Fodel ที่ต้องการสร้าง .gitignore
  • พิมพ์ touch .gitignore สำหรับสร้าง .gitignore ไฟล์.

ตัวอย่างการกำหนดค่า  .gitignore


# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so

# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip

# Logs and databases #
######################
*.log
*.sql
*.sqlite

# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

วิธีตั้งค่า Wildcard Subdomain ใน Appache

เพิ่มโค้ดข้างล่างนี้ไนไฟล์ vhost apache
 
NameVirtualHost *:80

<VirtualHost *:80>
  DocumentRoot /var/www/example
  ServerName example.com
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot /var/www/wildcard
  ServerName other.example.com
  ServerAlias *.example.com
</VirtualHost>