10 thủ thuật lệnh Linux trên Centos / Ubuntu / Debian Phần 2

Bài viết này nhằm giới thiệu cho bạn một số thủ thuật hữu ích để sử dụng terminal Linux như một chuyên gia với mức kỹ năng tối thiểu. Bạn chỉ cần có một terminal Linux và ít thời gian rảnh để thử nghiệm những lệnh này. Đây là phần 2 của "10 thủ thuật lệnh Linux hữu ích cho người mới" hãy cùng theo dõi những ví dụ sau nhé.

Tìm lệnh phù hợp

Thực hiện đúng lệnh có thể quan trọng đối với hệ thống của bạn. Tuy nhiên, trên Linux có quá nhiều dòng lệnh khác nhau đến mức chúng thường khó nhớ. Vậy làm thế nào để tìm kiếm lệnh phù hợp mà bạn cần? Câu trả lời là sử dụng "apropos". Bạn chỉ cần chạy:

# apropos <description>

Bạn thay "description" bằng mô tả thực tế của lệnh bạn đang tìm kiếm. Dưới đây là một ví dụ tốt: 

# apropos "list directory"

dir (1) - list directory contents
ls (1) - list directory contents
ntfsls (8) - list directory contents on an NTFS filesystem
vdir (1) - list directory contents

Ở phía trái, bạn có thể thấy các lệnh và ở phía phải là mô tả của chúng.

Thực thi lệnh trước đó

Nhiều lần bạn sẽ cần thực thi cùng một lệnh nhiều lần. Thay vì nhấn phím mũi tên Up trên bàn phím, bạn có thể sử dụng lệnh "history". Lệnh này sẽ liệt kê tất cả các lệnh bạn đã nhập từ khi bạn khởi động terminal. Dưới đây là ví dụ: 

# history

    1  fdisk -l
    2  apt-get install gnome-paint
    3  hostname tecmint.com
    4  hostnamectl tecmint.com
    5  man hostnamectl 
    6  hostnamectl --set-hostname tecmint.com
    7  hostnamectl -set-hostname tecmint.com
    8  hostnamectl set-hostname tecmint.com
    9  mount -t "ntfs" -o
   10  fdisk -l
   11  mount -t ntfs-3g /dev/sda5 /mnt
   12  mount -t rw ntfs-3g /dev/sda5 /mnt
   13  mount -t -rw ntfs-3g /dev/sda5 /mnt
   14  mount -t ntfs-3g /dev/sda5 /mnt
   15  mount man
   16  man mount
   17  mount -t -o ntfs-3g /dev/sda5 /mnt
   18  mount -o ntfs-3g /dev/sda5 /mnt
   19  mount -ro ntfs-3g /dev/sda5 /mnt
   20  cd /mnt
   ...

Bạn sẽ nhận được một danh sách các lệnh bạn đã chạy. Trên mỗi dòng, có một số chỉ số thể hiện số thứ tự của lệnh bạn đã nhập. Bạn có thể gọi lại lệnh đó bằng cách sử dụng: 

!#

Để hiểu rõ hơn, xem ví dụ dưới đây: 

!501

Tương đương với lệnh ban đầu.

# history

Sử dụng Midnight Commander

Nếu bạn không quen sử dụng các lệnh như "cd", "cp", "mv", "rm", bạn có thể sử dụng Midnight Commander (mc). Đây là một giao diện shell dễ sử dụng mà bạn cũng có thể sử dụng chuột.

Nhờ các phím F1 - F12, bạn có thể thực hiện các tác vụ khác nhau một cách dễ dàng. Chỉ cần kiểm tra chú thích ở phía dưới. Để chọn một tệp hoặc thư mục, bạn chỉ cần nhấn nút "Insert". Tóm lại, Midnight Commander được gọi là "mc" - một thủ thuật lệnh Linux. Để cài đặt mc trên hệ thống của bạn, chỉ cần chạy lệnh: 

$ sudo apt-get install mc        [On Debian based systems]
# yum install mc                 [On Fedora based systems]

Dưới đây là một ví dụ đơn giản về việc sử dụng Midnight Commander. Mở mc bằng cách nhập lệnh:

"mc"

Bây giờ sử dụng nút TAB để chuyển đổi giữa các cửa sổ - bên trái và bên phải. Tôi có một tệp LibreOffice mà tôi sẽ di chuyển vào thư mục "Software": 

Để di chuyển tệp vào thư mục mới, nhấn phím F6 trên bàn phím của bạn. MC sẽ hỏi bạn xác nhận: 

Sau khi xác nhận, tệp sẽ được di chuyển vào thư mục đích mới.

Tắt máy tính vào thời điểm cụ thể

Đôi khi bạn cần tắt máy tính sau một số giờ kể từ khi giờ làm việc kết thúc. Bạn có thể cấu hình máy tính để tắt vào thời điểm cụ thể bằng cách sử dụng lệnh sau: 

$ sudo shutdown 21:00

Điều này sẽ cho máy tính biết để tắt vào thời điểm cụ thể bạn đã cung cấp. Bạn cũng có thể cho hệ thống tắt máy sau một số phút cụ thể: 

$ sudo shutdown -h +15

Điều này sẽ làm cho hệ thống tắt máy trong vòng 15 phút.

Hiển thị thông tin về người dùng đã biết

Bạn có thể sử dụng một lệnh đơn giản để liệt kê người dùng hệ thống Linux và một số thông tin cơ bản về họ. Chỉ cần sử dụng lệnh: 

# lslogins

Điều này sẽ hiển thị đầu ra như sau:

