10 คำสั่ง ที่ควรรู้จักสำหรับ Cloud Development

12-ก.พ.-20

คัมภีร์เทพ IT

ในแวดวงพัฒนา Software เริ่มมีการหันไปใช้ Cloud Computing กันมากขึ้น มีองค์กรจำนวนมากรวมถึงธุรกิจ Start-ups ก็มีการ Migrate Functions ไปยัง Cloud ในบทความนี้จะมาบอกถึง 10 คำสั่ง ที่ควรรู้จักสำหรับ Cloud Development เพื่อให้คุณทำงานได้สะดวกยิ่งขึ้น

1. LSOF

ในระหว่างการ Develop และ Run Local Servers อยู่ คุณอาจต้องการอยากทราบว่า Process ของคุณกำลัง Run อยู่ที่ไหน 

LSOF หรือ “List Open Files” ซึ่งมักใช้ในระบบที่คล้ายคลึงกับ Unix เพื่อรายงาน List ของ Files ทั้งหมดที่ถูกเปิดอยู่ รวมทั้ง Process ที่เปิดพวกมันขึ้นมา 

หากคุณใช้ Option –i (internet) มันจะช่วยให้คุณได้เห็น Files ที่ถูกเปิดโดย Process ที่เกี่ยวข้องกับการเชื่อมต่อ Network และ Internet

เกี่ยวกับ LSOF Columns

ไม่ใช่ว่าทุก Column ที่สามารถใช้ได้กับ File ทุกประเภทที่เปิดอยู่ ดังนั้น จึงไม่แปลกที่บาง File จะแสดงข้อมูลที่ว่างเปล่า

  • Command: ชื่อของคำสั่งที่เกี่ยวข้องกับ Process ที่เปิด File
  • PID: Process Identification number ของ Process ที่เปิด File
  • TID: Task (Thread) Identification number โดย Column ที่ว่างเปล่า หมายถึง มันไม่ใช่ Task แต่เป็น Process
  • User: User ID หรือ ชื่อของ User ที่เป็นเจ้าของ Process นั้น ๆ, หรือ User ID หรือ Login ของบุคคลที่เป็นเจ้าของ Directory ใน /proc ที่ lsof ค้นหาข้อมูลเกี่ยวกับ Process
  • FD: แสดง File Descriptor ของ File โดยที่ File Descriptors จะถูกระบุไว้ที่ด้านล่าง
  • Type: ประเภทของ Node ที่เกี่ยวข้องกับ File โดยที่ ประเภทของ Node จะถูกระบุไว้ที่ด้านล่าง
  • Device: ประกอบไปด้วย Device numbers คั่นด้วยเครื่องหมายจุลภาค (,) สำหรับ Character Special, Block Special, Regular, Directory หรือ NFS File หรือ Kernel Reference Address ที่ระบุถึง File บางครั้งมันอาจแสดง Base Address หรือ Device name ของ Linux AX.25 Socket Device
  • Size/Off: แสดงขนาดของ File หรือ File Offset เป็น Bytes
  • Node: แสดง Node number ของ Local File, หรือ inode number ของ NFS File ใน Server Host, หรือ Internet Protocol Type มันอาจแสดง STR สำหรับ Stream หรือ IRQ หรือ inode number ของ Linux AX.25 Socket Device
  • Name: แสดงชื่อของ Mount Point และ File System ที่มี File นั้นอยู่

2. KILL

หากคุณเคยพัฒนา Web มาก่อน คุณอาจได้เจอกับ Error ตามด้านล่างมาบ้างแล้ว:

คุณสามารถค้นหา Process โดยใช้ lsof ได้:

จากนั้นคุณสามารถ Kill Process ด้วยคำสั่ง ดังที่แสดงอยู่ด้านล่างนี้:

  • kill – Kill Process โดยใช้ ID
  • killall – Kill Process โดยใช้ ชื่อ

คำสั่ง kill เป็น Built-in Command ซึ่งใช้เพื่อยุติ Process แบบ Manual คำสั่ง kill จะส่งสัญญาณไปยัง Process ที่ยุติ Process

หากคุณใช้งาน Linux คุณสามารถใช้คำสั่ง pkill ได้:

3. PS

PS (Processes Status) เป็น Unix/Linux Utility ที่ใช้สำหรับการดูข้อมูลที่เกี่ยวข้องกับการเลือก Process ที่กำลัง Run อยู่บน System 

หากใช้ -ef  จะเป็นการแสดงแบบเต็มรูปแบบ

คุณสามารถใช้ ps รวมกับ grep เพื่อแสดง List ของ Process ที่คุณต้องการ

4. CHMOD

