Scroll to top
Tổng hợp lệnh Linux cơ bản cho người mới

Tổng hợp lệnh Linux cơ bản cho người mới

04/06/2026 19:01
107min read

Tổng hợp các lệnh Linux cơ bản thường dùng: quản lý file, thư mục, quyền, tiến trình, mạng, service, log, ổ đĩa, package và bảo mật.

Linux là hệ điều hành mạnh mẽ, ổn định và được dùng rất nhiều trong lập trình, quản trị server, DevOps, bảo mật, cloud, container và cả máy tính cá nhân. Muốn dùng Linux hiệu quả, bạn nên nắm được các lệnh Linux cơ bản trong Terminal.

Bài viết này tổng hợp hơn 150 câu lệnh Linux thông dụng nhất, có giải thích ngắn gọn và ví dụ dễ hiểu. Bạn có thể dùng bài này như một “cheat sheet” để tra cứu nhanh khi làm việc với Ubuntu, Debian, Linux Mint, Fedora, CentOS, RHEL, Arch Linux, Alpine Linux hoặc các bản phân phối Linux phổ biến khác.

Linux Terminal là gì?

Terminal là giao diện dòng lệnh cho phép bạn giao tiếp với hệ điều hành Linux bằng cách nhập lệnh. Thay vì bấm chuột trong giao diện đồ họa, bạn có thể dùng Terminal để tạo thư mục, sao chép file, cài phần mềm, kiểm tra mạng, xem log, quản lý service hoặc xử lý hàng nghìn file cùng lúc.

Terminal thường được gọi bằng nhiều tên khác như: Command line, Shell, Console, CLI, Bash terminal.

Trên Ubuntu và nhiều bản Linux desktop, bạn có thể mở Terminal bằng tổ hợp phím: Ctrl + Alt + T

Cấu trúc cơ bản của một lệnh Linux

Một câu lệnh Linux thường có dạng:

Copy
command [option] [argument]
Ví dụ:

Copy
ls -lah /var/log
Trong đó:

Thành phần Ý nghĩa
ls Tên lệnh
-lah Tùy chọn, còn gọi là option hoặc flag
/var/log Đối tượng cần xử lý, thường là file, thư mục, user, service hoặc địa chỉ mạng

Một ví dụ khác:

Copy
sudo apt update
Trong đó:

Thành phần Ý nghĩa
sudo Chạy lệnh với quyền quản trị
apt Trình quản lý gói trên Ubuntu/Debian
update Hành động cần thực hiện

Lưu ý quan trọng trước khi dùng lệnh Linux

Trước khi học các lệnh Linux cơ bản, bạn nên nhớ vài nguyên tắc sau:

  1. Linux phân biệt chữ hoa và chữ thường. File.txtfile.txt là hai tên khác nhau.
  2. Nhiều lệnh không hỏi lại khi xóa dữ liệu, đặc biệt là rm -rf.
  3. Lệnh bắt đầu bằng sudo có thể thay đổi hệ thống, cài phần mềm, xóa file hệ thống hoặc chỉnh service.
  4. Đường dẫn bắt đầu bằng / là đường dẫn tuyệt đối, ví dụ /home/user/file.txt.
  5. Dấu ~ thường đại diện cho thư mục home của user hiện tại.
  6. Nên dùng man ten_lenh để xem tài liệu chính thức của lệnh.
  7. Không copy lệnh lạ trên mạng rồi chạy bằng sudo nếu chưa hiểu tác dụng.

Lệnh làm quen với Terminal

Đây là nhóm lệnh Linux cơ bản nhất, dùng để xem thông tin user, hệ thống, môi trường shell và trợ giúp.

Ghi chú: Trong các bảng lệnh bên dưới, cột Công dụng được đặt ngay sau tên lệnh để dễ nắm ý chính trước. Cột Options liệt kê các option/flag hoặc lệnh con thường dùng kèm ý nghĩa ngắn gọn. Dấu nghĩa là lệnh đó gần như không có option đáng nhớ hoặc thường được dùng trực tiếp bằng argument. Cột Ví dụ ưu tiên minh họa các option/flag đáng học, nhất là những option dễ bị khó hiểu nếu chỉ đọc mô tả.

Lệnh Công dụng Options Ví dụ
pwd Hiển thị thư mục hiện tại -L: hiển thị đường dẫn logic
-P: hiển thị đường dẫn vật lý, bỏ symlink
pwd -P
whoami Xem user đang đăng nhập whoami
id Xem UID, GID và group của user -u: chỉ in UID
-g: chỉ in GID chính
-G: in tất cả group ID
-n: in tên thay vì số
id -un
hostname Xem tên máy -f: in FQDN
-s: in tên ngắn
-I: in các địa chỉ IP của máy
hostname -I
uname Xem thông tin kernel/hệ thống -a: in toàn bộ thông tin
-r: kernel release
-m: kiến trúc máy
-n: hostname
-s: tên kernel
uname -a
date Xem ngày giờ hệ thống -u: dùng UTC
-d STRING: hiển thị ngày theo chuỗi mô tả
+FORMAT: định dạng output
-I: định dạng ISO 8601
date -u +"%Y-%m-%dT%H:%M:%SZ"
cal Hiển thị lịch -3: hiện 3 tháng
-y: hiện cả năm
-m: dùng Monday làm đầu tuần
-A N/-B N: hiện thêm N tháng sau/trước
cal -3
uptime Xem thời gian hệ thống đã chạy -p: output dễ đọc
-s: thời điểm hệ thống bắt đầu chạy
uptime -p
clear Xóa màn hình Terminal -x: xóa màn hình nhưng giữ scrollback nếu terminal hỗ trợ clear -x
reset Reset lại màn hình Terminal khi bị lỗi hiển thị reset
history Xem lịch sử lệnh đã chạy -c: xóa history trong session
-d N: xóa dòng history số N
-a: ghi dòng mới vào file history
-w: ghi toàn bộ history ra file
history -w ~/.bash_history
echo In chuỗi hoặc biến ra màn hình -n: không xuống dòng cuối
-e: bật escape như \n, \t
-E: tắt xử lý escape
echo -e "APP_ENV=production\nDEBUG=false"
printf In dữ liệu theo định dạng -v VAR: gán output vào biến Bash
FORMAT: chuỗi định dạng như %s, %d, \n
printf "%-12s %s\n" "User:" "$USER"
env Xem biến môi trường -i: chạy với môi trường rỗng
-u VAR: bỏ biến môi trường
VAR=value: đặt biến tạm cho lệnh
env -i PATH=/usr/bin:/bin bash --noprofile --norc
printenv In biến môi trường cụ thể -0: ngăn cách output bằng ký tự null thay vì newline `printenv -0 \
export Tạo/xuất biến môi trường -p: liệt kê biến đã export
-n VAR: bỏ thuộc tính export của biến
`export -p \
source Nạp file cấu hình shell source ~/.bashrc
alias Tạo lệnh tắt -p: in alias theo dạng có thể dùng lại `alias -p \
unalias Xóa alias -a: xóa toàn bộ alias unalias -a
type Xem một lệnh là built-in, alias hay file thực thi -a: hiện tất cả nơi tìm thấy lệnh
-t: chỉ in loại lệnh
-p: chỉ in path nếu là file thực thi
-P: ép tìm trong PATH
type -a python3
which Xem đường dẫn file thực thi -a: hiện tất cả path khớp trong PATH which -a python3
whereis Tìm file binary, source, man page -b: chỉ tìm binary
-m: chỉ tìm man page
-s: chỉ tìm source
whereis -b nginx
command -v Kiểm tra lệnh có tồn tại không -v: in cách shell tìm lệnh
-V: mô tả chi tiết hơn
-p: dùng PATH mặc định an toàn
command -V git
man Mở tài liệu hướng dẫn của lệnh -k: tìm theo từ khóa, tương tự apropos
-f: mô tả ngắn, tương tự whatis
-a: mở tất cả trang man khớp
-P PAGER: chọn chương trình xem
man -k password
info Xem tài liệu GNU dạng info -k KEYWORD: tìm trong tài liệu info
-f FILE: mở file info cụ thể
-o FILE: ghi output ra file
info -k coreutils
help Xem trợ giúp cho shell built-in -d: mô tả ngắn
-m: định dạng giống man page
-s: chỉ in cú pháp ngắn
help -m cd
whatis Mô tả ngắn về lệnh -w: tìm bằng wildcard
-r: tìm bằng regex
-s SECTION: giới hạn section man
whatis -w 'git*'
apropos Tìm lệnh theo từ khóa trong mô tả -a: yêu cầu khớp tất cả từ khóa
-e: khớp chính xác
-w: dùng wildcard
-s SECTION: giới hạn section man
apropos -a password user
exit Thoát khỏi shell hiện tại exit
logout Đăng xuất shell đăng nhập logout

Lệnh quản lý thư mục và file

Nhóm này dùng để di chuyển trong hệ thống file, tạo thư mục, sao chép, đổi tên, xóa, tạo liên kết và xem thông tin file.

Lệnh điều hướng thư mục

Lệnh Công dụng Options Ví dụ
ls Liệt kê file và thư mục -l: dạng chi tiết
-a: hiện file ẩn
-h: dung lượng dễ đọc
-R: liệt kê đệ quy
-t: sắp xếp theo thời gian
-S: sắp xếp theo kích thước
ls -lahS /var/log
ls -l Liệt kê chi tiết -l: dạng chi tiết
-a: hiện file ẩn
-h: dung lượng dễ đọc
-R: liệt kê đệ quy
-t: sắp xếp theo thời gian
-S: sắp xếp theo kích thước
ls -lh /var/log
ls -a Hiện cả file ẩn -l: dạng chi tiết
-a: hiện file ẩn
-h: dung lượng dễ đọc
-R: liệt kê đệ quy
-t: sắp xếp theo thời gian
-S: sắp xếp theo kích thước
ls -a ~
ls -lah Hiện chi tiết, file ẩn, dung lượng dễ đọc -l: dạng chi tiết
-a: hiện file ẩn
-h: dung lượng dễ đọc
-R: liệt kê đệ quy
-t: sắp xếp theo thời gian
-S: sắp xếp theo kích thước
ls -lahS /var/log
cd Di chuyển thư mục -: quay lại thư mục trước
-P: dùng đường dẫn vật lý, bỏ symlink
-L: dùng đường dẫn logic
cd -P /var/log
cd .. Lùi lên thư mục cha -: quay lại thư mục trước
-P: dùng đường dẫn vật lý, bỏ symlink
-L: dùng đường dẫn logic
cd -P ..
cd ~ Về thư mục home -: quay lại thư mục trước
-P: dùng đường dẫn vật lý, bỏ symlink
-L: dùng đường dẫn logic
cd ~
cd - Quay lại thư mục trước đó -: quay lại thư mục trước
-P: dùng đường dẫn vật lý, bỏ symlink
-L: dùng đường dẫn logic
cd -
tree Hiển thị cây thư mục -L N: giới hạn độ sâu
-a: hiện file ẩn
-d: chỉ hiện thư mục
-h: dung lượng dễ đọc
-I PATTERN: bỏ qua pattern
tree -a -L 2 -I node_modules

Lưu ý: tree có thể chưa được cài sẵn. Trên Ubuntu/Debian, cài bằng sudo apt install tree.

Lệnh tạo và kiểm tra file/thư mục

Lệnh Công dụng Options Ví dụ
mkdir Tạo thư mục -p: tạo thư mục cha nếu chưa có
-m MODE: đặt quyền khi tạo
-v: in thông tin thư mục được tạo
mkdir -p -m 755 app/logs
mkdir -p Tạo thư mục lồng nhau -p: tạo thư mục cha nếu chưa có
-m MODE: đặt quyền khi tạo
-v: in thông tin thư mục được tạo
mkdir -p -v app/logs/2026
rmdir Xóa thư mục rỗng -p: xóa cả thư mục cha nếu rỗng
--ignore-fail-on-non-empty: bỏ qua lỗi không rỗng
-v: in quá trình xóa
rmdir -p old/empty/folder
touch Tạo file rỗng hoặc cập nhật thời gian sửa file -a: chỉ đổi access time
-m: chỉ đổi modify time
-c: không tạo file mới
-t TIME: đặt thời gian cụ thể
-r FILE: lấy thời gian theo file khác
touch -t 202604301200 index.html
stat Xem metadata của file -c FORMAT: chọn định dạng output
-f: xem thông tin filesystem
-L: theo symbolic link
-t: output ngắn gọn
stat -c "%n %s bytes %y" index.html
file Xác định loại file -b: không in tên file
-i: in MIME type
-L: theo symbolic link
-z: thử đọc bên trong file nén
file -i image.png
realpath Lấy đường dẫn tuyệt đối -s: không resolve symlink
-m: canonicalize dù path chưa tồn tại
--relative-to=DIR: in path tương đối từ DIR
--relative-base=DIR: chỉ tương đối nếu nằm trong DIR
realpath --relative-to="$HOME" ./index.html
readlink Xem đích của symbolic link -f: resolve path đầy đủ
-e: giống -f nhưng yêu cầu mọi thành phần tồn tại
-m: resolve kể cả khi path chưa tồn tại
-n: không xuống dòng cuối
readlink -f link_name
basename Lấy tên file từ đường dẫn -a: xử lý nhiều argument
-s SUFFIX: bỏ hậu tố
-z: ngăn cách output bằng null
basename -s .log /var/log/syslog.log
dirname Lấy thư mục cha từ đường dẫn -z: ngăn cách output bằng null `dirname -z /var/log/syslog \