UID USER PWD-LOCK PWD-DENY LAST-LOGIN GECOS
0 root 0 0 Apr29/11:35 root
1 bin 0 1 bin
2 daemon 0 1 daemon
3 adm 0 1 adm
4 lp 0 1 lp
5 sync 0 1 sync
6 shutdown 0 1 Jul19/10:04 shutdown
7 halt 0 1 halt
8 mail 0 1 mail
10 uucp 0 1 uucp
11 operator 0 1 operator
12 games 0 1 games
13 gopher 0 1 gopher
14 ftp 0 1 FTP User
23 squid 0 1
25 named 0 1 Named
27 mysql 0 1 MySQL Server
47 mailnull 0 1
48 apache 0 1 Apache
...

Tìm kiếm tệp tin

Tìm kiếm tệp tin đôi khi không đơn giản như bạn nghĩ. Một ví dụ tốt cho việc tìm kiếm tệp tin là:

# find /home/user -type f

Lệnh này sẽ tìm kiếm tất cả các tệp tin nằm trong thư mục /home/user. Lệnh find là một lệnh cực kỳ mạnh mẽ và bạn có thể truyền thêm tùy chọn để tìm kiếm chi tiết hơn. Nếu bạn muốn tìm kiếm các tệp tin lớn hơn một kích thước nhất định, bạn có thể sử dụng: 

# find . -type f -size 10M

Lệnh trên sẽ tìm kiếm từ thư mục hiện tại các tệp tin có kích thước lớn hơn 10MB. Hãy đảm bảo không chạy lệnh này từ thư mục gốc của hệ thống Linux của bạn vì điều này có thể gây tải cao vào máy của bạn.

Một trong những kết hợp được sử dụng thường xuyên nhất với lệnh find là tùy chọn "exec", cho phép bạn thực hiện một số hành động trên kết quả của lệnh find. Ví dụ, giả sử chúng ta muốn tìm tất cả các tệp tin trong một thư mục và thay đổi quyền truy cập của chúng.

# find /home/user/files/ -type f -exec chmod 644 {} \;

Xây dựng cây thư mục với một lệnh

Bạn có thể tạo các thư mục mới bằng cách sử dụng lệnh mkdir. Vì vậy, nếu bạn muốn tạo một thư mục mới, bạn sẽ chạy một lệnh như sau:

 "mkdir new_folder"

Nhưng nếu bạn muốn tạo 5 thư mục con trong thư mục đó thì chạy lệnh mkdir 5 lần liên tiếp không phải là một giải pháp tốt. Thay vào đó, bạn có thể sử dụng tùy chọn -p như sau:

 "mkdir -p new_folder/subfolder1/subfolder2/subfolder3/subfolder4/subfolder5".

 Cuối cùng, bạn sẽ có 5 thư mục nằm trong thư mục new_folder.

Sao chép tệp tin vào nhiều thư mục

Thường thì việc sao chép tệp tin được thực hiện bằng lệnh cp. Sao chép một tệp tin thường có dạng như sau:

# cp /path-to-file/my_file.txt /path-to-new-directory/

Giả sử bạn cần sao chép tệp tin đó vào nhiều thư mục khác nhau:

# cp /home/user/my_file.txt /home/user/1
# cp /home/user/my_file.txt /home/user/2
# cp /home/user/my_file.txt /home/user/3

Điều này trở nên hơi vô lý. Thay vào đó, bạn có thể giải quyết vấn đề này với một lệnh đơn giản: 

# echo /home/user/1/ /home/user/2/ /home/user/3/ | xargs -n 1  cp /home/user/my_file.txt

Xóa các tệp tin lớn hơn

Đôi khi tệp tin có dung lượng rất lớn và một trong những thủ thuật lệnh Linux có thể làm là xóa các tệp tin kích thước khủng lồ. Có những trường hợp một tệp tin nhật ký (log file) đạt tới hơn 250 GB do kỹ năng quản trị kém. Việc xóa tệp tin bằng lệnh rm có thể không đủ trong trường hợp như vậy do việc xóa đi một lượng dữ liệu cực kỳ lớn. Phép toán này sẽ là một phép toán "nặng" và nên được tránh. Thay vào đó, bạn có thể áp dụng một giải pháp đơn giản thực hiện như sau:

# > /path-to-file/huge_file.log

Tất nhiên, bạn cần thay đổi đường dẫn và tên tệp tin thực tế phù hợp với trường hợp của bạn. Lệnh trên đơn giản là ghi một đầu ra trống vào tệp tin. Nói một cách đơn giản hơn, nó sẽ làm cho tệp tin trở thành trống mà không gây tải cao vào hệ thống của bạn.

Chạy cùng một lệnh trên nhiều máy chủ Linux

Làm thế nào để thực thi một lệnh đơn trên nhiều máy chủ Linux cùng một lúc sử dụng SSH, chúng ta có địa chỉ IP của máy chủ như sau: 

10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
10.0.0.5

Dưới đây là một giải pháp đơn giản cho vấn đề này. Hãy thu thập địa chỉ IP của các máy chủ trong một tệp tin gọi là list.txt, mỗi địa chỉ IP được đặt trên một dòng như đã hiển thị ở trên. Sau đó, bạn có thể chạy lệnh sau:

# for in $i(cat list.txt); do ssh user@$i 'bash command'; done

Trong ví dụ trên, bạn cần thay thế "user" bằng người dùng thực tế mà bạn sẽ đăng nhập và "bash command" bằng lệnh bash thực tế mà bạn muốn thực thi. Phương pháp này hoạt động tốt khi bạn sử dụng xác thực không yêu cầu mật khẩu với khóa SSH cho các máy chủ của bạn, vì điều đó sẽ không yêu cầu bạn nhập mật khẩu cho người dùng của mình lần lượt trên từng máy chủ.

Lưu ý rằng bạn có thể cần truyền một số thông số bổ sung cho lệnh SSH tùy thuộc vào cấu hình của máy chủ Linux của bạn.