Một số lệnh thường dùng cho sysadmin - Linux server

Giới thiệu

Công việc của bạn với tư cách là quản trị viên hệ thống Linux (Linux sysadmin) bao gồm cài đặt và chạy phần mềm, kiểm soát quyền truy cập, giám sát, đảm bảo tính khả dụng, sao lưu...
Hoặc đơn giản là bạn có 1 home server (như mình) thì kiến thức về sysadmin là cần thiết để giữ cho server của bạn hoạt động ổn định.

Trong bài này, chúng ta sẽ tìm hiểu một số lệnh thường được Linux sysadmin sử dụng trong công việc hàng ngày của họ.

1. uname

Sử dụng 'uname -a' để in thông tin hệ thống. Lệnh này sẽ hiển thị cho bạn tên kernel, bản phát hành kernel, phiên bản kernel, tên máy chủ, loại bộ xử lý và thông tin nền tảng phần cứng của bạn.

Linux luffydev 5.4.0-104-generic #118-Ubuntu SMP Wed Mar 2 19:02:41 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Có nghĩa là như thế này
kernel name:Linux
hostname: luffydev
kernel release: 5.4.0-104-generic
kernel version: #118-Ubuntu SMP Wed Mar 2 19:02:41 UTC 2022
machine hardware name: x86_64
processor: x86_64
hardware-platform: x86_64
operating system: GNU/Linux

2. df

Sử dụng "df" để xác minh kích thước của hệ thống tệp và dung lượng có sẵn.

Tùy chọn "-h" để hiển thị cho dễ đọc hơn.

df -h

Để bỏ qua bất kỳ hệ thống tệp nào, ví dụ: tmpfs, dành cho đầu ra sạch hơn,dùng "-x tmpfs"

df -h -x tmpfs

Để chỉ liệt kê một loại hệ thống tệp cụ thể,dùng "-t". Ví dụ: chỉ xem tmpfs:

df -h -t tmpfs

Sử dụng "total" sẽ thêm một dòng hiển thị tổng số:

df -h -t tmpfs --total

3. du

Để kiểm tra việc sử dụng dung lượng ổ đĩa trong một thư mục, hãy sử dụng du. Ví dụ để xem mức sử dụng dung lượng đĩa trong thư mục /var/log. Sử dụng du -h để dễ đọc.

sudo du -h /var/log

Chỉ xem tổng mức sử dụng, sử dụng -s (summary).

sudo du -hf /var/log

4. free

Sử dụng lệnh free để xem thông tin về ram như tổng số,đã dùng và trống.

              total        used        free      shared  buff/cache   available
Mem:       16353576      545580    15109696        3988      698300    15486396
Swap:       4194300           0     4194300

Sử dụng "free -h" để dễ đọc.

              total        used        free      shared  buff/cache   available
Mem:           15Gi       525Mi        14Gi       3.0Mi       683Mi        14Gi
Swap:         4.0Gi          0B       4.0Gi

Bên trên khi không sử dụng -h thì hiển thị dung lượng ram của mình ~16Gb, sau khi dùng -h thì do cách làm tròn nên hiển thị 15Gb, việc này không quá quan trọng nên có hơi khác nhau các bạn đừng lo lắng.
Theo mình nghĩ cách làm tròn thế này: hệ thống hiểu 16Gb là phải 16,777,216, còn nếu thấp hơn thì hệ thống tự làm tròn xuống. Của mình có 16,353,576 là thấp hơn nên khi dùng -h sẽ hiển thị về 15Gb.

Trong đó
total - tổng ram
used - ram đã sử dụng
free - ram chưa sử dụng
buffers - ram sử dụng bởi bộ nhớ đệm
cache - ram sử dụng bởi caches
buff/cache - tổng buffers và cache
available - Dung lượng còn trống

5. ps

Dùng ps để hiển thị thông tin trạng thái về các tiến trình đang chạy.
Để xem tất cả các quy trình do người dùng user sở hữu, hãy sử dụng

ps -u user

Để xem tất cả tiến trình, dùng

ps aux

Mở rộng: quy trình hệ thống mặc định sẽ cập nhập ba giây một lần. Nên ps thực thi khi nào sẽ chỉ lấy được thông tin ở thời điểm đó, để cập nhập theo thời gian thực, chúng ta sử dụng lệnh top.

6. top

Trong khi ps hiển thị nhanh trạng thái của các quy trình tại thời điểm thực thi lệnh thì lệnh top bao gồm hai phần chính: tóm tắt hệ thống ở trên cùng và bảng các quy trình được sắp xếp theo hoạt động của CPU, và đương nhiên, real-time.

Trong khi top đang chạy, có thể đưa vào một số lệnh. Ví dụ như, h hoặc ? mở trợ giúp, k rồi nhập pid của process để kill process đó, để dừng lệnh top gõ q hoặc ESC.

7. dig

dig là một công cụ tuyệt vời để thực hiện truy vấn DNS. Nó được sử dụng như sau:
dig

Trong đó
●  là DNS servermuốn truy vấn
●  domain muốn truy vấn
●  tên của record muốn biết, ví dụ như A, MX, NS SOA,...

8. who và w

who hiển thị những người dùng đã đăng nhập.

w hiển thị người dùng hiện đã đăng nhập và quy trình của họ. Tiêu đề hiển thị thời gian hiện tại, thời gian hoạt động của hệ thống, số lượng người dùng đã đăng nhập và mức trung bình tải hệ thống.

Bonus: whoami, được sử dụng để in tên người dùng hiện đã đăng nhập vào hệ thống Linux của bạn. Nếu bạn đã đăng nhập với tư cách là người dùng root bằng lệnh sudo "whoami" lệnh trả về root.

9. tar

Với tar, bạn có thể nén tệp 1 cách nhanh chóng
Ví dụ, tạo thư mục files với 3 tệp là 1.txt, 2.txt, 3.txt

mkdir files ; touch files/{a.txt,b.txt,c.txt}

Nén thư mục files vào tệp tarfiles.tar

tar -cvf tarfiles.tar files

giải nén tệp dùng -xvf

tar -xvf tarfiles.tar

nén dạng gzip dùng -zcvf

tar -zcvf tarfiles.tar files

giải nén dạng gzip -zxvf

tar -zxvf tarfiles.tar.gz

10. grep

grep được sử dụng để tìm kiếm một mẫu trong một tệp hoặc một tập hợp các tệp. Nó in tất cả các dòng phù hợp với mẫu đó. Ví dụ: để tìm kiếm dòng có chứa “ServerRoot” trong /etc/apache2/apache2.conf:

grep ServerRoot /etc/apache2/apache2.conf

tìm timezone có chứa tên Tokyo

timedatectl list-timezones | grep Tokyo

11. rsync

rsync là lệnh để đồng bộ hóa các tệp và thư mục giữa hai vị trí. Có thể được sử dụng cho cả sao chép cục bộ và từ xa và nhanh chóng vì nó chỉ gửi sự khác biệt giữa tệp nguồn và tệp hiện có ở đích.

Nó được sử dụng rộng rãi để sao lưu và như một lệnh sao chép cải tiến để sử dụng hàng ngày.

Đây là một ví dụ:
Để copy/rsync tất cả các tệp từ thư mục files vào thư mục backups:

rsync -avh files/ backups

đồng bộ với máy chủ từ xa

rsync -avh files/ user@<server_IP>:/home/vagrant

12. ss

ss dùng để xuất số liệu thống kê về socket, nó cũng gần tương tự như netstat.
Ví dụ để hiển thị các socket TCP chọn -t

ss -t

Nhưng nó không hiển thị các socket đang listen, để hiển thị thêm tùy chọn -a

ss -t -a

13. locate

Lệnh locate sử dụng cơ sở dữ liệu để tìm kiếm tệp và thực sự có thể nhanh hơn nhiều so với lệnh find. Rất đơn giản để sử dụng, để tìm kiếm một tệp, chẳng hạn như apache2.conf:

locate apache2.conf

Mặc định Ubuntu Server 20.04LTS không cài lệnh này, vì vậy để sử dụng được hãy cài đặt nó

sudo apt install mlocate

quá trình cài đặt sẽ cần phân tích database nên hơi lâu 1 chút.

Bạn có thể sử dụng -c nếu bạn chỉ muốn số lượng tệp phù hợp với mẫu tìm kiếm.

locate -c apache2.conf

Một thời gian bạn nên cập nhập cơ sở dữ liệu để tìm kiếm nhanh hơn
sudo updatedb

14. find

Một trong những lệnh được sử dụng thường xuyên nhất trên Linux. Sử dụng nó để tìm kiếm các tệp dựa trên tên tệp, quyền, userid, nhóm, kích thước, loại tệp...

Để tìm kiếm tệp theo tên trong thư mục hiện tại, hãy sử dụng -name theo sau là tên để tìm kiếm

find . -name a.txt

Tìm theo thư mục chọn -type d

find . -type d

Tìm theo kích cỡ, chọn -size

find . -size +20M

15. systemctl

Sử dụng lệnh systemctl để quản lý systemd.
Ví dụ, để khởi động nginx

sudo systemctl start nginx

Ngừng nginx

sudo systemctl stop nginx

Xem trạng thái nginx

sudo systemctl status nginx

16. ufw - Firewall

UFW - Firewall là một lệnh dễ sử dụng cho iptables. Nó có sẵn theo mặc định, trên các bản phân phối dựa trên Ubuntu. Trên CentOS, bạn có thể cài đặt ufw từ kho EPEL.
Bật firewall

sudo ufw enable

Kiểm tra trạng thái

sudo ufw status

Lệnh này khá dễ dùng nhưng cũng khá quan trọng, cụ thể hơn mình đã có một bài viết riêng về lệnh này. Tham khảo ở đây (NHỚ CHÈN LINK SAU)

17. journalctl

Sử dụng journalctl để xem nhật ký do systemd thu thập.

sudo journalctl

Xem theo sắp xếp ngược lại

sudo journalctl -r

Để xem nhật ký của một dịch vụ cụ thể, ví dụ sử dụng nginx

sudo journalctl -u nginx

18. kill và killall

Bạn có thể cần phải kill một tiến trình đang chạy hoặc khi bạn cần giải phóng một số tài nguyên hệ thống. Tùy chọn -l hiển thị tất cả các tín hiệu bạn có thể gửi đến một quy trình.

kill -l

Hai tín hiệu được sử dụng phổ biến nhất là SIGTERM VÀ SIGKILL. Bạn cũng có thể sử dụng -9 cho SIGKILL và -15 cho SIGTERM. SIGTERM cho phép một quá trình hoàn thành trước khi nó bị kết thúc và do đó được gọi là tiêu diệt mềm. SIGKILL chấm dứt quy trình ngay lập tức, ngay lập tức luôn. Đây là một ví dụ:

Ví dụ, list các process nginx

ps aux|grep nginx

Kill process nginx có id là 1133

sudo kill -9 1133

Sử dụng killall để dừng một chương trình theo tên. Có nghĩa là killall giết quá trình điều khiển (cha) và tất cả các quá trình con. Để loại bỏ tất cả các phiên bản của quy trình nginx trong ví dụ trên:
sudo killall nginx

Sử dụng kill và killall cần phải thận trọng. Các lệnh này có thể khiến hệ thống rơi vào trạng thái không ổn định.

19. ip

Lệnh ipthay thế ifconfig trong các bản phân phối Linux mới hơn. Sử dụng nó để cấu hình và hiển thị các interface. Cũng được sử dụng để hiển thị và sửa đổi địa chỉ IP, routes..
Hiển thị thông tin về tất cả các interface:

ip a

Để đưa một interface lên hoặc xuống

đưa lên

ip link set eth0 up

hạ xuống

ip link set eth0 down

20. date

Một lệnh được sử dụng rất phổ biến, sau đây chúng ta cùng khám phá một số cách thú vị để sử dụng lệnh này.

luffy@luffydev:~$ date
Wed 16 Mar 2022 03:53:59 PM JST

Xem thông tin chủ nhật tới

luffy@luffydev:~$ date -d 'next sunday'
Sun 20 Mar 2022 12:00:00 AM JST

hay chủ nhật trước

luffy@luffydev:~$ date -d 'last sunday'
Sun 13 Mar 2022 12:00:00 AM JST

sử dụng -date hay -d cũng ok luôn

luffy@luffydev:~$ date --date='last sunday'
Sun 13 Mar 2022 12:00:00 AM JST

Kiểm soát định ra đầu ra

luffy@luffydev:~$ date '+%d-%B-%Y'
16-March-2022

21. uptime

Lệnh uptime của Linux hiển thị thời gian hệ thống của bạn đang chạy và số lượng người dùng hiện đang đăng nhập và cũng hiển thị mức trung bình tải của hệ thống trong các khoảng thời gian 1, 5 và 15 phút.

luffy@luffydev:~$ uptime
 16:00:50 up  2:44,  2 users,  load average: 1.02, 1.04, 1.06

Kiểm tra phiên bản

uptime -V

22. users

Hiển thị tên đăng nhập của tài khoản hiện đang đăng nhập.

luffy@luffydev:~$ users
luffy luffy

23. ls

Lệnh ls hiển thị danh sách các tệp.

luffy@luffydev:~$ ls
2022-03-10T07_12_26+00_00  certbot-creds.ini  snap
backups                    files              tarfiles.tar
```javascript
để dễ đọc thì dùng
```javascript
ls -l

24. crontab

Tự động lên lịch làm việc gì đó
Liệt kê danh sách các công việc đang được tự động

Mình sẽ có một bài riêng về crontab (đang update)

25. less

Xem nhanh file, để ngừng xem nhấn q

less /etc/apache2/apache2.conf

26. more

Cũng giống less, xem nhanh nhưng hiển thị thêm đang xem đến bao nhiêu % của file, để ngừng xem nhấn q

more /etc/apache2/apache2.conf

27. cp

Lệnh cp sao chép tệp từ nguồn đến đích.

cp file1 file2

Chép và ghi đè nếu tồn tại

cp -i file1 file2

28. mv

Đổi tên tệp A thành tệp B

mv fileA fileB

Ghi đè nếu tồn tại

mv -r fileA fileB

29. cat

Lệnh cat dùng để xem nhiều files cùng lúc.

cat a.txt b.txt c.txt

Có thể kết hợp với more và less với lệnh cat để xem tệp chứa nếu tệp đó không vừa với màn hình.

cat install.log | less
cat install.log | more

30. cd

Di chuyển đến thư mục nào đó
Ví dụ, di chuyển đến thư mục /etc/apache2

cd /etc/apache2

31. pwd

Trả về đường dẫn thư mục hiện tại

luffy@luffydev:~$ pwd
/home/luffy

32. sort

Lệnh sort được sử dụng để sắp xếp các dòng tệp văn bản theo thứ tự tăng dần. Ngược lại, với tùy chọn -r sẽ sắp xếp theo thứ tự giảm dần.

luffy@luffydev:~/files$ sort a.txt
adasd
ádasd
<h1>test</h1>
zzz
luffy@luffydev:~/files$ sort -r a.txt
zzz
<h1>test</h1>
ádasd
adasd

Với file a.txt có nội dung

<h1>test</h1>
adasd
ádasd
zzz

33. lsof

Hiển thị danh sách tất cả các tệp đang mở.
Ví dụ, xem danh sách tệp đang mở bởi người dùng luffy

lsof -u luffy

34. last

Với lệnh cuối cùng, chúng ta có thể xem hoạt động của người dùng trong hệ thống. Lệnh này cũng có thể thực thi người dùng bình thường. Nó sẽ hiển thị thông tin đầy đủ của người dùng như terminal, time, date, system reboot hoặc boot, phiên bản kernel. Một lệnh hữu ích để khắc phục sự cố.

35. rm

lệnh rm được sử dụng để loại bỏ hoặc xóa file.

rm tên-file

Sử dụng tùy chọn -i để xác nhận trước khi xóa nó. Sử dụng các tùy chọn '-r' và '-f' sẽ xóa tệp một cách cưỡng bức mà không cần xác nhận.

#xác nhận khi xóa
rm -i tên-file
#không cần xác nhận, cưỡng bức mà xóa
rm -rf tên-file

36. mkdir

Để tạo thư mục, dùng rất đơn giản

mkdir tên-thư-mục-file-cần-tạo

Lời kết:

Bài hơi dài, bản thân mình cũng là tổng hợp bài viết từ nhiều nguồn lại. Nếu có gì thắc mắc vui lòng để lại comment.
★ Một kinh nghiệm nhỏ khi "chơi" với linux là hãy xây dựng server trên máy ảo (VMWare hoặc VirtualBox) để thử. Còn server sử dụng chính của bạn, có thể thay đổi nhỏ cũng khiến hệ thống không ổn định, mà có khi fix cả ngày :(

Đọc thêm

Cài đặt Ubuntu server 20.04 LTS