Linux

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

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
Registration Login
Sign in with social account
or
Lost your Password?
Registration Login
Sign in with social account
or
A password will be send on your post
Registration Login
Registration