Những câu lệnh hay được dùng cho infra engineer
Linux
76
White

LinhPT viết ngày 07/06/2017

Bài viết được dịch từ http://qiita.com/sion_cojp/items/04a2aa76a1021fe77079

Điều cần nhớ trước khi đánh bất kì câu lệnh nào

①Để tránh làm nặng server bởi những câu lệnh có tải lớn, nhớ chỉnh nice

$ ionice -c 2 -n 7 nice -n 19
# -c 2:best effort cho Disk IO
# -n 7:Giảm priority của command xuống
# -n 19:Giảm tiếp priority của 

②Điểm khác biệt giữa less more cat view

Command Giải thích
less Có thể xem được file nén mà không cần giải né. Ấn q để kết thúc.
more Hiể thị nội dung file, kết thúc khi hết file. Khác với less ở chỗ khi ấn q xong sẽ còn lại nội dung file ở trên terminal.
cat Có thể xem được nhiều file cùng một lúc, tuy nhiên sẽ load hết cả file nên không dùng trong trường hợp file nặng
view readonly mode của vi. Tương đương với vim -R

③Muốn backup file tạm thời
Có một số người tạo ra file .bk trong cùng folder, tuy nhiên tôi thích dùng /tmp hơn

Giải thích
①/tmp Khởi động lại máy thì sẽ bị xoá
②/var/tmp Khởi động lại máy thì cũng không bị xoá, thời gian lưu sẽ lâu hơn /tmp
③Cả 2 thư mục đều bị xoá định kì
(tmp➡10日、/var/tmp➡30日。)
(Xem chi tiết ở $ less /etc/cron.daily/tmpwatch)

④Dùng service thay cho /etc/init.d
Dùng service thì sẽ đỡ ảnh hưởng đến user hơn.

1. Memory, Disk

① Kiểm tra dung lượng memory đang được sử dụng
$ free -m
$ less /proc/meminfo
# Chúng ta có thể từ câu lệnh này để biết memory và buffer. Lượng buffer cũng rất quan trọng

②swap size
$ swapon -s

③Xem dung lượng sử dụng của disk hiện tại
$ df -Th