Lệnh sao chép, di chuyển, đổi tên và xóa file

Lệnh Công dụng Options Ví dụ
cp Sao chép file -r/-R: copy thư mục đệ quy
-i: hỏi trước khi ghi đè
-v: in quá trình copy
-a: archive, giữ quyền/thời gian/symlink
-u: chỉ copy nếu source mới hơn
-n: không ghi đè
cp -a source/ backup/
cp -r Sao chép thư mục -r/-R: copy thư mục đệ quy
-i: hỏi trước khi ghi đè
-v: in quá trình copy
-a: archive, giữ quyền/thời gian/symlink
-u: chỉ copy nếu source mới hơn
-n: không ghi đè
cp -rv source/ backup/
cp -i Hỏi trước khi ghi đè -r/-R: copy thư mục đệ quy
-i: hỏi trước khi ghi đè
-v: in quá trình copy
-a: archive, giữ quyền/thời gian/symlink
-u: chỉ copy nếu source mới hơn
-n: không ghi đè
cp -iv a.txt b.txt
cp -v Hiển thị quá trình copy -r/-R: copy thư mục đệ quy
-i: hỏi trước khi ghi đè
-v: in quá trình copy
-a: archive, giữ quyền/thời gian/symlink
-u: chỉ copy nếu source mới hơn
-n: không ghi đè
cp -v a.txt backup/
mv Di chuyển hoặc đổi tên file -i: hỏi trước khi ghi đè
-v: in quá trình di chuyển
-n: không ghi đè file có sẵn
-f: ghi đè không hỏi
-u: chỉ di chuyển nếu source mới hơn
--backup: tạo backup trước khi ghi đè
mv -iv old.txt new.txt
mv file dir/ Di chuyển file vào thư mục -i: hỏi trước khi ghi đè
-v: in quá trình di chuyển
-n: không ghi đè file có sẵn
-f: ghi đè không hỏi
-u: chỉ di chuyển nếu source mới hơn
--backup: tạo backup trước khi ghi đè
mv -v report.pdf ~/Documents/
rm Xóa file -i: hỏi trước khi xóa
-r/-R: xóa đệ quy
-f: cưỡng bức, bỏ qua lỗi không tồn tại
-v: in file đã xóa
--preserve-root: bảo vệ thư mục /
--one-file-system: không vượt filesystem khác
rm -iv old.txt
rm -i Hỏi trước khi xóa -i: hỏi trước khi xóa
-r/-R: xóa đệ quy
-f: cưỡng bức, bỏ qua lỗi không tồn tại
-v: in file đã xóa
--preserve-root: bảo vệ thư mục /
--one-file-system: không vượt filesystem khác
rm -i old.txt
rm -r Xóa thư mục và nội dung bên trong -i: hỏi trước khi xóa
-r/-R: xóa đệ quy
-f: cưỡng bức, bỏ qua lỗi không tồn tại
-v: in file đã xóa
--preserve-root: bảo vệ thư mục /
--one-file-system: không vượt filesystem khác
rm -rv old_folder
rm -rf Xóa cưỡng bức, rất nguy hiểm -i: hỏi trước khi xóa
-r/-R: xóa đệ quy
-f: cưỡng bức, bỏ qua lỗi không tồn tại
-v: in file đã xóa
--preserve-root: bảo vệ thư mục /
--one-file-system: không vượt filesystem khác
rm -rf -- ./build/
ln Tạo hard link -s: tạo symbolic link
-f: ghi đè link/file đích
-n: không dereference symlink đích
-v: in link được tạo
ln -v file.txt hardlink.txt
ln -s Tạo symbolic link -s: tạo symbolic link
-f: ghi đè link/file đích
-n: không dereference symlink đích
-v: in link được tạo
ln -sfn /var/www/html site
install Copy file và set quyền trong một bước -m MODE: đặt quyền
-o OWNER: đặt owner
-g GROUP: đặt group
-D: tạo thư mục cha của file đích
-v: in quá trình copy
install -D -m 755 script.sh /usr/local/bin/deploy
rename Đổi tên hàng loạt, tùy distro -n: chạy thử, không đổi thật
-v: in tên file đã đổi
-f: ghi đè nếu tên đích tồn tại
rename -n 's/\.txt$/.bak/' *.txt
shred Ghi đè nội dung file trước khi xóa -u: xóa file sau khi ghi đè
-v: in tiến trình
-n N: số lần ghi đè
-z: ghi thêm lượt zero để che dấu shred
-s SIZE: chỉ shred kích thước chỉ định
shred -uzv -n 3 secret.txt
truncate Cắt hoặc đặt kích thước file -s SIZE: đặt kích thước file
-c: không tạo file mới
-o: xử lý size theo block I/O
-r FILE: lấy kích thước bằng file khác
truncate -s 0 app.log
split Chia file lớn thành nhiều phần -b SIZE: chia theo byte/kích thước
-l N: chia theo số dòng
-d: dùng hậu tố số
-a N: độ dài hậu tố
split -b 100M -d big.iso part_
csplit Chia file theo pattern -f PREFIX: prefix file output
-b FORMAT: định dạng hậu tố
-k: giữ file output nếu lỗi
-s: im lặng
-z: bỏ file output rỗng
csplit -f chapter_ -b "%02d.txt" file.txt '/Chapter/' '{*}'
dd Copy dữ liệu cấp thấp, thường dùng tạo image if=FILE: input file/device
of=FILE: output file/device
bs=SIZE: block size
count=N: số block copy
status=progress: hiện tiến trình
conv=sync,noerror: xử lý lỗi đọc
dd if=/dev/sda of=disk.img bs=4M status=progress conv=sync,noerror

Cảnh báo: dd, rm -rf, mkfs, fdisk, parted là các lệnh có thể làm mất dữ liệu. Hãy kiểm tra kỹ đường dẫn trước khi chạy.

Lệnh xem, sửa và xử lý nội dung file

Đây là nhóm lệnh rất quan trọng khi đọc log, chỉnh file cấu hình, lọc dữ liệu hoặc xử lý text.

Lệnh xem nội dung file

