Linux command

"Linux command"

Posted by tablesheep on

“Linux命令备忘”

工具安装

  • iostat
1
yum install -y sysstat
  • netcat
1
2
##http://netcat.sourceforge.net/
yum install -y netcat

系统信息

1
2
3
4
5
getconf LONG_BIT 位数

uname -a  系统版本
cat /proc/version

磁盘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
df 查看文件系统整体使用情况 -T 文件类型
du 扫描所有文件使用情况
du -h --max-depth=1 查看当前目录下个文件夹大小

lsblk 查看块设备情况(树状)
blkid 查看块设备基本信息(文件类型,UUID)

fdisk /dev/sdb   磁盘分区
fdisk -l 查看分区情况

mkfs 查看支持的格式
mkfs -t ext4 /dev/sdb 格式化磁盘分区

mount /dev/sdb /home/app  挂载
umount /dev/sdb 卸载
/etc/fstab 配置自动挂载,要注意UUID

LVM概念

LVM:逻辑卷管理,Linux使用它管理磁盘,可以实现动态扩容。

PV:物理卷,粗略理解为磁盘分区。

VG:卷组,由一个或多个PV组成,可以在其上创建逻辑卷LV。(汇总多个物理磁盘资源)

LV:逻辑卷,从VG上的磁盘分区,可以动态调整大小。

LVM管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
物理卷
pvscan 扫描物理卷并输出信息
pvcreate /dev/sdb 创建物理卷(将磁盘分区转换为物理卷)
pvdisplay 查看物理卷详细情况
pvremove /dev/sdb 删除物理卷
pvs 查看物理卷信息


卷组
vgscan 
vgcreate sdb 创建卷组
vgdisplay
vgremove
vgextend sdb /dev/sdb 扩展卷组
vgs 查看卷组

逻辑卷
lvscan
lvcreate [-L 指定大小 单位一堆记住G完事] [-l 按卷组剩余大小的百分比指定大小] [-n 名字] [逻辑卷]
lvcreate -L 100G -n share_sdb sdb
lvdisplay
lvremove
lvextend 扩容 lvextend -L +10G [lv名 通过lvdisplay查看]
lvresize 调整大小
lvreduce 缩容
lvs 查看逻辑卷

调整逻辑卷前需要先卸载,调整后要使用以下命令调整文件系统的大小
xfs_growfs [lv名]  xfs格式
resize2fs [lv名] ext格式

文件

1
2
3
mkdir -p 递归创建目录
find . -type f -size +1G | xargs du -h | sort -nr  查找大于1G的文件使用管道进行du以及排序操作

句柄

1
2
3
vim /etc/security/limits.conf 修改句柄
sysctl -a | grep file-max  最大文件句柄数
sysctl -a | grep file-nr 已经打开的文件句柄数

压缩解压

1
2
3
tar -zcvf pack.tar.gz pack/
tar -zxvf pack.tar.gz
unzip pack.zip

发送文件

1
2
scp -r -P 22 /home/app/config root@ip:/home/app/config 指定端口22发送
scp -r root@ip:/home/app/config /home/app/ 从远程拉取

other

1
2
#创建50M大小的文件,if:输入文件(或设备名称)of:输出文件(或设备名称),bs:每次写入大小,count:写入次数
dd if=/dev/zero of=log.txt bs=1M count=50 

文本

vim

1
%s/源字符串/目的字符串/g 全局替换

查找

grep

1
grep -r -h -A 2 "insert" /g/linux-find/ 查找目录下包含insert的行,输出该行以及之后的两行,忽略文件名

awk 文本处理

1
2
df -lh | awk '{print $1, $4}'  打印第一、四列
df -lh | awk 'substr($2, 0, length($2)-1) + 0 > 100' 打印内存大于100G的行

网络

配置目录 /etc/sysconfig/network-scripts

路由

1
2
3
traceroute www.baidu.com 查看到某个网站的路由
route 查看路由表,通过add,del改变路由

端口

1
2
3
lsof -i:port 查看端口情况
netstat -tunlp | grep 8080 查看8080端口情况
netstat -apu UDP使用情况

netcat

1
2
3
4
nc -l -p port 开启tcp监听
nc ip port 发送tcp
nc -u -l -p port  开启udp监听
nc -u ip port 发送udp

抓包

tcpdump

1
2
3
tcpdump -i eth0 src localhost tcp port 8005 dst 0.0.0.0
tcpdump -i any port 80 -A
tcpdump udp port 10022 

firewalld

除了firewalld,还要注意iptable,曾经因为firewalld已禁用,但不知道iptable为何还在,导致端口一直不通,搞了2天

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
---- centos7 开始使用防火墙 ----
systemctl start firewalld
firewall-cmd --permanent --add-port=8056/tcp  开发端口
firewall-cmd --add-forward-port=port=8006:proto=tcp:toport=1935:toaddr=xxx.xx.xx.xxx --permanent
firewall-cmd --permanent  --remove-forward-port=port=8006:proto=tcp:toaddr=xxx.xx.xx.xxx:toport=1935 --删除转发规则 
firewall-cmd --add-masquerade --permanent
firewall-cmd --reload

firewall-cmd --zone=public --list-ports -列出所有类型public 的端口
firewall-cmd --zone=public --list-ports -列出所有类型public 的端口


firewall-cmd --list-ports --列出所有信息
 
firewall-cmd --remove-port=8056/tcp --临时删除端口
firewall-cmd --zone=public --remove-port=8005/tcp --permanent --永久删除卡对外开放的端口
firewall-cmd --permanent --zone=public --remove-forward-port=port=8056:proto=tcp:toaddr=xxx.xx.xx.xxx:toport=3356 --删除转发规则 

TCP

1
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' #统计各个状态数量

TIME_WAIT过多优化

1
2
3
4
5
6
编辑 /etc/sysctl.conf

net.ipv4.tcp_tw_reuse = 1  #允许将TIME-WAIT sockets重用于新的TCP连接
net.ipv4.tcp_tw_recycle = 1  #开启TCP连接中TIME-WAIT sockets的快速回收

#或者用sysctl命令临时修改

定时任务

编辑 /etc/crontab (建议系统级配置)

1
crontab -e  (建议用户脚本)

shell

os.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
DISK=$(df -lh)

CPU=$(mpstat | tail -1 | awk '{print $NF}' | awk -F% '{print 100-$1}')
USED=$(free -m | sed -n '2p' | awk '{print $3"M"}')
TOTAL=$(free -m | grep "Mem: " |awk '{print $2"M"}')
USEDRAT=$(free -m | sed -n '2p' | awk '{print $3/$2*100"%"}')

echo "磁盘使用情况:"
echo "$DISK"
echo " "
echo "内存总共大小: $TOTAL"
echo "内存使用情况:$USED"
echo "内存使用比率: $USEDRAT"
echo "CPU使用比率: $CPU"%""