4 mẹo hữu ích về các lệnh "mkdir", "tar" và "kill" trong Linux

Chúng ta tiếp tục thực hiện một nhiệm vụ theo cách truyền thống cho đến khi chúng ta nhận ra rằng nó có thể được thực hiện một cách tốt hơn bằng cách khác. Trong loạt bài viết Linux Tips and Trick Series tiếp theo, tôi sẽ chia sẻ bốn mẹo dưới đây bao gồm các lệnh mkdir, kill và tar sẽ giúp bạn trong rất nhiều trường hợp. Bắt đầu thôi!

Linux Useful Tips

1. Bạn đang cần tạo một cây thư mục dài/ phức tạp giống như dưới đây. Cách hiệu quả nhất để làm điều đó là gì?

Cấu trúc cây thư mục để đạt được như được gợi ý dưới đây.

$ 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

Kịch bản trên có thể dễ dàng đạt được bằng cách chạy lệnh 1-liner dưới đây.

$ mkdir -p /home/$USER/Desktop/tecmint/{etc/x1,lib,usr/{x2,x3},bin,tmp/{Y1,Y2,Y3/z},opt,var}

Để kiểm tra, bạn có thể sử dụng lệnh tree. Nếu chưa cài đặt, bạn có thể dùng apt hoặc yum để cài đặt gói ‘tree‘.

$ tree tecmint
Check Directory Structure

Chúng ta có thể tạo cấu trúc cây thư mục phức tạp bất kỳ bằng cách trên. Lưu ý rằng đó chỉ là một lệnh bình thường nhưng nó sử dụng {} để tạo ra cấu trúc thư mục. Điều này có thể rất hữu ích khi được sử dụng từ bên trong một tập lệnh, khi cần thiết và nói chung.

2. Tạo một tập tin (ví dụ test) trên Desktop (/home/$USER/Desktop) và điền nội dung bên dưới vào tập tin đó.

ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
Y
Z

Một người dùng thông thường sẽ làm gì trong tình huống này?

a. Anh ta sẽ tạo ra tập tin trước, ưu tiên sử dụng lệnh touch, như sau:

$ touch /home/$USER/Desktop/test

b. Anh ta sẽ sử dụng trình soạn thảo văn bản để mở tập tin, có thể là nano, vim hoặc bất kỳ trình soạn thảo nào khác.

$ nano /home/$USER/Desktop/test

c. Anh ta sẽ đặt đoạn văn bản trên vào tập tin này, lưu và thoát.

Do đó, bất kể thời gian mà anh ta cần, anh ta ít nhất cần 3 bước để thực hiện kịch bản trên.

Một người dùng Linux giàu kinh nghiệm thông minh sẽ làm gì? Anh ta chỉ cần gõ đoạn văn bản dưới đây trong terminal một lần và đã xong. Anh ta không cần thực hiện từng hành động một cách riêng lẻ.

cat << EOF > /home/$USER/Desktop/test
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
Y
Z
EOF

Bạn có thể sử dụng lệnh cat để kiểm tra xem tệp tin và nội dung của nó đã được tạo thành công hay chưa.

$ cat /home/avi/Desktop/test

Kiểm tra nội dung tệp tin

3. Chúng ta thường xuyên làm việc với các file nén (đặc biệt là các file TAR) trên Linux. Trong nhiều trường hợp, chúng ta phải sử dụng file TAR ở một vị trí khác với thư mục Downloads. Chúng ta làm gì trong tình huống này?

Thường thì chúng ta làm hai việc trong trường hợp này.

a. Sao chép/Di chuyển file tar và giải nén nó tại đích, như sau:

$ cp firefox-37.0.2.tar.bz2 /opt/
or
$ mv firefox-37.0.2.tar.bz2 /opt/

b. cd đến thư mục /opt/.

$ cd /opt/

c. Giải nén tarball.

# tar -jxvf firefox-37.0.2.tar.bz2 

Chúng ta có thể làm ngược lại.