Lệnh Công dụng Options Ví dụ
cat In toàn bộ nội dung file -n: đánh số mọi dòng
-b: đánh số dòng không rỗng
-A: hiện ký tự ẩn
-s: gộp dòng trống liên tiếp
-E: hiện ký tự cuối dòng
-T: hiện tab
cat -n config.txt
tac In nội dung file từ dưới lên -s SEP: đặt separator
-r: separator là regex
-b: gắn separator trước record
tac -s $'\n\n' notes.txt
more Xem file từng trang -d: hiện hướng dẫn phím
-N: hiện số dòng
-s: gộp dòng trống
+N: bắt đầu từ dòng N
more -N long.txt
less Xem file linh hoạt hơn more -N: hiện số dòng
-S: không wrap dòng dài
-i: tìm kiếm không phân biệt hoa thường nếu pattern không có chữ hoa
-R: giữ màu ANSI
+F: theo dõi file giống tail
less -N -S /var/log/syslog
head Xem phần đầu file -n N: in N dòng đầu
-c N: in N byte đầu
-q: không in header tên file
-v: luôn in header tên file
head -n 20 file.txt
head -n 20 Xem 20 dòng đầu -n N: in N dòng đầu
-c N: in N byte đầu
-q: không in header tên file
-v: luôn in header tên file
head -n 20 file.txt
tail Xem phần cuối file -n N: in N dòng cuối
-c N: in N byte cuối
-f: theo dõi file
-F: theo dõi cả khi file rotate
--pid=PID: dừng theo dõi khi PID kết thúc
tail -n 50 app.log
tail -n 50 Xem 50 dòng cuối -n N: in N dòng cuối
-c N: in N byte cuối
-f: theo dõi file
-F: theo dõi cả khi file rotate
--pid=PID: dừng theo dõi khi PID kết thúc
tail -n 50 app.log
tail -f Theo dõi log theo thời gian thực -n N: in N dòng cuối
-c N: in N byte cuối
-f: theo dõi file
-F: theo dõi cả khi file rotate
--pid=PID: dừng theo dõi khi PID kết thúc
tail -F /var/log/nginx/access.log
nl In file kèm số dòng -b a: đánh số mọi dòng
-b t: chỉ đánh số dòng không rỗng
-n FORMAT: định dạng số dòng
-w N: độ rộng số dòng
-s STR: chuỗi ngăn cách số và dòng
nl -ba file.txt
wc Đếm dòng, từ, ký tự -l: đếm dòng
-w: đếm từ
-c: đếm byte
-m: đếm ký tự
-L: độ dài dòng dài nhất
wc -l -w -c file.txt
od Xem file ở dạng octal/hex -c: hiển thị ký tự
-x: hiển thị hex
-t TYPE: chọn kiểu output
-A FORMAT: định dạng offset
-N BYTES: chỉ đọc N byte
od -A x -t x1 -N 64 file.bin
hexdump Xem dữ liệu dạng hex -C: canonical hex + ASCII
-v: không gộp dòng trùng
-n LENGTH: đọc số byte chỉ định
-s OFFSET: bỏ qua offset
-e FORMAT: định dạng output
hexdump -C -n 64 file.bin
xxd Tạo/xem hexdump -g N: nhóm byte
-l N: giới hạn độ dài
-s OFFSET: bắt đầu từ offset
-r: đảo hexdump về binary
-p: plain hexdump
xxd -g 1 -l 64 file.bin
strings Lọc chuỗi đọc được trong file binary -n N: độ dài chuỗi tối thiểu
-a: quét toàn file
-t FORMAT: in offset
-e ENCODING: chọn encoding
strings -n 8 -t x program

Lệnh chỉnh sửa file

Lệnh Công dụng Options Ví dụ
nano Trình soạn thảo dễ dùng cho người mới -w: không tự wrap dòng
-l: hiện số dòng
-m: bật hỗ trợ chuột
-B: backup file trước khi lưu
nano -l -w notes.txt
vi Trình soạn thảo phổ biến trên Unix/Linux -R: mở read-only
-u NONE: không nạp vimrc
+N: mở tại dòng N
-c CMD: chạy lệnh editor khi mở
vi -R +20 config.txt
vim Bản mở rộng mạnh hơn của vi -R: mở read-only
-p: mở nhiều tab
-O/-o: chia cửa sổ dọc/ngang
+N: mở tại dòng N
-c CMD: chạy lệnh Vim khi mở
vim -p app.conf nginx.conf
ed Trình soạn thảo dòng cổ điển -p PROMPT: đặt prompt
-s: chế độ im lặng
ed -p ': ' file.txt

Mẹo nhanh với nano:

  • Lưu file: Ctrl + O
  • Thoát: Ctrl + X
  • Tìm kiếm: Ctrl + W

Mẹo nhanh với vim:

  • Vào chế độ nhập: nhấn i
  • Lưu và thoát: gõ :wq
  • Thoát không lưu: gõ :q!

Lệnh xử lý văn bản

Lệnh Công dụng Options Ví dụ
grep Tìm chuỗi trong file hoặc output -i: không phân biệt hoa thường
-r/-R: tìm đệ quy
-n: hiện số dòng
-v: đảo kết quả, lấy dòng không khớp
-E: regex mở rộng
-F: tìm chuỗi literal
-C N: hiện N dòng ngữ cảnh
grep -Rni "error" /var/log
grep -i Tìm không phân biệt hoa thường -i: không phân biệt hoa thường
-r/-R: tìm đệ quy
-n: hiện số dòng
-v: đảo kết quả, lấy dòng không khớp
-E: regex mở rộng
-F: tìm chuỗi literal
-C N: hiện N dòng ngữ cảnh
grep -in "error" app.log
grep -r Tìm đệ quy trong thư mục -i: không phân biệt hoa thường
-r/-R: tìm đệ quy
-n: hiện số dòng
-v: đảo kết quả, lấy dòng không khớp
-E: regex mở rộng
-F: tìm chuỗi literal
-C N: hiện N dòng ngữ cảnh
grep -Rni "DB_HOST" .
grep -n Hiện số dòng khớp -i: không phân biệt hoa thường
-r/-R: tìm đệ quy
-n: hiện số dòng
-v: đảo kết quả, lấy dòng không khớp
-E: regex mở rộng
-F: tìm chuỗi literal
-C N: hiện N dòng ngữ cảnh
grep -nC 2 "root" /etc/passwd
sed Sửa/lọc text theo dòng -n: không tự in dòng
-i: sửa file trực tiếp
-e SCRIPT: thêm script xử lý
-f FILE: đọc script từ file
-E: dùng regex mở rộng
sed -i.bak -E 's/old/new/g' file.txt
awk Xử lý text theo cột/trường -F SEP: đặt dấu phân tách field
-v VAR=VALUE: truyền biến vào awk
-f FILE: đọc chương trình awk từ file
awk -F: '{print $1, $3}' /etc/passwd
sort Sắp xếp dòng -n: sort theo số
-r: đảo ngược
-h: sort số dễ đọc như K/M/G
-k KEY: sort theo cột/key
-u: loại dòng trùng khi sort
sort -h -r sizes.txt
sort -n Sắp xếp theo số -n: sort theo số
-r: đảo ngược
-h: sort số dễ đọc như K/M/G
-k KEY: sort theo cột/key
-u: loại dòng trùng khi sort
sort -n -k2 scores.tsv
uniq Loại dòng trùng liên tiếp -c: đếm số lần lặp
-d: chỉ in dòng bị trùng
-u: chỉ in dòng duy nhất
-i: không phân biệt hoa thường
-f N/-s N: bỏ qua field/ký tự đầu
`sort file.txt \
cut Cắt cột/ký tự -d DELIM: dấu phân tách
-f LIST: chọn field
-c LIST: chọn ký tự
-b LIST: chọn byte
--complement: lấy phần ngược lại
cut -d: -f1,7 /etc/passwd
paste Ghép dòng từ nhiều file -d LIST: đặt delimiter
-s: ghép tuần tự từng file thay vì song song
paste -d, names.txt emails.txt
tr Thay đổi hoặc xóa ký tự -d: xóa ký tự
-s: gộp ký tự lặp
-c: lấy phần bù của tập ký tự
tr -d '\r' < windows.txt > unix.txt
expand Đổi tab thành khoảng trắng -t N: đặt độ rộng tab
-i: chỉ đổi tab đầu dòng
expand -t 4 file.txt
unexpand Đổi khoảng trắng thành tab -t N: đặt độ rộng tab
-a: đổi cả khoảng trắng giữa dòng
unexpand -a -t 4 file.txt
column Canh cột cho dễ đọc -t: tạo bảng căn cột
-s SEP: dấu phân tách input
-N NAMES: đặt tên cột
-o SEP: dấu phân tách output
column -t -s, data.csv
fold Gói dòng theo độ rộng -w N: độ rộng dòng
-s: ngắt tại khoảng trắng
-b: đếm theo byte
fold -s -w 80 file.txt
fmt Định dạng lại đoạn văn bản -w N: độ rộng dòng
-s: chỉ split dòng dài, không nối dòng ngắn
-u: uniform spacing
-p PREFIX: chỉ format dòng có prefix
fmt -w 72 -s notes.txt
tee Ghi output ra file và vẫn hiển thị màn hình -a: ghi nối tiếp thay vì ghi đè
-i: bỏ qua interrupt signal
`echo ok \
diff So sánh hai file -u: unified diff
-r: so sánh đệ quy thư mục
-q: chỉ báo khác/giống
-y: so sánh song song
--color: tô màu output
diff -u old.txt new.txt
cmp So sánh byte giữa hai file -l: in tất cả byte khác nhau
-s: im lặng, chỉ trả exit code
-b: in byte khác nhau dạng ký tự
-n N: chỉ so sánh N byte
cmp -l a.bin b.bin
comm So sánh hai file đã sort -1: ẩn cột chỉ có ở file 1
-2: ẩn cột chỉ có ở file 2
-3: ẩn cột chung
--check-order: kiểm tra input đã sort
comm -12 <(sort a.txt) <(sort b.txt)

Lệnh tìm kiếm file, thư mục và nội dung

