ผมจำได้ว่าตอนเริ่มทำเว็บใหม่ๆ Terminal คือสิ่งที่ผมพยายามหลีกเลี่ยงที่สุด ด้วยความที่ผมไม่ได้เรียนสายคอมมาด้วย ทำให้ผมไม่รู้สึกคุ้นเคยกับมันเลย จอดำ ตัวหนังสือสีเขียวหรือขาว ไม่มีปุ่มให้คลิก ไม่มี icon ให้ดู ดูน่ากลัวกว่าโปรแกรมอื่นๆ ที่ใช้อยู่มาก ตอนนั้นผมคิดว่าทุกอย่างทำผ่าน GUI (โปรแกรมที่มีหน้าตาให้คลิกเมาส์) ได้อยู่แล้ว ทำไมต้องไปยุ่งกับอะไรที่ดูซับซ้อนแบบนั้น
แต่พอมาถึงจุดที่ต้องดูแล server เอง ต้อง migrate WordPress ข้าม Droplet ต้องจัดการ Git สำหรับโปรเจกต์ที่มีหลายคนทำพร้อมกัน ความคิดนั้นเปลี่ยนไปเลยครับ
จุดเปลี่ยนที่ทำให้เลิกกลัว
ตอนนั้นผมจำเป็นต้องย้ายเซอเวอร์ให้กับลูกค้า 10 เว็บ
ถ้าทำผ่าน GUI ต้องเปิด phpMyAdmin, รอ page load, กด export, เลือก option ต่างๆ, รอ download ไฟล์ที่บางทีใหญ่จนรอนาน จะย้ายผ่าน plugin ฟรีก็ไม่ได้ เพราะขนาดมันเกิน (งกนั่นแหล่ะ)
ผมเลยลองหาข้อมูลว่าทำยังไงให้ทำได้เร็วๆ บ้าง และไม่เสียเงิน ซึ่งมีแต่คนแนะนำว่าทำผ่าน Terminal สิ ทำให้ผมเริ่มคิดว่าจำเป็นต้องเรียนรู้เรื่องการใช้ Terminal แล้ว
ซึ่งการย้ายเซอร์เวอร์เนี่ย เอาแค่ step backup database ใช้แค่คำสั่งเดียว
mysqldump -u user -p database_name > backup.sql
พิมพ์ครั้งเดียว รอไม่กี่วินาที ได้ไฟล์ backup ครบ ไม่ต้องคลิกผ่านหน้าไหนเลย
ตอนนั้นผมรู้สึกว่า เฮ้ย ทำไมมันเร็วจังวะนั่น
สิ่งที่เปลี่ยนไปจริงๆ ไม่ใช่แค่ความเร็ว
ถ้าจะบอกว่า Terminal ดีเพราะเร็วกว่า GUI อย่างเดียว ผมว่ามันไม่ใช่ประเด็นหลัก
สิ่งที่เปลี่ยนไปจริงๆ คือความสามารถในการทำงานที่ GUI ทำไม่ได้เลย หรือทำได้แต่ยากมาก
ตอนต้องย้ายไฟล์เว็บทั้งหมดข้าม server ผมใช้ rsync คำสั่งเดียวที่ sync ไฟล์เป็นพันไฟล์ไปยัง server ใหม่ โดยเช็คด้วยว่าไฟล์ไหนเปลี่ยนไปแล้วบ้าง ไม่ต้องโยกซ้ำทั้งหมดทุกครั้ง ถ้าจะทำแบบนี้ผ่าน FTP client มันทำไม่ได้เลยในระดับเดียวกัน
ตอนต้องเช็คว่า process ไหนกิน CPU เยอะผิดปกติบน server ผมใช้ top แล้วเห็นทุกอย่างที่กำลังรันอยู่แบบ real-time ทันที ไม่ต้องเปิด monitoring tool แยกที่ต้อง setup เพิ่ม
ไม่ใช่แค่ทำเร็วกว่า มันทำสิ่งที่ก่อนหน้านี้ผมไม่รู้ด้วยซ้ำว่าทำแบบนี้ได้
Terminal ทำให้ผมเข้าใจว่าระบบทำงานยังไงจริงๆ
อีกอย่างที่ผมไม่คาดคิดมาก่อนคือ พอใช้ Terminal บ่อยขึ้น ผมเริ่มเข้าใจว่าคอมพิวเตอร์และ server มันทำงานยังไงจริงๆ มากกว่าตอนที่ใช้แต่ GUI
ตอนใช้ GUI ล้วนๆ ผมรู้แค่ว่ากดปุ่มนี้แล้วจะเกิดอะไรขึ้น แต่ไม่รู้ว่าข้างหลังมันทำอะไรกันแน่
ตอนเริ่มพิมพ์คำสั่งเอง ผมต้องเข้าใจว่า path คืออะไร, permission คืออะไร, process คืออะไร เพราะ Terminal ไม่ได้ซ่อนอะไรไว้ มันบอกตรงๆ ว่ากำลังทำอะไรอยู่
ความเข้าใจนี้กลับมาช่วยตอนแก้บัคหรือ troubleshoot ปัญหาด้วย เพราะพอรู้ว่าระบบทำงานยังไงจริงๆ การหาว่าอะไรผิดพลาดก็เร็วขึ้นตามไปด้วย
ไม่ได้บอกว่า GUI ไม่ดี
ผมไม่ได้จะบอกว่าทุกอย่างต้องทำผ่าน Terminal เท่านั้น GUI ก็ยังมีที่ของมัน บางงานที่ visual จัดการง่ายกว่า เช่น แก้ design หรือดู layout การใช้ GUI ก็ยังเหมาะกว่าอยู่
แต่สำหรับงานที่เกี่ยวกับ server, file management ปริมาณมาก, หรือ automation ที่ต้องทำซ้ำๆ Terminal ทำให้ผมทำงานได้เร็วขึ้นและเข้าใจสิ่งที่ทำอยู่มากขึ้นจริงๆ
คำแนะนำสำหรับคนที่ยังกลัวอยู่
ผมเข้าใจความกลัวนั้นดี เพราะผมเองก็เคยกลัวมาก่อน
สิ่งที่ผมอยากบอกคือ ไม่ต้องรู้ทุกคำสั่งถึงจะเริ่มได้ แค่เริ่มจากคำสั่งง่ายๆ ไม่กี่ตัวที่ใช้บ่อยในงานที่ทำอยู่ พอคุ้นแล้วค่อยขยายไปเรื่อยๆ
ผมเองก็ไม่ได้รู้ทุกคำสั่งใน Terminal ตอนนี้ก็ยังไม่รู้ แต่คำสั่งที่ใช้บ่อยจริงๆ มันมีไม่กี่ตัว และพอรู้แค่นั้นมันก็เปลี่ยนวิธีทำงานไปได้มากแล้วครับ
ครั้งหน้าจะเขียนสอนคำสั่งพื้นฐานที่ผมใช้บ่อยที่สุด สำหรับคนที่อยากเริ่มแต่ไม่รู้จะเริ่มจากตรงไหน
มีใครเคยกลัว Terminal มาก่อนเหมือนผมบ้างมั้ย แล้วจุดเปลี่ยนของแต่ละคนคืออะไรครับ