ค้นหาเว็บไซต์

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

นั่นคือทั้งหมดสำหรับตอนนี้จากฉัน ประเด็นที่กล่าวถึงข้างต้นทั้งหมดยังไม่เพียงพอ แต่จะช่วยได้อย่างแน่นอน เราไม่เพียงแต่ตั้งใจจะสร้างบทช่วยสอนเพื่อให้คุณเรียนรู้สิ่งใหม่ๆ ทุกครั้ง แต่ยังต้องการแสดง "วิธีมีประสิทธิผลมากขึ้นในกรอบเดียวกัน" ให้ข้อเสนอแนะอันมีค่าของคุณในความคิดเห็นด้านล่าง เชื่อมต่อไว้ แสดงความคิดเห็นต่อไป