Lệnh Công dụng Options Ví dụ
find Tìm file/thư mục theo điều kiện -name PATTERN: tìm theo tên
-type f/d: lọc file/thư mục
-mtime N: lọc theo ngày sửa
-size SIZE: lọc theo kích thước
-exec CMD {} \;: chạy lệnh với kết quả
-delete: xóa kết quả
-maxdepth N: giới hạn độ sâu
find . -type f -name "*.log" -mtime -7
find -type f Tìm file thường -name PATTERN: tìm theo tên
-type f/d: lọc file/thư mục
-mtime N: lọc theo ngày sửa
-size SIZE: lọc theo kích thước
-exec CMD {} \;: chạy lệnh với kết quả
-delete: xóa kết quả
-maxdepth N: giới hạn độ sâu
find . -type f -name "*.conf"
find -type d Tìm thư mục -name PATTERN: tìm theo tên
-type f/d: lọc file/thư mục
-mtime N: lọc theo ngày sửa
-size SIZE: lọc theo kích thước
-exec CMD {} \;: chạy lệnh với kết quả
-delete: xóa kết quả
-maxdepth N: giới hạn độ sâu
find . -type d -empty
find -mtime Tìm theo thời gian sửa -name PATTERN: tìm theo tên
-type f/d: lọc file/thư mục
-mtime N: lọc theo ngày sửa
-size SIZE: lọc theo kích thước
-exec CMD {} \;: chạy lệnh với kết quả
-delete: xóa kết quả
-maxdepth N: giới hạn độ sâu
find . -type f -mtime -7
find -size Tìm theo kích thước -name PATTERN: tìm theo tên
-type f/d: lọc file/thư mục
-mtime N: lọc theo ngày sửa
-size SIZE: lọc theo kích thước
-exec CMD {} \;: chạy lệnh với kết quả
-delete: xóa kết quả
-maxdepth N: giới hạn độ sâu
find . -type f -size +100M
find -exec Chạy lệnh trên kết quả tìm được -name PATTERN: tìm theo tên
-type f/d: lọc file/thư mục
-mtime N: lọc theo ngày sửa
-size SIZE: lọc theo kích thước
-exec CMD {} \;: chạy lệnh với kết quả
-delete: xóa kết quả
-maxdepth N: giới hạn độ sâu
find . -name "*.tmp" -exec rm -i {} \;
locate Tìm nhanh bằng database -i: không phân biệt hoa thường
-r REGEX: tìm bằng regex
-n N: giới hạn số kết quả
locate -i nginx.conf
updatedb Cập nhật database cho locate -U PATH: chỉ cập nhật dưới PATH
-o FILE: ghi database ra file
-l 0/1: bật/tắt kiểm tra quyền truy cập
sudo updatedb -U /var/www
xargs Chuyển output thành argument cho lệnh khác -0: nhận input null-separated
-n N: số argument mỗi lần chạy
-I {}: placeholder thay thế
-r: không chạy nếu input rỗng
-P N: chạy song song N tiến trình
`find . -name *.log -print0 \
fzf Tìm kiếm tương tác trong Terminal --preview CMD: xem preview
--multi: chọn nhiều dòng
--height N%: đặt chiều cao
--query TEXT: đặt từ khóa ban đầu
`find . -type f \
rg Tìm nội dung nhanh bằng ripgrep -i: không phân biệt hoa thường
-n: hiện số dòng
-S: smart case
-g GLOB: lọc file theo glob
--hidden: tìm cả file ẩn
-u: giảm mức bỏ qua ignore file
rg -n -i -e TODO -e FIXME src/
ag Tìm nội dung bằng The Silver Searcher -i: không phân biệt hoa thường
-n: hiện số dòng
-G REGEX: lọc tên file
--hidden: tìm cả file ẩn
-l: chỉ in tên file khớp
ag -n -i "function" src/

Lưu ý: fzf, rg, ag thường cần cài thêm.

Lệnh phân quyền và sở hữu file

Linux quản lý file bằng quyền đọc, ghi, thực thi cho owner, group và others. Nhóm lệnh này rất quan trọng khi quản trị server.

Lệnh Công dụng Options Ví dụ
chmod Đổi quyền file/thư mục -R: đổi quyền đệ quy
+x: thêm quyền thực thi
u/g/o/a: chọn owner/group/others/all
-v: in thay đổi
--reference=FILE: lấy quyền theo file mẫu
chmod -R u+rwX,g+rX,o-rwx public/
chmod +x Thêm quyền thực thi -R: đổi quyền đệ quy
+x: thêm quyền thực thi
u/g/o/a: chọn owner/group/others/all
-v: in thay đổi
--reference=FILE: lấy quyền theo file mẫu
chmod +x deploy.sh
chmod -R Đổi quyền đệ quy -R: đổi quyền đệ quy
+x: thêm quyền thực thi
u/g/o/a: chọn owner/group/others/all
-v: in thay đổi
--reference=FILE: lấy quyền theo file mẫu
chmod -R 755 public/
chown Đổi chủ sở hữu -R: đổi owner đệ quy
-v: in thay đổi
--from=OLD: chỉ đổi nếu owner/group hiện tại khớp
--reference=FILE: lấy owner/group theo file mẫu
sudo chown -Rv www-data:www-data /var/www/html
chown -R Đổi owner đệ quy -R: đổi owner đệ quy
-v: in thay đổi
--from=OLD: chỉ đổi nếu owner/group hiện tại khớp
--reference=FILE: lấy owner/group theo file mẫu
sudo chown -R www-data:www-data /var/www/html
chgrp Đổi group sở hữu -R: đổi group đệ quy
-v: in thay đổi
--reference=FILE: lấy group theo file mẫu
chgrp -Rv developers app/
umask Xem/đặt quyền mặc định khi tạo file -S: hiển thị dạng symbolic
-p: in dạng có thể dùng lại trong shell
umask -S
getfacl Xem ACL của file -R: đọc ACL đệ quy
-a: chỉ hiện access ACL
-d: chỉ hiện default ACL
-c: bỏ header comment
getfacl -p file.txt
setfacl Gán ACL chi tiết -m ACL: thêm/sửa ACL
-x ACL: xóa ACL cụ thể
-b: xóa toàn bộ ACL mở rộng
-R: áp dụng đệ quy
-d: đặt default ACL
setfacl -m u:john:rwx file.txt
lsattr Xem thuộc tính mở rộng -a: hiện cả file ẩn
-d: hiện thuộc tính thư mục thay vì nội dung
-R: đệ quy
-l: dùng tên thuộc tính dài
lsattr -a file.txt
chattr Đổi thuộc tính mở rộng +i/-i: bật/tắt immutable
+a/-a: bật/tắt append-only
-R: áp dụng đệ quy
-V: in chi tiết
sudo chattr +i file.txt
sudo Chạy lệnh với quyền admin -u USER: chạy dưới user khác
-i: mở login shell root/user
-s: mở shell theo biến SHELL
-E: giữ biến môi trường
-k: quên credential sudo
-v: gia hạn credential
sudo -u www-data systemctl status nginx
su Chuyển user -/-l: mở login shell
-c CMD: chạy một lệnh rồi thoát
-s SHELL: chọn shell
su - root
passwd Đổi mật khẩu -l: khóa mật khẩu user
-u: mở khóa
-d: xóa mật khẩu
-S: xem trạng thái mật khẩu
-e: bắt đổi mật khẩu lần đăng nhập tới
passwd -S $USER
groups Xem group của user groups username
newgrp Chuyển group hiện tại newgrp docker

Ví dụ quyền phổ biến:

Quyền Ý nghĩa thường gặp
644 File thường: owner đọc/ghi, người khác chỉ đọc
755 Script/thư mục: owner đọc/ghi/chạy, người khác đọc/chạy
700 Chỉ owner có toàn quyền
600 File riêng tư, chỉ owner đọc/ghi

Lệnh quản lý tiến trình

Tiến trình là chương trình đang chạy. Khi server chậm, app treo hoặc cần dừng service, bạn sẽ dùng nhóm lệnh này.

Lệnh Công dụng Options Ví dụ
ps Xem tiến trình hiện tại aux: mọi tiến trình kiểu BSD
-ef: mọi tiến trình kiểu SysV
-p PID: lọc PID
-u USER: lọc user
-o FORMAT: chọn cột output
--sort KEY: sắp xếp
`ps -eo pid,ppid,user,%cpu,%mem,cmd --sort=-%mem \
ps aux Xem tất cả tiến trình chi tiết aux: mọi tiến trình kiểu BSD
-ef: mọi tiến trình kiểu SysV
-p PID: lọc PID
-u USER: lọc user
-o FORMAT: chọn cột output
--sort KEY: sắp xếp
`ps aux --sort=-%cpu \
top Xem tiến trình theo thời gian thực -p PID: theo dõi PID
-u USER: lọc user
-d SEC: delay giữa các lần refresh
-H: hiện thread
-b: batch mode
top -u www-data
htop Giao diện tiến trình dễ dùng hơn top -u USER: lọc user
-p PID: theo dõi PID
-d DELAY: delay refresh
-s COLUMN: sort theo cột
htop -u www-data
pgrep Tìm PID theo tên tiến trình -f: khớp cả command line
-u USER: lọc user
-l: in PID kèm tên
-n: tiến trình mới nhất
-o: tiến trình cũ nhất
pgrep -af nginx
pidof Lấy PID của chương trình -s: chỉ in một PID
-x: tìm cả script
-o PID: bỏ qua PID chỉ định
pidof -s sshd
kill Gửi signal tới tiến trình -9: SIGKILL, ép dừng
-15: SIGTERM, yêu cầu dừng an toàn
-l: liệt kê signal
-s SIGNAL: chọn signal gửi
kill -15 1234
kill -9 Ép dừng tiến trình -9: SIGKILL, ép dừng
-15: SIGTERM, yêu cầu dừng an toàn
-l: liệt kê signal
-s SIGNAL: chọn signal gửi
kill -9 1234
pkill Dừng tiến trình theo tên -f: khớp cả command line
-u USER: lọc user
-9: gửi SIGKILL
-l: in tên tiến trình bị khớp
-n/-o: mới nhất/cũ nhất
pkill -f "python3 app.py"
killall Dừng tất cả tiến trình theo tên -9: gửi SIGKILL
-i: hỏi trước khi kill
-v: in kết quả
-u USER: lọc user
-r: dùng regex
killall -i firefox
nice Chạy lệnh với độ ưu tiên CPU -n N: đặt nice value, số lớn hơn là ưu tiên thấp hơn nice -n 10 command
renice Đổi độ ưu tiên tiến trình đang chạy -n N: nice value mới
-p PID: đổi theo PID
-u USER: đổi theo user
-g GROUP: đổi theo group
renice -n 5 -p 1234
jobs Xem job trong shell hiện tại -l: hiện PID
-p: chỉ hiện PID process group
-r: chỉ job đang chạy
-s: chỉ job đã dừng
jobs -l
bg Đưa job chạy nền %JOB: chọn job để đưa chạy nền bg %1
fg Đưa job về foreground %JOB: chọn job để đưa về foreground fg %1
nohup Chạy lệnh không bị dừng khi thoát shell nohup python3 app.py > app.log 2>&1 &
disown Tách job khỏi shell -h: không xóa job nhưng bỏ SIGHUP
-a: áp dụng cho mọi job
-r: chỉ job đang chạy
disown -h %1
sleep Tạm dừng một khoảng thời gian s/m/h/d: hậu tố giây/phút/giờ/ngày, ví dụ 10m sleep 5m
watch Lặp lại lệnh theo chu kỳ -n SEC: chu kỳ lặp
-d: highlight thay đổi
-t: ẩn header
-g: thoát khi output thay đổi
watch -n 2 free -h
timeout Giới hạn thời gian chạy lệnh -s SIGNAL: signal khi hết giờ
-k DURATION: gửi KILL sau thời gian chờ
--foreground: không tạo process group riêng
-v: in thông báo
timeout -s TERM -k 5s 30s ping 8.8.8.8
time Đo thời gian chạy lệnh -p: output POSIX ngắn
-o FILE: ghi kết quả ra file
-a: append vào file output
-f FORMAT: định dạng output của GNU time
/usr/bin/time -f "%E %MKB" ls -R /usr

