4 เคล็ดลับที่เป็นประโยชน์เกี่ยวกับคำสั่ง mkdir, tar และ kill ใน Linux
เราทำงานให้สำเร็จตามอัตภาพจนกว่าเราจะรู้ว่าสามารถทำได้ในวิธีที่ดีกว่ามากในอีกทางหนึ่ง เพื่อความต่อเนื่องของ Linux Tips and Trick Series ฉันมาที่นี่พร้อมกับเคล็ดลับสี่ข้อด้านล่างที่จะช่วยคุณในหลายๆ ด้าน ไปเลย!
1. คุณควรสร้างแผนผังไดเร็กทอรีที่ยาว/ซับซ้อนคล้ายกับที่ระบุด้านล่าง วิธีที่มีประสิทธิภาพมากที่สุดในการบรรลุเป้าหมายนี้คืออะไร?
โครงสร้างแผนผังไดเร็กทอรีเพื่อให้บรรลุตามที่แนะนำด้านล่าง
cd /home/$USER/Desktop
mkdir tecmint
mkdir tecmint/etc
mkdir tecmint/lib
mkdir tecmint/usr
mkdir tecmint/bin
mkdir tecmint/tmp
mkdir tecmint/opt
mkdir tecmint/var
mkdir tecmint/etc/x1
mkdir tecmint/usr/x2
mkdir tecmint/usr/x3
mkdir tecmint/tmp/Y1
mkdir tecmint/tmp/Y2
mkdir tecmint/tmp/Y3
mkdir tecmint/tmp/Y3/z
สถานการณ์ข้างต้นสามารถทำได้โดยการรันคำสั่ง 1-liner ด้านล่าง
mkdir -p /home/$USER/Desktop/tecmint/{etc/x1,lib,usr/{x2,x3},bin,tmp/{Y1,Y2,Y3/z},opt,var}
เพื่อตรวจสอบว่าคุณสามารถใช้คำสั่ง tree หากไม่ได้ติดตั้ง คุณสามารถเลือกหรือยำแพ็คเกจ 'tree'
tree tecmint
เราสามารถสร้างโครงสร้างแผนผังไดเร็กทอรีที่มีความซับซ้อนได้โดยใช้วิธีข้างต้น โปรดสังเกตว่ามันไม่มีอะไรอื่นนอกจากคำสั่งปกติ แต่ใช้ {}
เพื่อสร้างลำดับชั้นของไดเร็กทอรี สิ่งนี้อาจเป็นประโยชน์มากหากใช้จากภายในเชลล์สคริปต์เมื่อจำเป็นและโดยทั่วไป
2. สร้างไฟล์ (เช่น ทดสอบ) บนเดสก์ท็อปของคุณ (/home/$USER/Desktop) และเติมเนื้อหาตามด้านล่างนี้
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
Y
Z
ผู้ใช้ปกติจะทำอะไรในสถานการณ์นี้?
ก. เขาจะสร้างไฟล์ก่อน ควรใช้คำสั่ง touch ดังนี้:
touch /home/$USER/Desktop/test
ข. เขาจะใช้โปรแกรมแก้ไขข้อความเพื่อเปิดไฟล์ ซึ่งอาจเป็น นาโน, กลุ่ม หรือโปรแกรมแก้ไขอื่นๆ
nano /home/$USER/Desktop/test
ค. จากนั้นเขาจะวางข้อความด้านบนลงในไฟล์นี้ บันทึกและออก
ดังนั้นไม่ว่าเขาจะใช้เวลานานเท่าใด เขาต้องมีอย่างน้อย 3 ขั้นตอนในการดำเนินการตามสถานการณ์ข้างต้น
Linux-er ที่มีประสบการณ์อันชาญฉลาดจะทำอะไรได้บ้าง? เขาจะพิมพ์ข้อความด้านล่างในเทอร์มินัลครั้งเดียวและเสร็จสิ้น เขาไม่จำเป็นต้องทำแต่ละอย่างแยกกัน
cat << EOF > /home/$USER/Desktop/test
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
Y
Z
EOF
คุณสามารถใช้คำสั่ง 'cat' เพื่อตรวจสอบว่าไฟล์และเนื้อหาถูกสร้างขึ้นสำเร็จหรือไม่
cat /home/avi/Desktop/test
3. เราจัดการกับไฟล์เก็บถาวร (โดยเฉพาะบอล TAR) บ่อยมากบน Linux ในหลายกรณี เราต้องใช้ลูกบอล TAR นั้นในตำแหน่งอื่นที่ไม่ใช่โฟลเดอร์ดาวน์โหลด เราทำอะไรในสถานการณ์นี้?
โดยปกติแล้วเราจะทำสองสิ่งในสถานการณ์นี้
ก. คัดลอก/เคลื่อนย้ายลูกน้ำมันดินและดึงออกมาที่ปลายทาง ดังนี้:
cp firefox-37.0.2.tar.bz2 /opt/
or
mv firefox-37.0.2.tar.bz2 /opt/
ข. ซีดีไปยังไดเร็กทอรี /opt/
cd /opt/
ค. แยก Tarball
tar -jxvf firefox-37.0.2.tar.bz2
เราทำอย่างอื่นได้
เราจะแยก Tarball ออกจากตำแหน่งและคัดลอก/ย้ายไฟล์เก็บถาวรที่แยกออกมาไปยังปลายทางที่ต้องการดังนี้:
tar -jxvf firefox-37.0.2.tar.bz2
cp -R firefox/ /opt/
or
mv firefox/ /opt/
ไม่ว่าในกรณีใด งานจะต้องดำเนินการสองขั้นตอนหรือดำเนินการให้เสร็จสิ้น ผู้เชี่ยวชาญสามารถทำงานนี้ให้เสร็จสิ้นได้ในขั้นตอนเดียวดังนี้:
tar -jxvf firefox-37.0.2.tar.bz2 -C /opt/
ตัวเลือก -C ทำให้ tar แยกไฟล์เก็บถาวรในโฟลเดอร์ที่ระบุ (ที่นี่ /opt/)
ไม่ มันไม่เกี่ยวกับตัวเลือก (-C) แต่เกี่ยวกับนิสัย สร้างนิสัยในการใช้ตัวเลือก -C กับ tar มันจะทำให้ชีวิตของคุณง่ายขึ้น จากนี้ไป อย่าเพิ่งย้ายไฟล์เก็บถาวรหรือคัดลอก/ย้ายไฟล์ที่แตกออกมา เพียงแค่ปล่อย TAR-ball ไว้ในโฟลเดอร์ ดาวน์โหลด แล้วแตกไฟล์ทุกที่ที่คุณต้องการ
4. เราจะฆ่ากระบวนการด้วยวิธีดั้งเดิมได้อย่างไร?
โดยทั่วไปแล้ว ขั้นแรกเราจะแสดงรายการกระบวนการทั้งหมดโดยใช้คำสั่ง ps -A
และไปป์ไลน์ด้วย grep เพื่อค้นหากระบวนการ/บริการ (พูดว่า apache2 ) ) เพียงเท่านี้:
ps -A | grep -i apache2
ผลลัพธ์ตัวอย่าง
1006 ? 00:00:00 apache2
2702 ? 00:00:00 apache2
2703 ? 00:00:00 apache2
2704 ? 00:00:00 apache2
2705 ? 00:00:00 apache2
2706 ? 00:00:00 apache2
2707 ? 00:00:00 apache2
ผลลัพธ์ข้างต้นแสดงกระบวนการ apache2 ที่กำลังรันอยู่ทั้งหมดด้วย PID's จากนั้นคุณสามารถใช้ PID เหล่านี้เพื่อฆ่า apache2 ด้วยความช่วยเหลือของคำสั่งต่อไปนี้
kill 1006 2702 2703 2704 2705 2706 2707
จากนั้นตรวจสอบข้ามว่ากระบวนการ/บริการใด ๆ ที่ชื่อ 'apache2' กำลังทำงานอยู่หรือไม่ เนื่องจาก:
ps -A | grep -i apache2
อย่างไรก็ตาม เราสามารถทำได้ในรูปแบบที่เข้าใจได้ง่ายขึ้นโดยใช้ยูทิลิตี้เช่น pgrep และ pkill คุณอาจพบข้อมูลที่เกี่ยวข้องเกี่ยวกับกระบวนการเพียงใช้ pgrep สมมติว่าคุณต้องค้นหาข้อมูลกระบวนการสำหรับ apache2 คุณก็สามารถทำได้:
pgrep apache2
ผลลัพธ์ตัวอย่าง
15396
15400
15401
15402
15403
15404
15405
คุณยังอาจแสดงรายการชื่อกระบวนการเทียบกับ pid โดยการเรียกใช้
pgrep -l apache2
ผลลัพธ์ตัวอย่าง
15396 apache2
15400 apache2
15401 apache2
15402 apache2
15403 apache2
15404 apache2
15405 apache2
การฆ่ากระบวนการโดยใช้ pkill นั้นง่ายมาก คุณเพียงแค่พิมพ์ชื่อของทรัพยากรที่จะฆ่าและคุณทำเสร็จแล้ว ฉันได้เขียนโพสต์บน pkill ซึ่งคุณอาจต้องการอ้างอิงที่นี่ : https://linux-console.net/how-to-kill-a-process-in-linux/
หากต้องการฆ่ากระบวนการ (พูด apache2) โดยใช้ pkill สิ่งที่คุณต้องทำคือ:
pkill apache2
คุณสามารถตรวจสอบได้ว่า apache2 ถูกฆ่าหรือไม่โดยการรันคำสั่งด้านล่าง
pgrep -l apache2
มันจะส่งคืนพรอมต์และไม่พิมพ์อะไรเลยหมายความว่าไม่มีกระบวนการใดทำงานโดยใช้ชื่อ apache2
นั่นคือทั้งหมดสำหรับตอนนี้จากฉัน ประเด็นที่กล่าวถึงข้างต้นทั้งหมดยังไม่เพียงพอ แต่จะช่วยได้อย่างแน่นอน เราไม่เพียงแต่ตั้งใจจะสร้างบทช่วยสอนเพื่อให้คุณเรียนรู้สิ่งใหม่ๆ ทุกครั้ง แต่ยังต้องการแสดง "วิธีมีประสิทธิผลมากขึ้นในกรอบเดียวกัน" ให้ข้อเสนอแนะอันมีค่าของคุณในความคิดเห็นด้านล่าง เชื่อมต่อไว้ แสดงความคิดเห็นต่อไป