- เรียนรู้วิธีการใช้งานระบบไฟล์ด้วยคำสั่ง ls, cd และ pwd และจัดการโฟลเดอร์ด้วยคำสั่ง mkdir, rm และ cp
- เรียนรู้วิธีการดูและค้นหาข้อมูลในไฟล์ข้อความโดยใช้คำสั่ง cat, less, grep, sed, awk และ find
- ควบคุมสิทธิ์การเข้าถึง กระบวนการทำงาน และเครือข่ายด้วยคำสั่ง chmod, chown, ps, top, htop, ping, ip และ ss ในสภาพแวดล้อมเซิร์ฟเวอร์
- ติดตั้งและอัปเดตซอฟต์แวร์ด้วย apt, ใช้ tar/zip, wget และ scp และทำงานอัตโนมัติโดยการรวมคำสั่งและการเปลี่ยนเส้นทาง

ไม่ว่าคุณจะทำงานเกี่ยวกับเซิร์ฟเวอร์ การพัฒนาเว็บไซต์ หรือเพียงแค่ต้องการใช้พีซีของคุณให้เกิดประโยชน์สูงสุดไม่ช้าก็เร็ว คุณจะต้องเข้าไปใช้งานเทอร์มินัลของ Linux และที่นั่น คุณอาจจะรู้จักคำสั่งพื้นฐาน หรืออาจจะจ้องมองเคอร์เซอร์ที่กระพริบอยู่ด้วยความไม่แน่ใจว่าจะทำอย่างไรต่อไป ข่าวดีก็คือ คุณไม่จำเป็นต้องจำคำสั่งเป็นร้อยๆ คำสั่ง การเรียนรู้คำสั่งพื้นฐานชุดหนึ่งจะครอบคลุมงานประจำวันของคุณได้ถึง 90%
ในคู่มือนี้คุณจะพบ ชุดคำสั่งพื้นฐานของ Linux ที่รวมไว้อย่างครบถ้วนและเป็นระบบโดยผสมผสานสิ่งที่ดีที่สุดจากคู่มืออ้างอิงหลายเล่มเข้าด้วยกัน: การจัดการไฟล์ กระบวนการ เครือข่าย แพ็กเกจ สิทธิ์การเข้าถึง ระบบอัตโนมัติ… ทั้งหมดนี้อธิบายเป็นภาษาสเปนจากประเทศสเปน พร้อมตัวอย่างจริงของการบริหารเซิร์ฟเวอร์ การโฮสติ้ง และการทำงานในเครื่อง และจัดเรียงไว้เพื่อให้คุณสามารถใช้เป็นคู่มืออ้างอิงได้เมื่อต้องการ
คำสั่งใน Linux คืออะไร และทำไมจึงมีความสำคัญมาก?
Un คำสั่งใน Linux คือโปรแกรมหรือยูทิลิตี้ที่ทำงานจากบรรทัดคำสั่งแทนที่จะคลิกปุ่ม คุณเพียงแค่พิมพ์ชื่อคำสั่ง และอาจเพิ่มข้อความเพิ่มเติมได้ ตัวเลือก (หรือแฟล็ก) และหนึ่งหรือมากกว่านั้น ข้อโต้แย้ง เช่น เส้นทางไฟล์ รูปแบบ หรือชื่อบริการ
แนวคิดนี้เรียบง่าย: เทอร์มินัลเป็นอินเทอร์เฟซข้อความที่มีประสิทธิภาพมากการทำสิ่งต่างๆ ด้วยการคลิกเพียงครั้งเดียวก็ดีอยู่แล้ว แต่การเรียงลำดับคำสั่ง การสำรองข้อมูลอัตโนมัติด้วย cron การตรวจสอบบันทึกขนาดใหญ่ด้วยตัวกรอง หรือการจัดการเซิร์ฟเวอร์ระยะไกลผ่าน SSH นั้นสะดวกกว่ามากหากพิมพ์เพียงไม่กี่คำสั่ง แทนที่จะต้องมาวุ่นวายกับเมนูแบบกราฟิก
ในระบบปฏิบัติการ Linux รุ่นใหม่ๆ เกือบทุกระบบ (Ubuntu, Debian, CentOS, Fedora, Arch ฯลฯ) คุณจะเปิดเทอร์มินัลด้วยคำสั่งต่อไปนี้ Ctrl + Alt + T หรือค้นหาโดยใช้คำว่า “Terminal” ในเมนูแอปพลิเคชัน บนเซิร์ฟเวอร์ ขั้นตอนปกติคือ เข้าสู่ระบบผ่าน SSH จากคอมพิวเตอร์ของคุณ
สิ่งแรกที่คุณต้องเรียนรู้คือวิธีการ การนำทางในระบบไฟล์: การรู้ว่าคุณอยู่ที่ไหน มีอะไรอยู่ในแต่ละที่ และรู้วิธีการสลับโฟลเดอร์อย่างรวดเร็ว
ls: แสดงรายการไฟล์และไดเร็กทอรี
คำสั่ง ls คำสั่งนี้จะแสดงเนื้อหาของไดเร็กทอรีปัจจุบัน (หรือเส้นทางที่คุณระบุ) เป็นหนึ่งในคำสั่งที่คุณจะใช้บ่อยที่สุด:
ls– แสดงรายการไฟล์และโฟลเดอร์ที่มองเห็นได้ในไดเร็กทอรีปัจจุบันls -l– แสดงรายละเอียด: สิทธิ์การเข้าถึง เจ้าของ ขนาด วันที่ls -a– รวมถึงไฟล์ที่ซ่อนอยู่ (ไฟล์ที่ขึ้นต้นด้วยจุด)ls -lh– เหมือนกันเลย-lแต่มีขนาดที่อ่านง่าย (K, M, G)ls -lah– ผสมผสานขนาดที่ยาว ซ่อนเร้น และอ่านง่ายเข้าด้วยกันls -R– การแสดงรายการไดเร็กทอรีย่อยแบบวนซ้ำls -t– เรียงลำดับตามวันที่แก้ไขls -S– เรียงตามขนาด
บนเว็บเซิร์ฟเวอร์ มักจะทำอะไรแบบนี้ ls -lah /var/www/html เพื่อดูไฟล์โครงการทั้งหมด รวมถึง ไฟล์การกำหนดค่าที่ซ่อนอยู่ ในขณะที่ .htaccess หรือโฟลเดอร์ .git.
pwd: รู้ว่าคุณอยู่ในโฟลเดอร์ใด
เมื่อคุณเปลี่ยนเส้นทางไปมาสักพัก การหลงทางเป็นเรื่องง่ายมาก pwd (พิมพ์ไดเร็กทอรีการทำงาน) คุณจะได้รับ เส้นทางแบบเต็มของไดเร็กทอรีปัจจุบันตัวอย่างเช่น:
/home/usuario/proyectos/mi-sitio
มีประโยชน์อย่างยิ่งใน สคริปต์เมื่อคุณต้องการทราบตำแหน่งของคุณเพื่อใช้เส้นทางสัมพัทธ์อย่างปลอดภัย
cd: เปลี่ยนไดเร็กทอรี
ในการเรียกดูระบบไฟล์ คุณใช้ cd (เปลี่ยนไดเร็กทอรี) การเปลี่ยนแปลงที่สำคัญบางประการ:
cd /ruta/completa– มันกำลังมุ่งไปตามเส้นทางที่แน่นอนcd carpeta– ป้อนชื่อโฟลเดอร์ที่สัมพันธ์กับไดเร็กทอรีปัจจุบันcd ~– ข้ามไปยัง สมุดรายชื่อส่วนตัว ผู้ใช้cd -– กลับไปยังไดเร็กทอรีเดิม (มีประโยชน์มาก อาจดูไร้สาระจนกว่าคุณจะได้ลองใช้)cd ..– เลื่อนระดับขึ้นไปหนึ่งขั้นในลำดับชั้นcd ../..– ขึ้นไปสองระดับ แล้วก็ทำเช่นนี้ต่อไปเรื่อยๆ
หากคุณทำงานด้านการโฮสต์บนระบบ Linux คุณจะเบื่อกับการใช้งานฟังก์ชันเหล่านี้ cd /var/www/html หรือเส้นทางที่คล้ายกันเพื่อเข้าถึงไดเร็กทอรีรากของเว็บไซต์ของคุณ
คำสั่งพื้นฐานสำหรับไฟล์และไดเร็กทอรี
เมื่อคุณเชี่ยวชาญการเคลื่อนไหวแล้ว ก็ถึงเวลาเรียนรู้วิธีการ สร้าง คัดลอก ลบ และดูไฟล์และโฟลเดอร์นี่เป็นเรื่องปกติที่เกิดขึ้นทั้งบนพีซีและ VPS
mkdir และ rmdir: การสร้างและการลบไดเร็กทอรีว่างเปล่า
กับ mkdir คุณสามารถสร้างโฟลเดอร์ใหม่ได้ รองรับการกำหนดเส้นทางหลายเส้นทางพร้อมกัน และมีตัวเลือกที่ใช้งานได้จริงมากมาย:
mkdir nuevo_directorio– สร้างโฟลเดอร์แบบง่ายๆ ขึ้นมาmkdir dir1 dir2– สร้างหลายๆ อันพร้อมกันmkdir -p padre/hijo/nieto– สร้างโครงสร้างแบบซ้อนกันได้อย่างสมบูรณ์ โดยไม่แสดงข้อผิดพลาดหากส่วนใดส่วนหนึ่งมีอยู่แล้วmkdir -m 755 carpeta_web– สร้างโฟลเดอร์โดยกำหนดสิทธิ์การเข้าถึงเฉพาะเจาะจง
รูปแบบทั่วไปในการตั้งค่าโปรเจ็กต์มักจะเป็นดังนี้: mkdir -p /var/www/mi-sitio/{public_html,logs,backups} เพื่อให้ทุกอย่างเป็นระเบียบเรียบร้อยตั้งแต่เริ่มต้น
หากต้องการลบโฟลเดอร์ว่างเปล่า มีวิธีการดังนี้ rmdir:
rmdir carpeta_vacia– ลบโฟลเดอร์ได้ตราบใดที่ภายในโฟลเดอร์นั้นไม่มีอะไรอยู่rmdir -p dir1/dir2/dir3– ลบโซ่ทั้งหมดออกหากทุกระดับว่างเปล่า
หากไดเร็กทอรีมีเนื้อหา คุณจะต้องใช้ rm -rซึ่งเราจะได้เห็นกันในไม่ช้า
แตะ: สร้างไฟล์เปล่าหรืออัปเดตวันที่
คำสั่ง touch โดยส่วนใหญ่ใช้สำหรับ สร้างไฟล์เปล่า หรืออัปเดตวันที่แก้ไขโดยไม่ต้องแก้ไขเนื้อหา:
touch archivo.txt– สร้างไฟล์หากยังไม่มีอยู่touch archivo1 archivo2– สร้างหลายๆ อันพร้อมกันtouch -t 202501010000 archivo.txt– บังคับให้ใช้การประทับเวลาที่เฉพาะเจาะจง
มันสะดวกมากสำหรับการสร้าง ไฟล์การกำหนดค่าหรือตัวยึดตำแหน่ง ชนิด touch .env o touch index.html.
rm: ลบไฟล์ (และโฟลเดอร์) อย่างระมัดระวัง
กับ rm คุณสามารถลบไฟล์ และหากใช้ตัวเลือกที่เหมาะสม คุณยังสามารถลบโครงสร้างไดเร็กทอรีได้อีกด้วย ไม่มีถังขยะหากคุณทำผิดพลาด การกู้คืนข้อมูลอาจเป็นเรื่องยากหรือเป็นไปไม่ได้เลย
rm archivo.txt– ลบไฟล์rm archivo1 archivo2– ลบออกหลายรายการrm -i archivo.txt– ควรขอการยืนยัน ซึ่งเหมาะอย่างยิ่งสำหรับช่วงที่คุณกำลังเรียนรู้rm -r carpeta– ลบโฟลเดอร์และเนื้อหาทั้งหมดในโฟลเดอร์นั้นแบบวนซ้ำrm -rf carpeta– บังคับลบข้อมูลแบบเรียกซ้ำโดยไม่ต้องขออนุญาต ใช้เฉพาะเมื่อคุณแน่ใจอย่างยิ่งว่ากำลังทำอะไรอยู่.rm *.tmp– ลบไฟล์ทั้งหมดที่มีนามสกุลนั้นในไดเร็กทอรีปัจจุบัน
การรวมกันเช่น rm -rf / หรือวิธีการที่คล้ายกันนั้นเป็นการแก้ไขปัญหาอย่างรวดเร็วที่ทำให้ระบบใช้งานไม่ได้ ดังนั้น โปรดระมัดระวังเมื่อผสมผสาน RM และ RF กับเส้นทางทั่วไปหรือเส้นทางแบบไวด์การ์ด.
cp และ mv: คัดลอก ย้าย และเปลี่ยนชื่อ
ในการคัดลอกไฟล์ คุณใช้ cp และในการย้ายหรือเปลี่ยนชื่อ คุณใช้ mvพวกคุณสองคนสามารถจัดการการจัดระเบียบไฟล์ได้ทุกอย่าง
ตัวอย่างการใช้งานทั่วไปของ cp:
cp origen.txt destino.txt– คัดลอกไฟล์cp archivo.txt /otra/ruta/– คัดลอกไปยังไดเร็กทอรีอื่นcp -i archivo.txt copia.txt– ถามก่อนลงมือทำcp -p archivo.txt backup.txt– เก็บเอกสารอนุญาต ชื่อเจ้าของ และวันที่ไว้ด้วยcp -r carpeta_origen carpeta_destino- การคัดลอกไดเร็กทอรีแบบเรียกซ้ำ
สำหรับการคัดลอกเว็บไซต์แบบสมบูรณ์นั้น วิธีการแบบนี้พบเห็นได้ทั่วไป cp -rp /var/www/html /backup/html-$(date +%Y%m%d)ซึ่งจะทิ้งไฟล์สำรองข้อมูลเก่าที่ยังคงรักษาสิทธิ์การเข้าถึงและความเป็นเจ้าของไว้
กับ mv คุณสามารถย้ายและเปลี่ยนชื่อได้:
mv archivo.txt nuevo_nombre.txt– เปลี่ยนชื่อmv archivo.txt /otra/ruta/– ขยับมันสิmv directorio nuevo_nombre– เปลี่ยนชื่อโฟลเดอร์mv *.log /var/log/backups/– ย้ายไฟล์บันทึกทั้งหมด
รูปแบบที่นิยมใช้กันทั่วไปในการปรับใช้โปรเจกต์คือ mv sitio-nuevo/* /var/www/html/ เพื่อแทนที่เว็บไซต์เวอร์ชันเก่าด้วยเวอร์ชันใหม่
แมว, เล็ก, หัวและหาง: ดูเนื้อหาไฟล์
ในการตรวจสอบเนื้อหาของไฟล์ข้อความ คุณมีเครื่องมือหลายอย่าง แต่ละอย่างมีข้อดีแตกต่างกันไป
cat archivo.txtแสดงไฟล์ทั้งหมดในเทอร์มินัล เหมาะสำหรับ ไฟล์ขนาดเล็ก หรือนำหลายๆ ตัวเชื่อมต่อกัน:cat archivo1 archivo2.less archivo.logทำหน้าที่ในการ ไฟล์ขนาดใหญ่เนื่องจากช่วยให้คุณสามารถเลื่อนดูทีละหน้าและค้นหา (/texto) เดินไปเดินมาแล้วออกไปพร้อมกับq.head archivoโดยค่าเริ่มต้นจะแสดง 10 บรรทัดแรก;head -n 50คุณเลือกจำนวนได้เองtail archivoมันแสดงบรรทัดสุดท้าย; ด้วยtail -f archivo.logคุณสามารถดูการอัปเดตบันทึกแบบเรียลไทม์ ซึ่งมีประโยชน์มากขณะที่คุณกำลังจำลองข้อผิดพลาดบนเว็บไซต์
ในการดีบักเว็บเซิร์ฟเวอร์ คุณจะเห็นการผสมผสานรูปแบบต่างๆ เช่นนี้อยู่บ่อยๆ tail -f /var/log/nginx/error.log o less /var/log/apache2/access.log เพื่อทำความเข้าใจสิ่งที่กำลังเกิดขึ้น
คำสั่งสำหรับการค้นหาไฟล์และข้อความ
เมื่อระบบเติบโตขึ้นและเต็มไปด้วยโครงการ บันทึก และการตั้งค่าต่างๆ การรู้สิ่งต่างๆ เหล่านี้จึงมีความสำคัญอย่างยิ่ง ค้นหาไฟล์และข้อความได้อย่างรวดเร็ว.
ค้นหาและระบุตำแหน่ง: ค้นหาไฟล์ตามชื่อ ขนาด หรือวันที่
คำสั่ง find โปรแกรมจะสแกนระบบไฟล์และช่วยให้คุณค้นหาตามชื่อ ประเภท ขนาด วันที่แก้ไข ฯลฯ และแม้กระทั่ง ดำเนินการตามผลลัพธ์:
find /ruta -name "nombre_archivo"– ค้นหาตามชื่อที่ตรงเป๊ะfind /var/www -name "*.php"– ค้นหาไฟล์ PHP ทั้งหมดในบริเวณนั้นfind /home -type f -size +100M– ไฟล์ที่มีขนาดใหญ่กว่า 100 MBfind /var/log -mtime -7– ไฟล์ที่ได้รับการแก้ไขในช่วง 7 วันที่ผ่านมาfind . -name "*.tmp" -delete– ค้นหาและลบไฟล์ชั่วคราวfind /var/www -type f -exec chmod 644 {} \;– ปรับสิทธิ์การเข้าถึงไฟล์ทั้งหมด
สำหรับส่วนของตน locate ดึงหนึ่ง ฐานข้อมูลดัชนีดังนั้น การค้นหาด้วยชื่อธรรมดาจึงเร็วกว่ามาก:
locate nombre_archivolocate -i "*.php"– ไม่สนใจตัวพิมพ์ใหญ่/ตัวพิมพ์เล็กsudo updatedb– อัปเดตดัชนี (สำคัญมากสำหรับเซิร์ฟเวอร์)
ข้อเสียของ ค้นหา ระบบจะไม่เห็นไฟล์ที่สร้างขึ้นใหม่จนกว่าฐานข้อมูลจะได้รับการอัปเดต ในขณะที่ พบ จงพิจารณาระบบที่แท้จริงเสมอ
grep, sed และ awk: คำสั่งสำหรับค้นหา กรอง และแปลงข้อความ
สำหรับการทำงานกับบันทึกข้อมูล การตั้งค่า หรือข้อความธรรมดาใดๆ ตัวเลือกที่ดีที่สุดคือ grep, sed y awk.
- grep มองหาเส้นที่ตรงกับรูปแบบ:
grep "ERROR" /var/log/apache2/error.loggrep -i "texto" archivo.txt– ไม่ต้องสนใจตัวอักษรพิมพ์ใหญ่grep -r "cadena" /directorio– การค้นหาแบบเรียกซ้ำgrep -n "texto" archivo.txt– แสดงหมายเลขบรรทัด - ความกระหายน้ำ อนุญาต แทนที่หรือลบข้อความ โดยไม่ต้องเปิดไฟล์ในโปรแกรมแก้ไขข้อความ:
sed 's/viejo/nuevo/g' archivo.txt– แทนที่ทุกกรณีที่พบsed -i 's/old_database/new_database/g' wp-config.php– แก้ไขในตำแหน่งเดิม (ต้องระมัดระวังเป็นอย่างมาก) - awk เหมาะสำหรับ คอลัมน์ประมวลผล (ตัวอย่างเช่น บันทึก):
awk '{print $1}' access.log– ดึงข้อมูลคอลัมน์แรก (โดยทั่วไปคือ IP)awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10– IP ที่คุณใช้งานบ่อยที่สุด 10 อันดับแรก
แม้ว่าในตอนแรกอาจดูน่ากลัว แต่เมื่อคุณคุ้นเคยกับเครื่องมือเหล่านี้แล้ว คุณก็จะใช้งานได้คล่องขึ้น คุณสามารถทำการวิเคราะห์ได้ในเวลาเพียงไม่กี่วินาที ซึ่งหากทำในโปรแกรมแก้ไขข้อความจะเป็นเรื่องยากลำบากมาก.
การจัดการสิทธิ์การเข้าถึง เจ้าของ และความปลอดภัยขั้นพื้นฐาน
ลินุกซ์ใช้ระบบการอนุญาตที่ชัดเจนมาก ซึ่งช่วยให้คุณสามารถ ควบคุมว่าใครสามารถอ่าน เขียน หรือดำเนินการอะไรได้บ้างสิ่งนี้มีความสำคัญอย่างยิ่งในสภาพแวดล้อมที่มีผู้ใช้งานหลายคน และโดยเฉพาะอย่างยิ่งบนเว็บเซิร์ฟเวอร์
ls -l: ดูสิทธิ์การเข้าถึงและเจ้าของไฟล์
เราได้กล่าวถึงเรื่องนี้ไปแล้ว แต่ก็ควรเน้นย้ำอีกครั้ง: ls -l นอกจากชื่อไฟล์แล้ว มันยังสอนคุณเกี่ยวกับ... สิทธิ์การเข้าถึง เจ้าของ กลุ่ม และขนาดตัวอย่างทั่วไป:
-rw-r--r-- 1 usuario grupo 12345 Jan 1 12:34 archivo.txt
drwxr-xr-x 2 usuario grupo 4096 Jan 1 12:34 carpeta/
คอลัมน์แรกมีข้อความดังนี้: ชนิด (- เก็บถาวร d ไดเร็กทอรี) และจากนั้นสิทธิ์สามชุด ได้แก่ ผู้ใช้ กลุ่ม และบุคคลอื่น ๆ (r การอ่าน, w การเขียน, x (การดำเนินการ)
chmod: เปลี่ยนสิทธิ์การเข้าถึง
กับ chmod คุณสามารถปรับสิทธิ์การเข้าถึงไฟล์หรือโฟลเดอร์ได้ คุณสามารถทำได้โดยใช้ สัญกรณ์ตัวเลข o สัญลักษณ์:
chmod 755 script.sh– rwxr-xr-x (เป็นเจ้าของทุกอย่าง ส่วนที่เหลืออ่าน/เรียกใช้งานได้เท่านั้น)chmod 644 index.html– rw-r–r–, รูปแบบที่ใช้กันทั่วไปสำหรับไฟล์บนเว็บchmod u+x backup.sh– เพิ่มฟังก์ชันการเรียกใช้งานให้กับผู้ใช้chmod g-w archivo.txt– ลบข้อความออกจากกลุ่มchmod -R 755 directorio– เปลี่ยนสิทธิ์การเข้าถึงแบบวนซ้ำ
ค่าตัวเลขจะถูกบวกเข้าด้วยกัน: อ่าน 4 ครั้ง, เขียน 2 ครั้ง, ประมวลผล 1 ครั้งนั่นเป็นเหตุผลว่าทำไม 7 = 4+2+1 (rwx), 6 = 4+2 (rw-), 5 = 4+1 (rx) เป็นต้น
chown และ chgrp: เจ้าของและกลุ่ม
นอกเหนือจากสิทธิ์การเข้าถึงแล้ว ไฟล์แต่ละไฟล์ยังมี... เจ้าของและกลุ่มที่เกี่ยวข้องตัวอย่างเช่น วิธีนี้ช่วยให้คุณสามารถกำหนดให้เว็บเซิร์ฟเวอร์เป็นเจ้าของไฟล์ที่ต้องให้บริการได้
chown usuario archivo.txt– การเปลี่ยนเจ้าของchown usuario:grupo archivo.txt– เปลี่ยนเจ้าของและกลุ่มchown -R www-data:www-data /var/www/html– พบได้ทั่วไปบนเซิร์ฟเวอร์ Apache/Nginx บนระบบปฏิบัติการ Debian/Ubuntuchgrp grupo archivo.txt– เปลี่ยนเฉพาะกลุ่มเท่านั้น
เมื่อคุณอัปโหลดไฟล์ผ่าน FTP ด้วยผู้ใช้รายหนึ่ง แล้วเว็บเซิร์ฟเวอร์ (ผู้ใช้รายอื่น) ไม่สามารถอ่านหรือเขียนไฟล์เหล่านั้นได้ โดยส่วนใหญ่แล้ว คุณสามารถแก้ไขปัญหาได้ด้วยคำสั่ง chown หรือ chmod ที่เหมาะสม.
sudo: เรียกใช้คำสั่งในฐานะผู้ดูแลระบบโดยไม่จำเป็นต้องเป็น root
คำสั่ง sudo (superuser do) เป็นวิธีที่แนะนำสำหรับการเรียกใช้งานงานด้านการดูแลระบบโดยไม่ต้องล็อกอินโดยตรงในฐานะ root ซึ่งเป็นอันตราย
ง่ายดาย คุณต้องใส่ `sudo` ไว้ข้างหน้าคำสั่งใดๆ ที่คุณต้องการเรียกใช้ด้วยสิทธิ์ระดับสูง:
sudo apt update– อัปเดตรายการแพ็กเกจ (Debian/Ubuntu)sudo systemctl restart nginx– รีสตาร์ท Nginxsudo useradd nuevo_usuario– สร้างผู้ใช้
ระบบจะขอรหัสผ่านของคุณ และหากผู้ใช้ของคุณอยู่ในกลุ่มที่ถูกต้อง คุณจะสามารถเรียกใช้คำสั่งด้วยสิทธิ์ระดับรูทได้ ซึ่งจะป้องกันไม่ให้คุณถูกเข้าถึงโดยไม่ได้รับอนุญาต การเป็นผู้ใช้ระดับ root ตลอดเวลา มีความเสี่ยงที่จะลบหรือแก้ไขไฟล์สำคัญโดยไม่ตั้งใจ.
การจัดการกระบวนการและประสิทธิภาพของระบบ
เมื่อมีอะไรบางอย่างทำงานช้าลงหรือผิดปกติ นั่นเป็นเวลาที่เราควรตรวจสอบดู มีกระบวนการใดบ้างที่กำลังทำงานอยู่ และกระบวนการเหล่านั้นใช้ทรัพยากรอย่างไรบ้างคำสั่งเหล่านี้คือเพื่อนที่ดีที่สุดของคุณสำหรับเรื่องนั้น
ps, top และ htop: ดูว่ามีอะไรกำลังทำงานอยู่บ้าง
คำสั่ง ps ถ่ายภาพกระบวนการที่กำลังเกิดขึ้นในขณะนั้น ps aux คุณจะเห็นกระบวนการทำงานของระบบทั้งหมด รวมถึงกิจกรรมของผู้ใช้ การใช้งาน CPU และ RAM เป็นต้น คุณสามารถกรองข้อมูลได้ด้วย grep:
ps aux | grep nginx– ดูเฉพาะกระบวนการของ Nginx เท่านั้นps -u usuario– กระบวนการทำงานของผู้ใช้เฉพาะราย
ถ้าคุณต้องการบางสิ่งบางอย่าง ไดนามิก แบบเรียลไทม์, คุณใช้ top หรือแบบที่เสริมวิตามินเข้าไป htop:
top– แสดงรายการกระบวนการทำงานโดยเรียงลำดับตามการใช้งาน CPU และจะมีการอัปเดตข้อมูลอยู่เสมอ- ภายในโปรแกรมหลัก คุณสามารถจัดเรียงตามหน่วยความจำได้ (
M), ยุติกระบวนการ (k) ฯลฯ htop– เหมือนกัน แต่มีสีสัน แถบแสดงการใช้งาน CPU การรองรับเมาส์ แผนผังกระบวนการทำงาน… ในหลายระบบจำเป็นต้องติดตั้งก่อน (sudo apt install htopหรือคล้ายกัน)
บนเซิร์ฟเวอร์รวบรวมข้อมูล ให้เปิด htop โดยปกติแล้วจะเป็นขั้นตอนแรกในการตรวจสอบ อะไรที่ใช้ CPU หรือ RAM มากที่สุด?.
kill และ killall: ยุติกระบวนการที่ไม่พึงประสงค์
หากกระบวนการใดค้างหรือเริ่มทำงานแล้วไม่ตอบสนอง คุณสามารถหยุดกระบวนการนั้นได้ด้วย kill o killall.
kill 1234– ส่งสัญญาณ TERM (15) ไปยังกระบวนการที่มี PID 1234 เพื่อขอให้ยุติการทำงาน “อย่างเงียบๆ”kill -9 1234– สัญญาณ KILL (9) ฆ่ากระบวนการทันที ใช้เป็นทางเลือกสุดท้ายkillall nombre_proceso– ยุติกระบวนการทั้งหมดที่มีชื่อนั้นเป็นต้นkillall php-fpm.
โดยปกติแล้ว วิธีค้นหา PID คือการใช้ ps o ด้านบน แล้วก็ส่งต่อ kill เบาๆ ถ้ามันไม่เชื่อฟัง ก็ดึงเลย -9.
df และ du: การควบคุมพื้นที่ดิสก์
เมื่อเซิร์ฟเวอร์มีพื้นที่ไม่เพียงพอ ทุกอย่างเริ่มผิดพลาดไปหมดฐานข้อมูลที่ไม่สามารถเขียนข้อมูลลงไปได้ ไฟล์บันทึกข้อมูลที่ไม่เติบโต บริการที่ล่มอยู่เรื่อยๆ ในการตรวจสอบสิ่งเหล่านี้ คุณใช้ df y du.
df -h– แสดงพื้นที่ที่ใช้ไปและพื้นที่ว่างในแต่ละระบบไฟล์ที่เชื่อมต่อ ในรูปแบบที่อ่านง่ายdf -h /var– ข้อมูลเฉพาะจากพาร์ติชันนั้นเท่านั้นdu -sh /var/www/*– ขนาดของแต่ละโปรเจ็กต์เว็บภายในเส้นทางนั้นdu -h --max-depth=1 /- โฟลเดอร์หลักใดที่ใช้พื้นที่มากที่สุด
คำสั่งที่ใช้งานได้จริงมากสำหรับการระบุตำแหน่ง โฟลเดอร์ที่หนักที่สุด มันเป็นอะไรประมาณนั้น du -h --max-depth=1 /var | sort -hr | head -5ซึ่งแสดงรายการห้ารายการที่ใหญ่ที่สุดเรียงลำดับจากใหญ่ที่สุดไปเล็กที่สุด
คำสั่งเครือข่ายที่จำเป็น
เมื่อคุณเริ่มทำงานกับเซิร์ฟเวอร์ โดเมน และปริมาณการรับส่งข้อมูลบนเว็บ คุณจำเป็นต้องรู้สิ่งเหล่านี้ หากมีการเชื่อมต่อ โปรดระบุที่อยู่ IP ของคุณ พอร์ตที่เปิดอยู่ และเว็บไซต์ของคุณตอบสนองอย่างไร.
ip, ifconfig, ping และ route
ระบบสมัยใหม่ คำสั่งดาวคือ ipโดยเฉพาะอย่างยิ่ง ip a (o ip addrซึ่งจะแสดงอินเทอร์เฟซเครือข่ายทั้งหมด ที่อยู่ IP สถานะ ฯลฯ โดยก่อนหน้านี้จะใช้ในลักษณะใด ifconfigในปัจจุบันนี้ขอแนะนำ ipแม้ ifconfig มันยังคงมีอยู่ในหลายระบบผ่านทางแพ็กเกจ net-tools.
ip a– อินเทอร์เฟซและที่อยู่ IP ทั้งหมดip addr show dev eth0– รายละเอียดของอินเทอร์เฟซเฉพาะเจาะจงping google.com– ตรวจสอบว่าคุณสามารถแก้ไขปัญหาและส่งผลลัพธ์ไปยัง Google ได้หรือไม่ โดยดูเวลาที่ใช้ping -c 4 8.8.8.8– ส่งแพ็กเก็ตเพียง 4 แพ็กเก็ตไปยัง IP นั้นroute -noip route show– ตารางเส้นทาง เพื่อดูว่าปริมาณการจราจรมาจากที่ใดบ้าง
หากเซิร์ฟเวอร์ "ไม่ปรากฏให้เห็น" ขั้นตอนแรกมักจะเป็นดังนี้เสมอ ตรวจสอบการเชื่อมต่อกับโดเมน ตรวจสอบที่อยู่ IP และดูที่อยู่ IP ของเซิร์ฟเวอร์และเกตเวย์ของมัน กับ ip route.
netstat/ss และ curl: การเปิดพอร์ตและการตอบสนอง HTTP
เพื่อดูว่าอะไร พอร์ตใดบ้างที่เปิดอยู่ และมีกระบวนการใดบ้างที่กำลังรอรับการเชื่อมต่ออยู่? ในนั้น คุณมี netstat (คลาสสิก) และ ss (ทันสมัย รวดเร็ว):
ss -tuln- พอร์ต TCP/UDP ที่กำลังทำงานอยู่โดยไม่ระบุชื่อss -tlnp | grep :80– มีอุปกรณ์ใดกำลังรับฟังอยู่ที่พอร์ต 80 หรือไม่?netstat -tuln– เทียบเท่าในระบบที่มีฟังก์ชันนี้
สำหรับการทดสอบอย่างรวดเร็ว วิธีที่เว็บไซต์ตอบสนองจากฝั่งเซิร์ฟเวอร์เองไม่มีอะไรเหมือน curl:
curl -I https://tu-dominio.com– เฉพาะส่วนหัวของ HTTP เท่านั้น (รหัสสถานะ เซิร์ฟเวอร์ ฯลฯ)curl https://tu-dominio.com– ดาวน์โหลดไฟล์ HTML ต้นฉบับ
การรวม ping, ip, ss และ curl คุณสามารถวินิจฉัยปัญหาการเชื่อมต่อหรือการหยุดชะงักของบริการพื้นฐานเกือบทุกอย่างได้ด้วยตนเอง
การจัดการแพ็กเกจ: การติดตั้ง การอัปเดต และการล้างซอฟต์แวร์
แต่ละตระกูลของระบบปฏิบัติการลินุกซ์มีลักษณะเฉพาะของตนเอง ผู้จัดการแพ็คเกจการเชี่ยวชาญด้านนี้จะช่วยให้คุณ ติดตั้งและอัปเดตซอฟต์แวร์ได้โดยไม่ต้องยุ่งยากกับการติดตั้งไฟล์ไบนารีด้วยตนเอง.
apt และ apt-get ใน Debian/Ubuntu
ใน Debian, Ubuntu และระบบปฏิบัติการที่พัฒนาต่อยอดจาก Debian นั้น มาตรฐานคือ apt (หรือเวอร์ชันคลาสสิก) apt-get):
sudo apt update– อัปเดตรายการแพ็กเกจที่มีให้เลือกsudo apt upgrade– อัปเดตแพ็กเกจที่ติดตั้งทั้งหมดให้เป็นเวอร์ชันล่าสุดsudo apt install nombre_paquete– ติดตั้งโปรแกรมอย่างน้อยหนึ่งโปรแกรมsudo apt remove nombre_paquete– ถอนการติดตั้งโปรแกรม แต่ปล่อยการตั้งค่าเอาไว้sudo apt purge nombre_paquete– มันจะลบทุกอย่าง รวมถึงการตั้งค่าด้วยsudo apt autoremove– ลบส่วนประกอบที่ไม่ได้ใช้งานแล้วออก
คุณยังมี apt-cache หรือโดยตรง apt show สำหรับ ดูข้อมูลบรรจุภัณฑ์รวมถึงส่วนประกอบและเวอร์ชันต่างๆ:
apt show nginxapt search php
yum/dnf และ pacman: ตระกูลอื่นๆ
บนระบบที่ใช้ Red Hat เป็นพื้นฐาน เช่น CentOS หรือ RHEL คุณจะมี yum หรือผู้สืบทอด dnf:
sudo yum install httpd– ติดตั้ง Apachesudo dnf update– อัปเดตทุกอย่างให้เป็นเวอร์ชันใหม่กว่า
ใน Arch Linux และระบบปฏิบัติการที่พัฒนาต่อยอดจาก Arch Linux นั้น ตัวจัดการคือ pacman:
sudo pacman -S gimp– ติดตั้งโปรแกรม GIMPsudo pacman -Syu– ซิงโครไนซ์และอัปเดตระบบ
แม้ว่าไวยากรณ์จะเปลี่ยนไปก็ตาม หลักการก็เหมือนกัน: อัปเดตดัชนี ติดตั้งแพ็กเกจ ลบแพ็กเกจ และล้างข้อมูลส่วนเกินที่เหลืออยู่
บีบอัด คลายการบีบอัด และถ่ายโอนไฟล์
การจัดการไฟล์ขนาดใหญ่หรือชุดไฟล์ทำได้ง่ายขึ้นอย่างมากด้วย ไฟล์บีบอัด และมีโปรแกรมดาวน์โหลดและคัดลอกข้อมูลจากระยะไกล
ทาร์, ซิป/อันซิป: บรรจุภัณฑ์และการบีอัด
คำสั่ง tar เป็นมาตรฐานในลินุกซ์สำหรับการสร้างและแตกไฟล์ tarballs (ไฟล์ .tar, .tar.gz, .tar.bz2 ฯลฯ):
tar -czvf backup.tar.gz carpeta/– สร้างไฟล์ .tar.gz ที่บีบอัดด้วย gziptar -xzvf backup.tar.gz– ดึงเนื้อหาออกมาtar -tzvf backup.tar.gz– แสดงรายการสิ่งของที่อยู่ด้านในโดยไม่ต้องนำออกมา
ธงที่พบเห็นได้บ่อยที่สุดคือ c (สร้าง), x (แตกไฟล์), t (แสดงรายการ), v (แสดงรายละเอียด), f (ไฟล์), z (gzip), j (bzip2), J (xz).
ในการทำงานกับ ไฟล์ ZIP (พบได้บ่อยมากในสภาพแวดล้อมของ Windows) คุณมี zip y unzip:
zip archivo.zip fichero1 fichero2unzip archivo.zip
wget, curl และ scp: ใช้สำหรับดาวน์โหลดและคัดลอกข้อมูลระหว่างเครื่องคอมพิวเตอร์
นอกจากการเรียกดูด้วย curl แล้ว คุณยังสามารถใช้... wget วิธีดาวน์โหลดไฟล์จาก HTTP หรือ FTP:
wget https://wordpress.org/latest.zip– ดาวน์โหลด WordPress เวอร์ชันล่าสุดwget -c URL– ดำเนินการดาวน์โหลดต่อจากที่หยุดชะงักไป
ไปยัง คัดลอกไฟล์ระหว่างคอมพิวเตอร์ของคุณและเซิร์ฟเวอร์ได้อย่างปลอดภัย คุณมีผ่าน SSH scp:
scp archivo.txt usuario@servidor:/ruta/destino/– อัปโหลดไฟล์scp -r carpeta usuario@servidor:/ruta/– คัดลอกโฟลเดอร์แบบเรียกซ้ำscp usuario@servidor:/ruta/archivo.txt ./– ดาวน์โหลดจากเซิร์ฟเวอร์
เบื้องหลังทั้งหมดนี้คือ SSH ซึ่งเป็นสิ่งที่คุณใช้เพื่อ... เชื่อมต่อกับเทอร์มินัลระยะไกล (คำสั่ง ssh usuario@servidor).
ระบบอัตโนมัติ ประวัติการใช้งาน และเคล็ดลับเล็กๆ น้อยๆ ในการเพิ่มประสิทธิภาพการทำงาน
เมื่อคุณเชี่ยวชาญพื้นฐานแล้ว ขั้นตอนต่อไปคือการเริ่มต้น... รวมคำสั่งและทำให้งานที่ทำซ้ำๆ เป็นไปโดยอัตโนมัตินี่คือจุดที่ Linux เริ่มแสดงศักยภาพอย่างแท้จริง
ประวัติ ชื่อเรียกแทน และสิ่งที่ใช้: ทางลัดและข้อมูลอ้างอิงโดยย่อ
กับ history คุณสามารถดูคำสั่งล่าสุดที่คุณได้ดำเนินการไปแล้ว และนำคำสั่งเหล่านั้นกลับมาใช้ใหม่ได้โดยไม่ต้องเขียนใหม่:
history– รายการพร้อมหมายเลขบรรทัด!255– เรียกใช้คำสั่งหมายเลข 255 อีกครั้ง
ไปยัง สร้างทางลัดชั่วคราว คือ alias:
alias ll="ls -lah"– จากตรงนี้llเท่ากับls -lah.unalias ll– ลบชื่อเรียกแทนออก
และถ้าคุณอยากรู้ โดยที่ติดตั้งโปรแกรมไว้ และคุณกำลังใช้ไฟล์ปฏิบัติการอะไรอยู่? which:
which php– แสดงเส้นทางไปยังไฟล์ PHP เป็นต้น/usr/bin/php.which -a python– การจับคู่ทั้งหมดใน PATH
การเปลี่ยนเส้นทางและการใช้ไปป์: การผสานคำสั่งอย่างมืออาชีพ
พลังที่แท้จริงของบรรทัดคำสั่งมาจากอำนาจ เครื่องมือขนาดเล็กแบบโซ่สิ่งนี้ทำเสร็จแล้วด้วย ท่อ (|) และ เปลี่ยนเส้นทาง (>, >>, 2>ฯลฯ )
comando1 | comando2– ทางออกของcomando1เข้าสู่รายการในcomando2.
ตัวอย่าง:ls -la | grep ".php"– แสดงเฉพาะไฟล์ที่มีนามสกุล “.php” เท่านั้นls > listado.txt– บันทึกผลลัพธ์ลงในไฟล์ (เขียนทับ)echo "línea" >> archivo.txt– เพิ่มต่อท้ายไฟล์comando > todo.log 2>&1– กำหนดให้ผลลัพธ์ปกติและข้อผิดพลาดถูกบันทึกไปยังไฟล์เดียวกันcomando &> /dev/null– ส่งทุกอย่างไปที่ “หลุมดำ”
ด้วยสิ่งนี้ คุณสามารถทำสิ่งต่างๆ ที่น่าทึ่งได้ เช่น นับข้อผิดพลาด 404 ครั้ง ในบันทึกที่มีคำสั่งเช่นนี้ grep " 404 " access.log | wc -lหรือ ลบไฟล์เก่า กับ find y -delete.
ถ้าคุณอ่านมาถึงตรงนี้แล้ว แสดงว่าคุณมีความรู้ความเข้าใจเกี่ยวกับคำสั่งพื้นฐาน (และคำสั่งที่ไม่พื้นฐานนัก) ของ Linux ค่อนข้างครบถ้วนแล้ว ซึ่งเป็นเครื่องมือที่ใช้กันทุกวันในการบริหารระบบ การพัฒนา และการโฮสติ้ง ตั้งแต่การเรียกดูไดเร็กทอรี การจัดการไฟล์ สิทธิ์ และกระบวนการ ไปจนถึงการตรวจสอบเครือข่าย การติดตั้งแพ็กเกจ และการทำงานอัตโนมัติโดยการรวมคำสั่งเข้ากับไปป์และรีไดเร็กต์ จากนี้ไป ทุกครั้งที่คุณเปิดเทอร์มินัล มันจะไม่ใช่หน้าจอสีดำที่น่ากลัวอีกต่อไป และจะกลายเป็นเครื่องมือที่ช่วยให้ทำงานได้เร็วขึ้นและควบคุมได้มากกว่าอินเทอร์เฟซแบบกราฟิกใดๆ
สารบัญ
- คำสั่งใน Linux คืออะไร และทำไมจึงมีความสำคัญมาก?
- คำสั่งการนำทางไดเร็กทอรีที่จำเป็น
- คำสั่งพื้นฐานสำหรับไฟล์และไดเร็กทอรี
- คำสั่งสำหรับการค้นหาไฟล์และข้อความ
- การจัดการสิทธิ์การเข้าถึง เจ้าของ และความปลอดภัยขั้นพื้นฐาน
- การจัดการกระบวนการและประสิทธิภาพของระบบ
- คำสั่งเครือข่ายที่จำเป็น
- การจัดการแพ็กเกจ: การติดตั้ง การอัปเดต และการล้างซอฟต์แวร์
- บีบอัด คลายการบีบอัด และถ่ายโอนไฟล์
- ระบบอัตโนมัติ ประวัติการใช้งาน และเคล็ดลับเล็กๆ น้อยๆ ในการเพิ่มประสิทธิภาพการทำงาน