Lệnh kiểm tra ổ đĩa, RAM và hệ thống file

Nhóm lệnh này thường dùng khi server hết dung lượng, RAM cao, mount ổ đĩa, kiểm tra phân vùng hoặc xử lý lỗi filesystem.

Lệnh Công dụng Options Ví dụ
df Xem dung lượng filesystem -h: dung lượng dễ đọc
-T: hiện loại filesystem
-i: hiện inode
-a: hiện mọi filesystem
--total: thêm dòng tổng
df -hT --total
du Xem dung lượng file/thư mục -s: chỉ tổng kết
-h: dung lượng dễ đọc
-a: hiện cả file
-c: thêm tổng cộng
--max-depth=N: giới hạn độ sâu
`du -ah --max-depth=1 /var/log \
free Xem RAM và swap -h: dễ đọc
-m: MB
-g: GB
-s SEC: cập nhật lặp lại
-t: thêm dòng tổng
free -h -t
lsblk Xem block device, ổ đĩa, phân vùng -f: hiện filesystem/UUID
-a: hiện mọi device
-p: hiện path đầy đủ
-o COLUMNS: chọn cột
-J: output JSON
lsblk -f
blkid Xem UUID và loại filesystem -o FORMAT: định dạng output
-s TAG: chỉ hiện tag như UUID/TYPE
-t TOKEN: lọc theo token
-p: probe thiết bị trực tiếp
sudo blkid -s UUID -o value /dev/sdb1
findmnt Xem các mount point -t TYPE: lọc filesystem type
-S SOURCE: lọc source
-T TARGET: tìm mount chứa target
-r: raw output
-J: output JSON
findmnt -t ext4
mount Mount thiết bị/thư mục -t TYPE: loại filesystem
-o OPTS: mount options
-a: mount theo /etc/fstab
-r: mount read-only
-w: mount read-write
sudo mount -t ext4 -o ro /dev/sdb1 /mnt
umount Unmount thiết bị/thư mục -a: unmount tất cả theo fstab
-f: force unmount
-l: lazy unmount
-v: in chi tiết
sudo umount -v /mnt
fdisk Quản lý bảng phân vùng -l: liệt kê phân vùng
-u: hiện sector thay vì cylinder
-s PARTITION: in kích thước phân vùng
-b SIZE: đặt sector size
sudo fdisk -l /dev/sda
parted Quản lý phân vùng nâng cao -l: liệt kê thiết bị/phân vùng
-s: script mode, ít hỏi
-a optimal: căn chỉnh phân vùng tối ưu
sudo parted -l
mkfs Tạo filesystem mới -t TYPE: chọn loại filesystem
-V: verbose/hiện lệnh backend
-L LABEL: đặt label nếu backend hỗ trợ
sudo mkfs -t ext4 /dev/sdb1
fsck Kiểm tra/sửa filesystem -A: kiểm tra tất cả trong fstab
-N: chỉ hiển thị, không chạy thật
-y: tự trả lời yes
-n: chỉ đọc, không sửa
-f: ép kiểm tra
-t TYPE: lọc loại filesystem
sudo fsck -N /dev/sdb1
sync Ghi dữ liệu cache xuống đĩa -f FILE: sync filesystem chứa file
-d FILE: chỉ sync dữ liệu file
sync -f /var/log/app.log
swapon Bật swap -a: bật tất cả swap trong fstab
-s: hiện summary
--show: hiện bảng swap
-p PRIORITY: đặt priority
sudo swapon -s
swapoff Tắt swap -a: tắt tất cả swap
-v: in chi tiết
sudo swapoff -v /swapfile
lsof Xem file đang được tiến trình mở -i: lọc socket mạng
-p PID: lọc PID
-u USER: lọc user
+D DIR: tìm file mở trong thư mục
-nP: không resolve DNS/port name
sudo lsof -i :80
fuser Xem tiến trình đang dùng file/port -v: output chi tiết
-k: kill tiến trình đang dùng
-m: xem cả filesystem/mount
-n tcp: namespace TCP port
-u: hiện user
sudo fuser -v -n tcp 80

Mẹo tìm thư mục chiếm dung lượng lớn:

Copy
du -sh * | sort -h
Lệnh nén và giải nén file

Trên Linux, tar, gzip, xz, zip là các công cụ rất hay gặp khi backup, deploy hoặc tải source code.

Lệnh Công dụng Options Ví dụ
tar Đóng gói file/thư mục -c: tạo archive
-x: giải nén
-f FILE: chọn file archive
-z: gzip
-J: xz
-v: verbose
-t: liệt kê nội dung
-C DIR: đổi thư mục đích/nguồn
tar -cvf backup.tar folder/
tar -x Giải nén file tar -c: tạo archive
-x: giải nén
-f FILE: chọn file archive
-z: gzip
-J: xz
-v: verbose
-t: liệt kê nội dung
-C DIR: đổi thư mục đích/nguồn
tar -xvf backup.tar -C /tmp/restore
tar -czf Tạo file .tar.gz -c: tạo archive
-x: giải nén
-f FILE: chọn file archive
-z: gzip
-J: xz
-v: verbose
-t: liệt kê nội dung
-C DIR: đổi thư mục đích/nguồn
tar -czvf backup.tar.gz folder/
tar -xzf Giải nén .tar.gz -c: tạo archive
-x: giải nén
-f FILE: chọn file archive
-z: gzip
-J: xz
-v: verbose
-t: liệt kê nội dung
-C DIR: đổi thư mục đích/nguồn
tar -xzvf backup.tar.gz -C /tmp/restore
tar -cJf Tạo file .tar.xz -c: tạo archive
-x: giải nén
-f FILE: chọn file archive
-z: gzip
-J: xz
-v: verbose
-t: liệt kê nội dung
-C DIR: đổi thư mục đích/nguồn
tar -cJvf backup.tar.xz folder/
gzip Nén file bằng gzip -d: giải nén
-k: giữ file gốc
-r: xử lý đệ quy
-1..-9: mức nén nhanh/tối đa
-c: ghi ra stdout
gzip -k -9 file.txt
gunzip Giải nén gzip -k: giữ file nén gốc
-c: ghi ra stdout
-f: ghi đè/ép giải nén
gunzip -k file.txt.gz
zcat Xem file gzip không cần giải nén -f: ép đọc cả file không có đuôi gzip
-q: giảm cảnh báo
`zcat app.log.gz \
bzip2 Nén bằng bzip2 -d: giải nén
-k: giữ file gốc
-1..-9: mức nén
-c: ghi ra stdout
bzip2 -k -9 file.txt
bunzip2 Giải nén bzip2 -k: giữ file nén gốc
-c: ghi ra stdout
-f: ghi đè/ép giải nén
bunzip2 -k file.txt.bz2
bzcat Xem file bzip2 -f: ép đọc
-q: giảm cảnh báo
`bzcat file.txt.bz2 \
xz Nén bằng xz -d: giải nén
-k: giữ file gốc
-T0: dùng nhiều thread tự động
-0..-9: mức nén
-c: ghi ra stdout
xz -k -9 file.txt
unxz Giải nén xz -k: giữ file nén gốc
-c: ghi ra stdout
-f: ghi đè/ép giải nén
unxz -k file.txt.xz
xzcat Xem file xz -f: ép đọc file `xzcat file.txt.xz \
zip Nén file/thư mục dạng zip -r: nén thư mục đệ quy
-e: mã hóa bằng mật khẩu
-q: quiet
-9: nén tối đa
-x PATTERN: loại trừ file
zip -r -9 site.zip site/ -x "node_modules/*"
unzip Giải nén zip -l: liệt kê nội dung
-d DIR: giải nén vào thư mục
-o: ghi đè không hỏi
-n: không ghi đè
-q: quiet
unzip -l site.zip
7z Nén/giải nén nhiều định dạng a: thêm/tạo archive
x: giải nén giữ cấu trúc thư mục
l: liệt kê nội dung
-pPASS: đặt mật khẩu
-mx=9: mức nén tối đa
-oDIR: thư mục output
7z a -mx=9 archive.7z folder/

Lệnh mạng trong Linux

Nhóm lệnh mạng giúp bạn kiểm tra IP, route, DNS, port, kết nối server, tải file và copy dữ liệu qua mạng.

Kiểm tra IP, route và kết nối

Lệnh Công dụng Options Ví dụ
ip addr Xem địa chỉ IP -br: output ngắn gọn
-c: tô màu
-4/-6: chỉ IPv4/IPv6
addr: quản lý IP address
link: quản lý interface
route: quản lý route
neigh: ARP/neighbor
ip -br addr show
ip a Viết tắt của ip addr -br: output ngắn gọn
-c: tô màu
-4/-6: chỉ IPv4/IPv6
addr: quản lý IP address
link: quản lý interface
route: quản lý route
neigh: ARP/neighbor
ip -c -br a
ip link Xem network interface -br: output ngắn gọn
-c: tô màu
-4/-6: chỉ IPv4/IPv6
addr: quản lý IP address
link: quản lý interface
route: quản lý route
neigh: ARP/neighbor
ip -br link show
ip route Xem bảng định tuyến -br: output ngắn gọn
-c: tô màu
-4/-6: chỉ IPv4/IPv6
addr: quản lý IP address
link: quản lý interface
route: quản lý route
neigh: ARP/neighbor
ip route get 8.8.8.8
ip neigh Xem ARP/neighbor table -br: output ngắn gọn
-c: tô màu
-4/-6: chỉ IPv4/IPv6
addr: quản lý IP address
link: quản lý interface
route: quản lý route
neigh: ARP/neighbor
ip neigh show dev eth0
ping Kiểm tra host có phản hồi không -c N: gửi N gói rồi dừng
-i SEC: khoảng cách giữa gói
-W SEC: timeout phản hồi
-4/-6: dùng IPv4/IPv6
-s SIZE: kích thước payload
ping -c 4 -i 0.5 8.8.8.8
tracepath Truy vết đường đi gói tin -n: không resolve hostname
-m HOPS: số hop tối đa
-p PORT: port đích
tracepath -n -m 20 google.com
traceroute Truy vết route, thường cần cài thêm -n: không resolve hostname
-m HOPS: số hop tối đa
-I: dùng ICMP
-T: dùng TCP
-p PORT: port đích
traceroute -n -m 20 google.com
ss Xem socket, port, kết nối -t: TCP
-u: UDP
-l: socket đang listen
-p: hiện process
-n: không resolve tên
-e: thông tin mở rộng
-a: hiện tất cả socket
ss -tulpen
netstat Lệnh cũ để xem kết nối mạng -t: TCP
-u: UDP
-l: socket đang listen
-p: hiện process
-n: không resolve tên
-r: bảng route
netstat -tulpen
nmcli Quản lý NetworkManager bằng CLI -f FIELDS: chọn cột output
-t: terse output
-p: pretty output
--ask: hỏi thông tin còn thiếu
nmcli -f DEVICE,TYPE,STATE device status
hostnamectl Xem/đổi hostname status: xem hostname
set-hostname NAME: đổi hostname
--static: hostname tĩnh
--transient: hostname tạm
--pretty: tên dễ đọc
hostnamectl status