ปัญหาที่พบบ่อยอีกประการหนึ่ง ก็คือเรื่องของ Permission ไม่ว่าจะเป็นแบบ Local หรือ Remote

chmod เป็นคำสั่งที่ใช้ในการเปลี่ยน Access Permissions ของ File System Objects (Files และ Directories)

โดยทั่วไป คำสั่ง chmod จะอยู่ในรูปแบบ:

โดยที่ Mode จะระบุถึง Permission ที่มีการ Modify

คุณสามารถระบุ Mode ด้วย Octal numbers หรือด้วย ตัวอักษร(Letters) การใช้ตัวอักษรนั้นง่ายต่อการเข้าใจสำหรับคนส่วนใหญ่ หากคุณต้องการเรียนรู้ข้อมูลของการ Convert ระหว่างตัวอักษรกับตัวเลข และรายละเอียดของ Concept  สามารถดูได้ที่นี่

Permissions Control ของการเข้าถึง 3 ประเภท: ประกอบด้วย Reading, Writing และ Executing คุณสามารถใช้ประเภทต่าง ๆ ดังกล่าวมา Mix and Match กันได้ ทำให้เกิดรูปแบบของสิทธิ์ในการเข้าถึง ถึง 7 ระดับ ดังที่แสดงด้านล่าง:

ตัวอย่าง:

chmod 444 file – อนุญาตสิทธิ์ในการอ่าน สำหรับ Owner, Group และ World
chmod 777 file – อนุญาตให้ทุกคนสามารถ Read, Write และ Execute File

สำหรับ Option การใช้งานโดยทั่วไป:

  • -R Recursive : รวม Objects ใน subdirectories ด้วย
  • -v Verbose : แสดง Objects ที่ถูกเปลี่ยนแปลง (ส่วน Objects ที่ไม่เปลี่ยนแปลงจะไม่ถูกแสดง)

5. CURL

ในช่วงที่คุณกำลัง Develop คุณอาจมีการใช้ API และต้องมีการ Request พวกมันในระหว่างการ Develop

curl เป็น Command-Line Tool สำหรับการ Request ผ่าน HTTP(s) คุณสามารถใช้คำสั่งนี้เพื่อทดสอบ Endpoint หรือ Connectivity ของ Application เพื่อ Upstream Service Endpoint

curl ยังมีประโยชน์ในเรื่องการพิจารณาว่า Application ของคุณสามารถเข้าถึง Service อื่น ๆ เช่น Database หรือตรวจสอบว่า Service ของคุณทำงานปกติดีหรือไม่

คุณสามารถใช้ -I option เพื่อแสดงเฉพาะ Header เท่านั้น

6. JQ

บางครั้ง คุณอาจต้องการ pretty-print JSON Output เพื่อค้นหารายการที่ต้องการ

คุณสามารถติดตั้ง jq ด้วย brew บน Mac

คุณสามารถติดตั้ง jq ด้วย chocolatey บน Windows

คุณสามารถใช้ curl ร่วมกับ jq เพื่อจัดรูปแบบ JSON Response ของคุณให้ดูง่ายขึ้น

7. NGROK

ngrok เป็นเครื่องมือที่ยอดเยี่ยมในการเปิดเผย Local Servers ของคุณไปยัง Public Internet ผ่าน Secure Tunnels

แล้วมันทำงานอย่างไร?

คุณ Download และ Run Program บนเครื่องของคุณ และระบุ Port ของ Network Service ซึ่งโดยทั่วไปมักจะเป็น Web Server

มันเชื่อมต่อกับ ngrok Cloud Service ซึ่งยอมรับ Traffic บน Public Address และถ่ายทอด Traffic ผ่าน ngrok Process ที่ Run อยู่บนเครื่องของคุณ และจากนั้นไปยัง Local Address ที่คุณต้องการ

คำสั่งนี้มีประโยขน์ในกรณี:

  • สามารถ Demo Web Sites ได้โดยที่ไม่ต้อง Deploy
  • สร้าง Webhook Consumers บน Dev Machine ของคุณ
  • ทดสอบ Mobile Apps ที่เชื่อมต่อกับ Backend ที่กำลัง Run อยู่บนเครื่องของคุณ
  • Address ที่ Stable สำหรับ Device ที่เชื่อมต่อของคุณที่ถูก Deploy
  • การ Run Personal Cloud Services จากที่บ้านของคุณ

การติดตั้ง

วิธีที่ง่ายที่สุดในการติดตั้งก็คือ การใช้ brew

คุณสามารถ Download ได้จากที่นี่

การใช้งาน