Chúng ta sẽ giải nén tarball ngay tại chỗ và sao chép/Di chuyển các file giải nén đến vị trí đích cần thiết như sau:

$ tar -jxvf firefox-37.0.2.tar.bz2 
$ cp -R firefox/  /opt/
or
$ mv firefox/ /opt/

Trong cả hai trường hợp, công việc cần từ hai đến nhiều bước để hoàn thành. Người dùng chuyên nghiệp có thể hoàn thành công việc này chỉ trong một bước như sau:

$ tar -jxvf firefox-37.0.2.tar.bz2 -C /opt/

Tùy chọn -C làm cho tar giải nén file vào thư mục đã chỉ định (ở đây là /opt/).

Điều này không chỉ liên quan đến tùy chọn (-C) mà còn là về thói quen. Hãy tạo thói quen sử dụng tùy chọn -C với tar. Điều đó sẽ giúp cuộc sống của bạn dễ dàng hơn. Từ bây giờ, hãy để file TAR trong thư mục Downloads và giải nén nó ở bất kỳ đâu bạn muốn.

4. Làm thế nào chúng ta tắt một tiến trình theo cách truyền thống?

Theo cách tổng quát nhất, chúng ta trước tiên liệt kê tất cả các tiến trình bằng lệnh ps -A và đưa qua grep để tìm một tiến trình/dịch vụ (chẳng hạn apache2) như sau:

$ ps -A | grep -i apache2
Output Mẫu
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

Đầu ra trên cho thấy tất cả các tiến trình apache2 đang chạy với PID tương ứng, bạn có thể sử dụng PID này để tắt apache2 bằng lệnh sau.

# kill 1006 2702 2703 2704 2705 2706 2707

và sau đó kiểm tra xem tiến trình/dịch vụ có tên ‘apache2‘ đang chạy hay không, như sau:

$ ps -A | grep -i apache2

Tuy nhiên, chúng ta có thể thực hiện nó một cách dễ hiểu hơn bằng cách sử dụng các tiện ích như pgrep và pkill. Bạn có thể tìm thông tin liên quan về một tiến trình chỉ qua việc sử dụng pgrep. Ví dụ, nếu bạn muốn tìm thông tin tiến trình cho apache2, bạn có thể đơn giản thực hiện:

$ pgrep apache2
Output Mẫu
15396
15400
15401
15402
15403
15404
15405

Bạn cũng có thể liệt kê tên tiến trình đối với pid bằng cách chạy.

$ pgrep -l apache2
Output Mẫu
15396 apache2
15400 apache2
15401 apache2
15402 apache2
15403 apache2
15404 apache2
15405 apache2

Để tắt một tiến trình bằng lệnh pkill rất đơn giản. Bạn chỉ cần gõ tên của tài nguyên cần tắt và bạn đã xong. Tôi đã viết một bài viết về pkill mà bạn có thể tham khảo tại đây: https://www.tecmint.com/how-to-kill-a-process-in-linux/.

Để tắt một tiến trình (chẳng hạn apache2) bằng lệnh pkill, bạn chỉ cần thực hiện:

# pkill apache2

Bạn có thể kiểm tra xem apache2 đã bị tắt chưa bằng cách chạy lệnh dưới đây.

$ pgrep -l apache2

Nếu nó trả về dấu nhắc lệnh và không in gì tức là không có tiến trình nào đang chạy với tên apache2.

Đó là tất cả những gì tôi muốn chia sẻ. Tất cả những điểm đã được thảo luận ở trên chưa đủ nhưng chắc chắn sẽ hữu ích. Chúng tôi không chỉ muốn cung cấp các hướng dẫn để giúp bạn tìm hiểu điều gì đó mới mẻ mỗi lần mà còn muốn chỉ ra 'Cách tăng năng suất trong cùng một khung'. Hãy cho chúng tôi biết về ý kiến phản hồi quý giá của bạn trong phần bình luận bên dưới. Tiếp tục kết nối. Tiếp tục phản hồi.