Gợi ý: Trên Linux hiện đại, nên ưu tiên ip thay cho ifconfigss thay cho netstat.

DNS và kiểm tra domain

Lệnh Công dụng Options Ví dụ
dig Truy vấn DNS chi tiết +short: output ngắn
+trace: trace DNS delegation
@SERVER: hỏi DNS server cụ thể
-x IP: reverse lookup
+noall +answer: chỉ in answer section
dig +short A example.com
nslookup Truy vấn DNS đơn giản -type=TYPE: chọn record DNS
server DNS_SERVER: đổi DNS server trong phiên
-debug: output debug
nslookup -type=MX example.com
host Xem thông tin DNS ngắn gọn -t TYPE: chọn record DNS
-a: hiển thị tất cả thông tin
-v: verbose
-4/-6: dùng IPv4/IPv6
host -t MX example.com
whois Xem thông tin đăng ký domain/IP -h HOST: chọn whois server
-p PORT: chọn port
-H: ẩn legal disclaimer nếu server hỗ trợ
whois -h whois.iana.org example.com

Tải file, gọi API và kết nối remote

Lệnh Công dụng Options Ví dụ
curl Gọi URL/API, tải dữ liệu -I: chỉ lấy HTTP header
-L: follow redirect
-o FILE: lưu với tên file chỉ định
-O: lưu theo tên file remote
-X METHOD: chọn HTTP method
-H HEADER: thêm header
-d DATA: gửi body form/data
curl -L -o index.html https://example.com
curl -I Xem HTTP header -I: chỉ lấy HTTP header
-L: follow redirect
-o FILE: lưu với tên file chỉ định
-O: lưu theo tên file remote
-X METHOD: chọn HTTP method
-H HEADER: thêm header
-d DATA: gửi body form/data
curl -I -L https://example.com
wget Tải file từ Internet -O FILE: lưu với tên file chỉ định
-c: tiếp tục tải dở
-r: tải đệ quy
-q: quiet
--limit-rate=RATE: giới hạn tốc độ
--no-check-certificate: bỏ kiểm tra TLS certificate
wget -c -O file.zip https://example.com/file.zip
ssh Đăng nhập server từ xa -p PORT: chọn port SSH
-i KEY: chọn private key
-L: local port forwarding
-R: remote port forwarding
-N: không chạy lệnh remote
-v: verbose debug
ssh -p 2222 -i ~/.ssh/id_ed25519 user@server_ip
scp Copy file qua SSH -P PORT: chọn port SSH
-i KEY: chọn private key
-r: copy thư mục đệ quy
-C: nén khi truyền
-v: verbose debug
scp -P 2222 -i ~/.ssh/id_ed25519 file.txt user@server:/tmp/
sftp Truyền file qua SFTP -P PORT: chọn port SSH
-i KEY: chọn private key
-b FILE: batch mode
-r: truyền thư mục đệ quy
sftp -P 2222 -i ~/.ssh/id_ed25519 user@server
rsync Đồng bộ file/thư mục -a: archive mode
-v: verbose
-z: nén khi truyền
--delete: xóa file đích không còn ở nguồn
--progress: hiện tiến trình
-e ssh: chọn remote shell
rsync -avz --delete ./site/ user@server:/backup/site/
nc Netcat, kiểm tra port/gửi dữ liệu TCP/UDP -z: scan/check port không gửi data
-v: verbose
-l: listen mode
-u: UDP
-p PORT: port local
-w SEC: timeout
nc -vz -w 3 example.com 443
telnet Kiểm tra kết nối TCP kiểu cũ -l USER: login user
-8: dùng 8-bit data
-E: tắt escape character
telnet -l user example.com 80
nmap Quét port và dịch vụ mạng -sS: SYN scan
-sV: dò phiên bản dịch vụ
-O: dò hệ điều hành
-p PORTS: chọn port
-A: bật OS/version/script/traceroute
-Pn: coi host là online, bỏ ping discovery
nmap -sV -p 80,443 example.com

Lưu ý: Chỉ dùng nmap trên hệ thống bạn sở hữu hoặc được phép kiểm tra.

Lệnh service, systemd và log

Nhiều bản phân phối Linux hiện đại dùng systemd để quản lý service. Với server, bạn sẽ thường dùng systemctljournalctl.