ทำการ Start Local Server ของคุณ จากนั้นเปิดเผยกับ Web ด้วย ngrok:

8. SSH

ทุกอย่างถูกทำใน Local แต่ตอนนี้ถึงเวลาที่จะต้อง Deploy มันบน Cloud แล้ว

SSH หรือ Secure Shell เป็น Protocol ที่ใช้เพื่อเข้าสู่ Remote Systems อย่างปลอดภัย มันเป็นวิธีที่ใช้กันโดยทั่วไปในการเข้าถึง Remote Linux Server และระบบที่คล้ายคลึงกับ Unix Server

ตามค่าเริ่มต้นของ Linux, Unix และ Apple Computer ส่วนใหญ่ ได้รวม SSH Client ไว้ให้อยู่แล้ว กรณีที่คุณไม่มี คุณก็สามารถใช้ OpenSSH Project ซึ่งได้จัดเตรียมการ Implementation แบบฟรี ๆ ของ Full Suite ของ SSH Tools รวมถึง SCP Client ไว้ให้แล้ว สำหรับข้อมูลเพิ่มเติม สามารถดูที่ http://www.openssh.org

Syntax พื้นฐานที่สุด ก็คือ:

Parameter ที่ถูกใช้งานมากที่สุด ก็คือ:

  • -i <certificate path>: ระบุ Certificate Path ที่จะใช้
  • -p <number>: ระบุ Port ที่จะเชื่อมต่อกับ Remote SSH Server

ส่วนคำสั่ง SSH อื่น ๆ ที่น่าสนใจ เช่น การสร้าง SSH Key ใหม่ และเพิ่มมันลงใน SSH-Agent: 

ssh-keygen: สร้าง Public-Private Key Pair เพื่อรักษาความปลอดภัยของ SSH Connection

ssh-agent: ถูกใช้งานเมื่อคุณต้องการใช้ Private Keys กับ Passwords Upload Keys ของคุณด้วย ssh-agent เพื่อให้ SSH Invocations ของ Application สื่อสารกับ ssh-agent สำหรับการตรวจสอบความถูกต้อง (Authentication)

คุณสามารถ Start ssh agent ได้ดังนี้

หากคุณใช้ macOS Sierra 10.12.2 หรือใหม่กว่านั้น คุณจะต้องแก้ไข ~/.ssh/config File เพื่อ Load Keys ลงใน ssh-agent และเก็บ Passphrases ใน Keychain ของคุณโดยอัตโนมัติ

ssh-add: เพิ่ม SSH Private Key ของคุณไปยัง ssh-agent และเก็บ Passphrases ใน Keychain ของคุณ

9. SCP

SCP (Secure Copy) เป็น Command-Line Utility ที่อนุญาตให้คุณสามารถ Copy Files และ Directories ระหว่าง 2 Locations ได้อย่างปลอดภัยยิ่งขึ้น

ด้วย SCP คุณสามารถ Copy Files หรือ Directories:

  • จาก Local System ของคุณไปยัง Remote System
  • จาก Remote System ไปยัง Local System ของคุณ
  • ระหว่าง 2 Remote Systems จาก Local System ของคุณ

เมื่อคุณ Transfer ข้อมูลด้วย SCP, ทั้ง Files และ Password จะถูก Encrypt ทำให้ใครก็ตามที่กำลังสอดแนม Traffic จะไม่สามารถได้ข้อมูลที่สำคัญไป

SCP Command Syntax จะมีรูปแบบ ดังต่อไปนี้:

  • หากต้องการใช้ SCP พร้อมกับ Key Pair ให้ใช้คำสั่งต่อไปนี้: scp -i path/to/key file/to/copy user@ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com:path/to/file
  • หากต้องการใช้ SCP โดยที่ไม่มี Key Pair ก็ให้ลบ Flag -i ออก และพิมพ์ Password ของ User เมื่อมันขึ้นมาให้กรอก
  • หากต้องการ Copy ทั้ง Directory ให้เพิ่ม -r recursive option: scp -i path/to/key -r directory/to/copy user@ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com:path/to/directory

นี่คือตัวอย่างการ Copy File ไปยัง AWS EC2 Instance:

10. SYSTEMCTL

เมื่อเชื่อมต่อกับ Cloud Instances ของคุณแล้ว systemctl จะช่วยให้คุณสามารถตรวจสอบสถานะของ Services แต่ละรายการได้

อีกทั้งคุณยังสามารถใช้ is-active, is-enabled และ is-failed เพื่อตรวจสอบสถานะของ Services ได้

นอกจากนี้คุณยังสามารถ Start และ Stop Services โดยใช้ systemctl ได้

ที่มา:  https://medium.com/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด