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 :(