Lệnh Công dụng Options Ví dụ
systemctl status Xem trạng thái service status: xem trạng thái
start/stop: chạy/dừng service
restart/reload: khởi động lại/tải lại cấu hình
enable/disable: bật/tắt tự chạy khi boot
list-units: liệt kê unit
--failed: chỉ unit lỗi
--user: thao tác service user
--now: enable/disable kèm start/stop ngay
systemctl --user status pipewire
systemctl start Khởi động service status: xem trạng thái
start/stop: chạy/dừng service
restart/reload: khởi động lại/tải lại cấu hình
enable/disable: bật/tắt tự chạy khi boot
list-units: liệt kê unit
--failed: chỉ unit lỗi
--user: thao tác service user
--now: enable/disable kèm start/stop ngay
sudo systemctl start nginx
systemctl stop Dừng service status: xem trạng thái
start/stop: chạy/dừng service
restart/reload: khởi động lại/tải lại cấu hình
enable/disable: bật/tắt tự chạy khi boot
list-units: liệt kê unit
--failed: chỉ unit lỗi
--user: thao tác service user
--now: enable/disable kèm start/stop ngay
sudo systemctl stop nginx
systemctl restart Khởi động lại service status: xem trạng thái
start/stop: chạy/dừng service
restart/reload: khởi động lại/tải lại cấu hình
enable/disable: bật/tắt tự chạy khi boot
list-units: liệt kê unit
--failed: chỉ unit lỗi
--user: thao tác service user
--now: enable/disable kèm start/stop ngay
sudo systemctl restart nginx
systemctl reload Reload cấu hình nếu service hỗ trợ status: xem trạng thái
start/stop: chạy/dừng service
restart/reload: khởi động lại/tải lại cấu hình
enable/disable: bật/tắt tự chạy khi boot
list-units: liệt kê unit
--failed: chỉ unit lỗi
--user: thao tác service user
--now: enable/disable kèm start/stop ngay
sudo systemctl reload nginx
systemctl enable Cho service tự chạy khi boot status: xem trạng thái
start/stop: chạy/dừng service
restart/reload: khởi động lại/tải lại cấu hình
enable/disable: bật/tắt tự chạy khi boot
list-units: liệt kê unit
--failed: chỉ unit lỗi
--user: thao tác service user
--now: enable/disable kèm start/stop ngay
sudo systemctl enable --now nginx
systemctl disable Tắt tự chạy khi boot status: xem trạng thái
start/stop: chạy/dừng service
restart/reload: khởi động lại/tải lại cấu hình
enable/disable: bật/tắt tự chạy khi boot
list-units: liệt kê unit
--failed: chỉ unit lỗi
--user: thao tác service user
--now: enable/disable kèm start/stop ngay
sudo systemctl disable --now nginx
systemctl list-units Liệt kê unit đang hoạt động status: xem trạng thái
start/stop: chạy/dừng service
restart/reload: khởi động lại/tải lại cấu hình
enable/disable: bật/tắt tự chạy khi boot
list-units: liệt kê unit
--failed: chỉ unit lỗi
--user: thao tác service user
--now: enable/disable kèm start/stop ngay
systemctl list-units --type=service --state=running
systemctl --failed Xem unit bị lỗi status: xem trạng thái
start/stop: chạy/dừng service
restart/reload: khởi động lại/tải lại cấu hình
enable/disable: bật/tắt tự chạy khi boot
list-units: liệt kê unit
--failed: chỉ unit lỗi
--user: thao tác service user
--now: enable/disable kèm start/stop ngay
systemctl --failed --type=service
service Quản lý service kiểu cũ/SysV start: khởi động
stop: dừng
restart: khởi động lại
reload: tải lại cấu hình
status: xem trạng thái
sudo service nginx status
journalctl Xem log systemd journal -u UNIT: lọc theo service/unit
-f: theo dõi realtime
-b: log từ lần boot hiện tại
--since TIME: từ thời điểm
--until TIME: đến thời điểm
-n N: N dòng cuối
-p LEVEL: lọc mức log
journalctl -u nginx --since "1 hour ago"
journalctl -u Xem log của service -u UNIT: lọc theo service/unit
-f: theo dõi realtime
-b: log từ lần boot hiện tại
--since TIME: từ thời điểm
--until TIME: đến thời điểm
-n N: N dòng cuối
-p LEVEL: lọc mức log
journalctl -u nginx --since today
journalctl -f Theo dõi log realtime -u UNIT: lọc theo service/unit
-f: theo dõi realtime
-b: log từ lần boot hiện tại
--since TIME: từ thời điểm
--until TIME: đến thời điểm
-n N: N dòng cuối
-p LEVEL: lọc mức log
journalctl -u nginx -f
journalctl -b Xem log từ lần boot hiện tại -u UNIT: lọc theo service/unit
-f: theo dõi realtime
-b: log từ lần boot hiện tại
--since TIME: từ thời điểm
--until TIME: đến thời điểm
-n N: N dòng cuối
-p LEVEL: lọc mức log
journalctl -b -1
dmesg Xem log kernel -T: timestamp dễ đọc
-H: output human-readable/pager
-w: theo dõi realtime
-k: chỉ kernel messages
-l LEVEL: lọc mức log
`dmesg -T \
systemd-analyze Phân tích thời gian boot time: tổng thời gian boot
blame: xếp hạng unit chậm
critical-chain: chuỗi phụ thuộc quan trọng
plot: xuất biểu đồ SVG
systemd-analyze critical-chain
crontab Lên lịch chạy lệnh định kỳ -e: sửa crontab
-l: liệt kê crontab
-r: xóa crontab
-u USER: thao tác crontab của user khác
crontab -l
at Lên lịch chạy một lần -f FILE: đọc job từ file
-l: liệt kê job
-r JOB: xóa job
-q QUEUE: chọn queue
`echo date \
batch Chạy job khi tải hệ thống thấp -f FILE: đọc job từ file
-q QUEUE: chọn queue
`echo backup.sh \
shutdown Tắt máy/hẹn giờ tắt -h: halt/poweroff
-r: reboot
-c: hủy shutdown đã đặt
now: chạy ngay
+MIN: chạy sau số phút
sudo shutdown -r +10 "Reboot sau 10 phút"
reboot Khởi động lại -f: reboot cưỡng bức
--no-wall: không gửi thông báo wall
sudo reboot --no-wall
poweroff Tắt máy -f: tắt cưỡng bức
--no-wall: không gửi thông báo wall
sudo poweroff --no-wall

Ví dụ xem log Nginx bằng systemd:

Copy
journalctl -u nginx --since "1 hour ago"
Lệnh quản lý user và group

Nhóm lệnh này dùng khi tạo tài khoản, phân quyền user, thêm user vào group hoặc kiểm tra ai đang đăng nhập.

Lệnh Công dụng Options Ví dụ
who Xem user đang đăng nhập -a: hiện hầu hết thông tin
-b: thời điểm boot gần nhất
-u: hiện idle time/PID
-q: chỉ tên user và số lượng
who -a
w Xem user đang đăng nhập và lệnh họ đang chạy -h: bỏ header
-s: output ngắn
-u: bỏ qua username khi tính process
-i: hiện IP thay hostname
w -h -s
users Liệt kê user đang đăng nhập users
last Xem lịch sử đăng nhập -n N: giới hạn số dòng
-F: hiện thời gian đầy đủ
-x: hiện shutdown/reboot/runlevel
-a: đưa hostname về cuối dòng
last -n 20 -F
lastlog Xem lần đăng nhập gần nhất của user -u USER: chỉ user cụ thể
-t DAYS: login trong N ngày gần đây
-b DAYS: login trước N ngày
lastlog -t 30
useradd Tạo user mới -m: tạo home directory
-s SHELL: chọn login shell
-G GROUPS: group phụ
-u UID: đặt UID
-d HOME: đặt home directory
sudo useradd -m -s /bin/bash john
adduser Tạo user kiểu thân thiện hơn trên Debian/Ubuntu --disabled-password: tạo user không mật khẩu đăng nhập
--gecos TEXT: đặt thông tin GECOS
--ingroup GROUP: group chính
--home DIR: home directory
--shell SHELL: login shell
sudo adduser --disabled-password john
usermod Chỉnh thông tin user -aG GROUPS: thêm vào group phụ, thường dùng kèm nhau
-l NAME: đổi username
-d HOME -m: đổi và di chuyển home
-s SHELL: đổi shell
-L/-U: khóa/mở khóa user
sudo usermod -aG docker,sudo john
userdel Xóa user -r: xóa cả home/mail spool
-f: ép xóa
sudo userdel -r john
groupadd Tạo group -g GID: đặt GID
-r: tạo system group
-f: không lỗi nếu group đã tồn tại
sudo groupadd -g 2000 developers
groupmod Sửa group -n NAME: đổi tên group
-g GID: đổi GID
sudo groupmod -n dev developers
groupdel Xóa group sudo groupdel dev
chage Quản lý hạn mật khẩu -l: xem thông tin hạn mật khẩu
-M DAYS: số ngày tối đa trước khi đổi mật khẩu
-m DAYS: số ngày tối thiểu
-E DATE: ngày hết hạn account
-W DAYS: số ngày cảnh báo
sudo chage -l john
passwd Đặt/đổi mật khẩu user -l: khóa mật khẩu user
-u: mở khóa
-d: xóa mật khẩu
-S: xem trạng thái mật khẩu
-e: bắt đổi mật khẩu lần đăng nhập tới
sudo passwd -e john

Ví dụ thêm user vào group sudo:

Copy
sudo usermod -aG sudo john
Lệnh cài đặt, cập nhật và gỡ phần mềm

Mỗi bản phân phối Linux dùng package manager khác nhau. Ubuntu/Debian dùng apt, Fedora/RHEL dùng dnf hoặc yum, Arch dùng pacman, Alpine dùng apk.

Ubuntu, Debian, Linux Mint: apt, apt-get, dpkg

Lệnh Công dụng Options Ví dụ
apt update Cập nhật danh sách package update: cập nhật danh sách package
upgrade: nâng cấp package
install: cài package
remove/purge: gỡ package/bao gồm config
autoremove: gỡ dependency thừa
search/show: tìm/xem package
-y: tự xác nhận
--no-install-recommends: không cài gói khuyến nghị
--reinstall: cài lại package
sudo apt update
apt upgrade Nâng cấp package đã cài update: cập nhật danh sách package
upgrade: nâng cấp package
install: cài package
remove/purge: gỡ package/bao gồm config
autoremove: gỡ dependency thừa
search/show: tìm/xem package
-y: tự xác nhận
--no-install-recommends: không cài gói khuyến nghị
--reinstall: cài lại package
sudo apt upgrade -y
apt full-upgrade Nâng cấp có thể thay đổi dependency mạnh hơn update: cập nhật danh sách package
upgrade: nâng cấp package
install: cài package
remove/purge: gỡ package/bao gồm config
autoremove: gỡ dependency thừa
search/show: tìm/xem package
-y: tự xác nhận
--no-install-recommends: không cài gói khuyến nghị
--reinstall: cài lại package
sudo apt full-upgrade -y
apt install Cài package update: cập nhật danh sách package
upgrade: nâng cấp package
install: cài package
remove/purge: gỡ package/bao gồm config
autoremove: gỡ dependency thừa
search/show: tìm/xem package
-y: tự xác nhận
--no-install-recommends: không cài gói khuyến nghị
--reinstall: cài lại package
sudo apt install -y --no-install-recommends nginx
apt remove Gỡ package, giữ file cấu hình update: cập nhật danh sách package
upgrade: nâng cấp package
install: cài package
remove/purge: gỡ package/bao gồm config
autoremove: gỡ dependency thừa
search/show: tìm/xem package
-y: tự xác nhận
--no-install-recommends: không cài gói khuyến nghị
--reinstall: cài lại package
sudo apt remove -y nginx
apt purge Gỡ package và file cấu hình hệ thống update: cập nhật danh sách package
upgrade: nâng cấp package
install: cài package
remove/purge: gỡ package/bao gồm config
autoremove: gỡ dependency thừa
search/show: tìm/xem package
-y: tự xác nhận
--no-install-recommends: không cài gói khuyến nghị
--reinstall: cài lại package
sudo apt purge -y nginx
apt autoremove Gỡ package không còn cần thiết update: cập nhật danh sách package
upgrade: nâng cấp package
install: cài package
remove/purge: gỡ package/bao gồm config
autoremove: gỡ dependency thừa
search/show: tìm/xem package
-y: tự xác nhận
--no-install-recommends: không cài gói khuyến nghị
--reinstall: cài lại package
sudo apt autoremove --purge
apt search Tìm package update: cập nhật danh sách package
upgrade: nâng cấp package
install: cài package
remove/purge: gỡ package/bao gồm config
autoremove: gỡ dependency thừa
search/show: tìm/xem package
-y: tự xác nhận
--no-install-recommends: không cài gói khuyến nghị
--reinstall: cài lại package
apt search '^nginx$'
apt show Xem thông tin package update: cập nhật danh sách package
upgrade: nâng cấp package
install: cài package
remove/purge: gỡ package/bao gồm config
autoremove: gỡ dependency thừa
search/show: tìm/xem package
-y: tự xác nhận
--no-install-recommends: không cài gói khuyến nghị
--reinstall: cài lại package
apt show nginx
apt list --installed Liệt kê package đã cài update: cập nhật danh sách package
upgrade: nâng cấp package
install: cài package
remove/purge: gỡ package/bao gồm config
autoremove: gỡ dependency thừa
search/show: tìm/xem package
-y: tự xác nhận
--no-install-recommends: không cài gói khuyến nghị
--reinstall: cài lại package
`apt list --installed \
apt-get Công cụ APT truyền thống update/upgrade: cập nhật/nâng cấp
install/remove/purge: cài/gỡ
autoremove: gỡ dependency thừa
-y: tự xác nhận
-s: chạy mô phỏng
--download-only: chỉ tải về
--purge: gỡ kèm config
sudo apt-get install -y --download-only nginx
dpkg -i Cài file .deb -i: cài file .deb
-l: liệt kê package
-r: gỡ package, giữ config
-P: purge cả config
-L PACKAGE: liệt kê file của package
-S FILE: tìm package sở hữu file
sudo dpkg -i package.deb
dpkg -l Liệt kê package đã cài -i: cài file .deb
-l: liệt kê package
-r: gỡ package, giữ config
-P: purge cả config
-L PACKAGE: liệt kê file của package
-S FILE: tìm package sở hữu file
`dpkg -l \
dpkg -r Gỡ package bằng dpkg -i: cài file .deb
-l: liệt kê package
-r: gỡ package, giữ config
-P: purge cả config
-L PACKAGE: liệt kê file của package
-S FILE: tìm package sở hữu file
sudo dpkg -r package_name

Lệnh bảo mật Linux nên biết

Các lệnh bảo mật giúp bạn quản lý quyền admin, firewall, SSH key, chứng chỉ, checksum và cơ chế bảo vệ hệ thống.

Lệnh Công dụng Options Ví dụ
sudo Chạy lệnh với quyền quản trị -u USER: chạy dưới user khác
-i: mở login shell root/user
-s: mở shell theo biến SHELL
-E: giữ biến môi trường
-k: quên credential sudo
-v: gia hạn credential
sudo -E apt update
visudo Sửa file sudoers an toàn -c: kiểm tra cú pháp sudoers
-f FILE: sửa file sudoers khác
-s: strict mode
-q: quiet
sudo visudo -c
ufw Firewall đơn giản trên Ubuntu status: xem trạng thái
allow: cho phép port/service
deny: chặn port/service
delete: xóa rule
enable/disable: bật/tắt firewall
verbose: chi tiết hơn
numbered: hiện số thứ tự rule
sudo ufw status verbose
ufw allow Mở port status: xem trạng thái
allow: cho phép port/service
deny: chặn port/service
delete: xóa rule
enable/disable: bật/tắt firewall
verbose: chi tiết hơn
numbered: hiện số thứ tự rule
sudo ufw allow 22/tcp
ufw enable Bật firewall status: xem trạng thái
allow: cho phép port/service
deny: chặn port/service
delete: xóa rule
enable/disable: bật/tắt firewall
verbose: chi tiết hơn
numbered: hiện số thứ tự rule
sudo ufw enable
firewall-cmd Quản lý firewalld trên Fedora/RHEL --list-all: xem cấu hình zone
--add-service=NAME: mở service
--add-port=PORT/PROTO: mở port
--permanent: ghi vĩnh viễn
--reload: tải lại rule
--zone=ZONE: chọn zone
sudo firewall-cmd --permanent --add-service=https && sudo firewall-cmd --reload
iptables Quản lý rule firewall kiểu cũ -L: liệt kê rule
-A CHAIN: thêm rule
-D CHAIN: xóa rule
-p PROTO: chọn protocol
--dport PORT: port đích
-j TARGET: hành động như ACCEPT/DROP
-n -v: output số + chi tiết
sudo iptables -L -n -v
nft Quản lý nftables list ruleset: xem toàn bộ rule
add rule: thêm rule
delete rule: xóa rule
-f FILE: nạp rule từ file
-a: hiện handle để xóa/sửa rule
sudo nft -a list ruleset
ssh-keygen Tạo SSH key -t TYPE: loại key như ed25519/rsa
-b BITS: số bit với RSA
-f FILE: file lưu key
-C COMMENT: comment/email
-N PASSPHRASE: passphrase mới
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519
ssh-copy-id Copy SSH public key lên server -i KEY: chọn public key
-p PORT: port SSH
-f: ép copy không kiểm tra key sẵn có
-n: chạy thử
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@server
gpg Mã hóa, ký và kiểm tra chữ ký --verify: kiểm tra chữ ký
--encrypt: mã hóa
--decrypt: giải mã
--sign: ký
--armor: output ASCII armor
--recipient USER: người nhận
gpg --armor --encrypt --recipient [email protected] file.txt
openssl Làm việc với TLS, certificate, hash version: xem phiên bản
x509: xử lý certificate
req: tạo CSR/certificate request
s_client: kiểm tra TLS server
dgst: tạo/kiểm tra digest
-in/-out: file vào/ra
-text: in dạng dễ đọc
openssl s_client -connect example.com:443 -servername example.com
sha256sum Tạo/kiểm tra SHA-256 checksum -c: kiểm tra checksum từ file
-b: chế độ binary
-t: chế độ text
--quiet: chỉ báo lỗi khi check
sha256sum -c file.iso.sha256
md5sum Tạo/kiểm tra MD5 checksum -c: kiểm tra checksum từ file
-b: chế độ binary
-t: chế độ text
--quiet: chỉ báo lỗi khi check
md5sum -c file.iso.md5
sestatus Xem trạng thái SELinux -v: verbose
-b: hiện trạng thái boolean SELinux
sestatus -v
getenforce Xem chế độ SELinux getenforce
aa-status Xem trạng thái AppArmor --enabled: kiểm tra AppArmor có bật không
--profiled: số profile đã nạp
--enforced: profile enforce
--complaining: profile complain
sudo aa-status --enforced
fail2ban-client Quản lý Fail2ban status: xem trạng thái toàn cục/jail
start/stop/reload: điều khiển service
set JAIL banip IP: ban IP
set JAIL unbanip IP: gỡ ban IP
-v: verbose
sudo fail2ban-client status sshd

Mẹo bảo mật cơ bản:

  • Không bật đăng nhập SSH bằng root nếu không cần.
  • Nên dùng SSH key thay vì mật khẩu.
  • Luôn kiểm tra firewall trước khi public server.
  • Không cấp quyền 777 bừa bãi.
  • Không chạy script lạ bằng curl ... | sh nếu chưa kiểm tra nội dung.

Toán tử, pipe và chuyển hướng trong Linux

Ngoài lệnh riêng lẻ, bạn cần biết cách nối lệnh để làm việc hiệu quả hơn.

Ký hiệu Công dụng Ví dụ
` ` Pipe: chuyển output lệnh trước sang input lệnh sau
> Ghi output ra file, ghi đè file cũ echo hello > file.txt
>> Ghi thêm output vào cuối file echo hello >> file.txt
< Lấy input từ file sort < names.txt
2> Chuyển stderr ra file command 2> error.log
&> Chuyển stdout và stderr ra file command &> output.log
&& Chạy lệnh sau nếu lệnh trước thành công mkdir app && cd app
` `
; Chạy nhiều lệnh liên tiếp date; uptime; whoami
& Chạy lệnh nền sleep 60 &
* Wildcard khớp nhiều ký tự rm *.tmp
? Wildcard khớp một ký tự ls file?.txt
{} Brace expansion mkdir -p app/{logs,tmp,cache}
$() Command substitution echo "Today is $(date)"
~ Thư mục home cd ~
. Thư mục hiện tại find . -name "*.txt"
.. Thư mục cha cd ..

Ví dụ lọc 10 tiến trình dùng nhiều RAM nhất:

Copy
ps aux --sort=-%mem | head
Ví dụ tìm log lỗi và lưu ra file:

Copy
grep -i "error" app.log > errors.txt
Ví dụ thực tế khi dùng lệnh Linux

Tạo project mới và file README**

Copy
    mkdir -p ~/projects/demo
    cd ~/projects/demo
    touch README.md
    echo "# Demo Project" > README.md
    cat README.md
Tìm file log lớn hơn 100MB

Copy
find /var/log -type f -size +100M
Xem dung lượng từng thư mục trong thư mục hiện tại

Copy
du -sh * | sort -h
Nén thư mục website thành file tar.gz

Copy
tar -czf website-backup.tar.gz /var/www/html
Giải nén file tar.gz

Copy
tar -xzf website-backup.tar.gz
Theo dõi log Nginx realtime

Copy
tail -f /var/log/nginx/access.log
Hoặc nếu dùng systemd:

Copy
journalctl -u nginx -f
Kiểm tra port 80 và 443 có đang listen không

Copy
ss -tulpen | grep -E ':80|:443'
Restart service Nginx

Copy
sudo systemctl restart nginx
Cập nhật server Ubuntu

Copy
    sudo apt update
    sudo apt upgrade
Cài Git trên các distro phổ biến

  • Ubuntu/Debian: sudo apt install git
  • Fedora/RHEL: sudo dnf install git
  • Arch Linux: sudo pacman -S git
  • Alpine Linux: sudo apk add git

Copy file từ máy local lên server

Copy
scp backup.tar.gz user@server_ip:/home/user/
Đồng bộ thư mục lên server bằng rsync

Copy
rsync -av --progress ./site/ user@server_ip:/var/www/html/
Cấp quyền chạy cho script

Copy
    chmod +x deploy.sh
    ./deploy.sh
Tìm và xóa file .tmp

Copy
find . -name "*.tmp" -type f -delete
Xem 20 dòng log lỗi gần nhất

Copy
grep -i "error" app.log | tail -n 20
FAQ về lệnh Linux cơ bản

Lệnh Linux có phân biệt chữ hoa chữ thường không?

Có. Linux phân biệt chữ hoa và chữ thường. Ví dụ File.txt, file.txtFILE.txt là ba tên file khác nhau.

Người mới nên học lệnh Linux nào trước?

Bạn nên bắt đầu với pwd, ls, cd, mkdir, touch, cp, mv, rm, cat, less, grep, find, chmod, sudo, ps, top, df, du, free, ip, ping, sshsystemctl.

sudo là gì?

sudo cho phép chạy lệnh với quyền quản trị. Đây là lệnh mạnh, nên chỉ dùng khi bạn hiểu lệnh phía sau sẽ làm gì.

Khác nhau giữa apt updateapt upgrade là gì?

apt update cập nhật danh sách package từ repository. apt upgrade nâng cấp các package đã cài lên phiên bản mới hơn dựa trên danh sách vừa cập nhật.

Khác nhau giữa cpmv là gì?

cp dùng để sao chép file hoặc thư mục. mv dùng để di chuyển hoặc đổi tên file/thư mục.

Khác nhau giữa findlocate là gì?

find tìm trực tiếp trong filesystem theo điều kiện nên linh hoạt nhưng có thể chậm. locate tìm bằng database đã tạo trước nên nhanh, nhưng kết quả có thể chưa cập nhật nếu database cũ.

ssnetstat khác nhau thế nào?

ss là công cụ hiện đại để xem socket và kết nối mạng. netstat là công cụ cũ thuộc bộ net-tools, vẫn gặp trên nhiều hệ thống nhưng thường được thay thế bằng ss.

chmod 755 nghĩa là gì?

chmod 755 nghĩa là owner có quyền đọc, ghi, thực thi; group và others có quyền đọc, thực thi. Quyền này thường dùng cho thư mục hoặc script cần chạy.

Có nên dùng chmod 777 không?

Không nên dùng bừa bãi. chmod 777 cho mọi người quyền đọc, ghi và thực thi, có thể gây rủi ro bảo mật. Chỉ dùng khi bạn hiểu rõ lý do.

Lệnh rm -rf có nguy hiểm không?

Có. rm -rf xóa file/thư mục đệ quy và không hỏi lại. Nếu chạy sai đường dẫn, bạn có thể mất dữ liệu nghiêm trọng.

Kết luận

Nắm vững các lệnh Linux cơ bản giúp bạn thao tác nhanh hơn, quản trị server tốt hơn và hiểu sâu hơn cách hệ điều hành Linux hoạt động. Với người mới, hãy bắt đầu từ nhóm lệnh điều hướng, quản lý file, xem log, tìm kiếm và phân quyền. Khi đã quen, bạn có thể học tiếp các lệnh về tiến trình, mạng, service, package manager và bảo mật.

Cách học hiệu quả nhất là mở Terminal và thực hành mỗi ngày. Bạn không cần học thuộc tất cả lệnh ngay lập tức, nhưng nên biết lệnh nào dùng để làm gì và biết cách tra cứu bằng man, help, whatis hoặc apropos.

Bình luận

Author
hoclaptrinh.io author
Tác giả:Yuto Yasunaga

Mình là một full stack developer, tốt nghiệp và làm việc tại Nhật Bản. Trang web này là nơi mình tổng hợp, đúc kết và lưu trữ lại những kiến thức trong quá trình học và làm việc liên quan đến IT.
Hy vọng những bài viết ở website này sẽ có ích cho bạn.