④Xem sử dụng của disk hiện tại 
$ sudo ionice -c 2 -n 7 nice -n 19 du -scm /* | sort -rn
# sch: không hiển thị từ sub directory và hiện thị theo Mbyte 
# nếu không sort thì sử dụng option -k thay cho -m sẽ dễ nhìn hơn
# rn: sort theo dung lượng sử dụng từ lớn đến nhỏ
# sau khi đánh df thì xem file nào chiếm dung lượng

2. Chuyển tiếp file

①limit tốc độ ở 1MB/s và vận chuyển. (Trước khi enter thì nhớ ấn -n để dry run)
sudo rsync -av --progress --bwlimit=1000 /tmp/test.txt 1.1.1.1:/tmp/
# Chuyển test.txt đến 1.1.1.1/tmp
# av: a={-r -l -p -t -g -o -D } a sẽ gồm toàn bộ các option -r, -l...-D. v là để hiển thị trạng thái chuyển file
# --progress để hiển thị trạng thái %
# bwlimit theo đơn vị KByte

"Chú ý"
### scp khác với rsync
# rsync sẽ tạo file mới ở /tmp/
# Sau khi chuyển hết xong sẽ ghi đè lên file (có thực hiện checksum)
# scp sẽ chuyển thẳng file, nếu trong quá trình chuyển mà có vấn đề về network thì sẽ thành file không hoàn chỉnh
#
# 「Thiếu dung lượng、không rsync được!」
# Khi đó thì có thể sử dụng rsync --inplace

②Tìm kiếm trong current directory tất cả các file .txt, sau đó xoá
$ find . -maxdepth 1 -type f -name "*.txt" -print0 | xargs -0 rm
# -maxdepth giới hạn độ sau tìm kiếm
# xargs pass kết quả như là parameter cho rm
# -print0: space sẽ biến thành \0
# -0: sử dụng \0 như delimiter

③Xoá tất cả những file nào "không kết thúc" bằng rb hoặc txt (\!)
$ find . -maxdepth 1 -type f \! \( -name "*.txt" -o -name "*.rb" \) 

3.CPU,OS,package

①Thông tin CPU, core
$ less /proc/cpuinfo

②thông tin sử dụng CPU
$ ionice -c 2 -n 7 nice -n 19 top
# ấn 1 sẽ hiển thị lượng sử dụng theo core

$ sar
# Hiển thị một câu lệnh liên tục theo interval
# $ sar 1 5: Hiển thị 5 lần mỗi 1s 

③Kiểm tra process
$ ps auxww
# w làm phần hiển thị rộng hơn 

④Hiển thị file đang được sử dụng bởi 1 process
$ lsof -p PID

⑤kill toàn bộ process khởi động bởi /bin/sh
$ pkill -f "/bin/sh"
hoặc
$ ps auxww | grep "/bin/sh" | awk '{print $2}' | xargs kill


⑥OS vesion cho redhat
$ cat /etc/redhat-release

⑦kernel version
$ uname -a

⑧Kiểm tra rpm package
$ rpm -qa

4.Network

①Kiểm tra IP
$ ifconfig
$ ip addr show

②Kiểm tra route
$ route

③Kiểm tra đường đi của network
$ traceroute -n 8.8.8.8

④Trong trường hợp không dùng được UDP, có thể dùng ICMP thay thế
$ traceroute -In

④Kiểm tra connection của mysql
$ netstat -ano | grep 3306
# -ano: Hiển thị tất cả các connection + thời gian

⑤Hiển thị thông tin IPMI
$ sudo ipmitool lan print

⑥Kiểm tra iptables 
$ iptables -L


⑦Kiểm tra network interface
$ less /etc/udev/rules.d/70-persistent-net.rules

⑧Kiểm tra tình trạng network interface
$ ethtool -i eth0

5.Account, login

①Hiển thị user đang login
$ w
# Có ích khi có trouble, xem có ai đang login nữa không

②Gửi message đến toàn bộ user đang login
$ wall

③Hiển thị user, group
$ getent passwd

④Tạo user
$ sudo useradd -g hoge -u 600 -d /home/user/hogehoge hogehoge

⑤Xoá user
$ sudo userdel hogehoge

⑥Set password
$ passwd hogehoge

9.Add thêm disk (parted)

### Từ disk thứ 2 sẽ là sdb
$ parted -l | grep sdb

### Tạo partition mới
$ sudo parted /dev/sdb
(parted) mklabel gpt
(parted) mkpart primary 0% 100%
(parted) set 1 lvm on  
(parted) print

$ sudo pvcreate /dev/sdb1
$ sudo vgcreate VolGroupName /dev/sdb1
$ sudo lvcreate -l 100%free -n LogName VolGroupName

### Xoá file system
$ sudo mkfs -t ext4 /dev/VolGroupName/LogName

### Sau đó chỉ cần mount
$ sudo mkdir /NewDisk
$ sudo vim /etc/fstab
/dev/mapper/VolGroupName/LogName /NewDisk  ext4    defaults 1 1
$ sudo mount /NewDisk

10.Disk extension (fdisk。có thẻ sử dụng đến disk 2TB)

### Khi có 2 disk thì sẽ hiển thị thành vdb
$ ls /dev | grep vd

### Tạo LVM
$ sudo fdisk -cu /dev/vdb
  n (add a new partition)
  p (primary)
  1 (number)

### Kiểm tra fdisk
$ sudo fdisk -l

### Tạo volume vật lý
$ sudo pvcreate /dev/vdb1

# Kiểm tra
$ sudo pvdisplay

### Tạo volume group
$ sudo vgextend VolGroupName /dev/vdb1

# Kiểm tra
$ sudo vgdisplay

### 
$ sudo lvextend -L +19270MB /dev/VolGroupName/LogName
# $ lvextend -l +100%FREE /dev/VolGroupName/LogName

### Extend online
$ sudo resize2fs -p /dev/VolGroupName/LogName

### Kết thúc, confirm bằng
$ df -Th

11. Xoá disk

### Xoá volume vật lý
$ sudo lvremove /dev/VolGroupName/LogName

### Xoá volume ảo
$ sudo vgreomove VolGroupName

### Khi xoá volume vật lý, nhơ chú ý sdb và sdc
$ pvdisplay
$ sudo pvremove /dev/sdb1

Sau khi xong nhớ dùng fdisk -cu để kiểm tra
Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

LinhPT

20 bài viết.
56 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
32 3
Mình thi thoảng phải quản lý linux server, mà trong đó có một số thao tác quản lý quan trong như quản lý đĩa cứng, quản lý mạng, quản lý đường truy...
LinhPT viết 2 năm trước
32 3
White
23 2
(Ảnh) Tiêu đề chỉ là câu khách :v, thực ra là có một vài điểm về mysql explain mà chắc chưa nhiều bạn biết, tớ cũng hay quên nên note lại cho nhớ ...
LinhPT viết hơn 2 năm trước
23 2
White
16 2
(Ảnh) Xu hướng Gần đây mình hay để ý các tranh luận trên mạng, đặc biệt là các tranh luận kĩ thuật. Sau một thời gian quan sát thì mình nhận thấ...
LinhPT viết hơn 2 năm trước
16 2
Bài viết liên quan
White
1 0
sudo du sh
t viết gần 2 năm trước
1 0
Male avatar
31 10
Thời kỳ mới đi làm tôi nghĩ cứ phải gõ thật nhiều cho quen cho nhớ nhưng lâu dần việc đó cho cảm giác thật nhàm chán. Hiện giờ, những gì tôi hay là...
manhdung viết hơn 2 năm trước
31 10
White
1 0
Sử dụng option I với xargs Với option I thì bạn có thể sử dụng place holder với biến được lấy ra từ xargs man của option này: I replacestr R...
LinhPT viết hơn 1 năm trước
1 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
20 bài viết.
56 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!