常用Linux命令集锦

常用linux命令:

  • 随机数
  • 时间
  • ip
  • 日志分析
  • 硬件信息
  • 进程端口
  • 调整分区大小

随机数

生成10以内的随机数

1
echo $RANDOM%10 | bc

生成11-20之间的随机数

1
echo $(($(date +%s)%11+20-11))

时间

获取当前系统的时间

1
date|cut -c 1-26  # 2016年 07月 23日 星期六 19:12:40

查看硬件时间

1
hwclock

修改系统时间

1
date -s "2019-03-29 13:58:00"

将系统时间同步到硬件时间

1
hwclock --systohc

ip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@prcdo ~]# curl ipinfo.io/json
{
"ip": "138.68.1.61",
"city": "Santa Clara",
"region": "California",
"country": "US",
"loc": "37.3501,-121.9850",
"postal": "95051",
"org": "AS14061 DigitalOcean, LLC"
}

[root@prcdo ~]# curl ip.cn
当前 IP:138.68.1.61 来自:美国 DigitalOcean

[root@prcdo ~]# curl ip.tl
IP: 138.68.1.61
DigitalOcean, LLC (AS14061) New York New York United States

日志分析

日志分析命令:

  • 去重: uniq
  • 排序: sort
  • 统计: wc
  • 筛选: awk
  • 查找: grep
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看日志去除重复
cat catalina.out |grep "xxxxx"|awk -F ']' '{print $2}'|sort|uniq

# 统计去除重复的行数
cat catalina.out |grep "xxxxx"|awk -F ']' '{print $2}'|sort|uniq|wc -l

# 查询日志大于某一个时间点的日志,并且去重复
cat catalina.out | grep "xxxxxxxx"|awk '($0>"05-19 18:20:00"){print $0}'|awk -F ']' '{print $2}'|sort|uniq

# 统计行数
cat catalina.out | grep "xxxxxxxx"|awk '($0>"05-19 18:20:00"){print $0}'|awk -F ']' '{print $2}'|sort|uniq|wc -l

# 获取disqus-proxy代理日志中的去重文章数量
grep "Get Comments with identifier" disqus-proxy.log | awk '{print $10}' | sort | uniq |wc -l

硬件信息

截取top命令中的时间

1
top -n 1|grep 'top -'|awk '{print $3}'  # 19:12:19

截取top命令中三次cpu利用率

1
top -n 3 b|grep 'Cpu(s)'|awk '{print $2}'|cut -d '%' -f 1

截取top命令中三次cpu利用率的平均值

1
top -n 3 b|grep 'Cpu(s)'|awk '{print $2}'|cut -d '%' -f 1|awk '{sum+= $1} END {printf "%.2f\n",sum/3}'  # 输出的0.13就是百分比,即cpu使用率是0.13%

截取free命令中的内存使用率

1
free|grep 'Mem:'|awk '{realused=$3-$6-$7} END {printf "%.2f\n",realused*100/$2}'

截取df命令中的/dev/sda3磁盘使用率

1
df|grep '/dev/sda3'|awk '{print $5}'|cut -d '%' -f 1  # 第5项就是磁盘使用率

截取df -i命令中的/dev/sda3的Inode使用率

1
df -i|grep '/dev/sda3'|awk '{print $5}'|cut -d '%' -f 1  # df -i显示的就是各个磁盘Inode的使用率,其中第5项就是Inode使用率

截取df命令中的挂载在根目录下面的磁盘的使用率

1
2
df|awk '{if ($6=="\/") print $5}'|cut -d '%' -f 1  # awk: 警告: 转义序列“\/”被当作单纯的“/”
df|awk '{if(length($6)==1) print $5}'|cut -d '%' -f 1

截取df命令中的挂载在根目录下面的磁盘的Inode使用率

1
2
df -i|awk '{if ($6=="\/") print $5}'|cut -d '%' -f 1  # awk: 警告: 转义序列“\/”被当作单纯的“/”
df -i|awk '{if(length($6)==1) print $5}'|cut -d '%' -f 1

find查询结果文件的大小求和

1
find . -name "grsds.log.2016-08*" -exec ls -lh {} \;|awk '{print $5}'|cut -d 'M' -f 1|awk '{sum+=$1} END {printf "%.2f\n",sum/1024.0}'  # 已G为单位

查看物理CPU个数、核数、逻辑CPU个数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 物理CPU:实际服务器中插槽上的CPU个数
# CPU核数:一块CPU上面能处理数据的芯片组的数量
# 逻辑CPU:一般来说,物理CPU个数×每颗核数就应该等于逻辑CPU的个数,如果不相等的话,则表示服务器的CPU支持超线程技术
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

进程端口

根据端口号查看占用端口的进程

1
2
3
4
5
6
7
8
9
[weblogic@localhost domains]$ lsof -i:8999
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 23256 weblogic 130u IPv6 22077351 0t0 TCP 192.168.31.72:39609->192.168.31.72:bctp (ESTABLISHED)
java 23256 weblogic 131u IPv6 22077353 0t0 TCP 192.168.31.72:39610->192.168.31.72:bctp (ESTABLISHED)
java 23256 weblogic 132u IPv6 22077357 0t0 TCP 192.168.31.72:39611->192.168.31.72:bctp (ESTABLISHED)
java 23256 weblogic 133u IPv6 22077359 0t0 TCP 192.168.31.72:39612->192.168.31.72:bctp (ESTABLISHED)
[weblogic@localhost domains]$ ps -ef | grep 23256
weblogic 5777 5745 0 17:04 pts/1 00:00:00 grep --color 23256
weblogic 23256 1 1 2016 ? 05:19:04 java -jar netbridge-client-0.0.1-SNAPSHOT.jar

根据进程名称查看进程号

1
2
3
4
5
6
[weblogic@localhost domains]$ ps -ef | grep netbridge
weblogic 5811 5745 0 17:16 pts/1 00:00:00 grep --color netbridge
weblogic 20109 1 2 2016 ? 10:31:37 java -jar netbridge-server-0.0.1-SNAPSHOT.jar
weblogic 20141 1 1 2016 ? 05:32:17 java -jar netbridge-client-0.0.1-SNAPSHOT.jar
weblogic 23234 1 1 2016 ? 05:19:17 java -jar netbridge-server-0.0.1-SNAPSHOT.jar
weblogic 23256 1 1 2016 ? 05:19:12 java -jar netbridge-client-0.0.1-SNAPSHOT.jar

根据进程号查看端口

1
2
3
4
5
6
7
[weblogic@localhost domains]$ netstat -anp | grep 23256
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 ::ffff:192.168.31.72:39539 ::ffff:192.168.31.72:8999 ESTABLISHED 23256/java
tcp 0 0 ::ffff:192.168.31.72:39545 ::ffff:192.168.31.72:8999 ESTABLISHED 23256/java
tcp 0 0 ::ffff:192.168.31.72:39559 ::ffff:192.168.31.72:8999 ESTABLISHED 23256/java
unix 2 [ ] STREAM CONNECTED 22077363 23256/java

调整分区大小

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
[root@cs02 /]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/vg_cs01-lv_root
50G 2.1G 45G 5% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
/dev/sda2 485M 37M 423M 9% /boot
/dev/sda1 200M 260K 200M 1% /boot/efi
/dev/mapper/vg_cs01-lv_home
399G 200M 378G 1% /home
[root@cs02 /]# umount /home
[root@cs02 /]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/vg_cs01-lv_root
50G 2.1G 45G 5% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
/dev/sda2 485M 37M 423M 9% /boot
/dev/sda1 200M 260K 200M 1% /boot/efi
[root@cs02 /]# mount /home
[root@cs02 /]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/vg_cs01-lv_root
50G 2.1G 45G 5% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
/dev/sda2 485M 37M 423M 9% /boot
/dev/sda1 200M 260K 200M 1% /boot/efi
/dev/mapper/vg_cs01-lv_home
399G 200M 378G 1% /home
[root@cs02 /]# umount /home
[root@cs02 /]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/vg_cs01-lv_root
50G 2.1G 45G 5% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
/dev/sda2 485M 37M 423M 9% /boot
/dev/sda1 200M 260K 200M 1% /boot/efi
[root@cs02 /]# resize2fs -p /dev/mapper/vg_cs01-lv_home 50G
resize2fs 1.41.12 (17-May-2010)
请先运行 'e2fsck -f /dev/mapper/vg_cs01-lv_home'.

[root@cs02 /]# e2fsck -f /dev/mapper/vg_cs01-lv_home
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/mapper/vg_cs01-lv_home: 36/26509312 files (0.0% non-contiguous), 1714751/106011648 blocks
[root@cs02 /]# resize2fs -p /dev/mapper/vg_cs01-lv_home 50G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/vg_cs01-lv_home to 13107200 (4k) blocks.
Begin pass 2 (max = 32991)
正在重定位块 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 3236)
正在扫描inode表 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 10)
正在更新inode引用 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/mapper/vg_cs01-lv_home is now 13107200 blocks long.

[root@cs02 /]# mount /home
[root@cs02 /]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/vg_cs01-lv_root
50G 2.1G 45G 5% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
/dev/sda2 485M 37M 423M 9% /boot
/dev/sda1 200M 260K 200M 1% /boot/efi
/dev/mapper/vg_cs01-lv_home
50G 181M 47G 1% /home
[root@cs02 /]# lvreduce -L 50G /dev/mapper/vg_cs01-lv_home
WARNING: Reducing active and open logical volume to 50.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_home? [y/n]: y
Reducing logical volume lv_home to 50.00 GiB
Logical volume lv_home successfully resized
[root@cs02 /]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/vg_cs01-lv_root
50G 2.1G 45G 5% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
/dev/sda2 485M 37M 423M 9% /boot
/dev/sda1 200M 260K 200M 1% /boot/efi
/dev/mapper/vg_cs01-lv_home
50G 181M 47G 1% /home
[root@cs02 /]# vgdisplay
--- Volume group ---
VG Name vg_cs01
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 462.11 GiB
PE Size 4.00 MiB
Total PE 118299
Alloc PE / Size 27572 / 107.70 GiB
Free PE / Size 90727 / 354.40 GiB
VG UUID pNF2xf-FCVn-GRTw-841J-4kJN-V6kg-4ux3OD

[root@cs02 /]# lvextend -L +349G /dev/mapper/vg_cs01-lv_root
Extending logical volume lv_root to 399.00 GiB
Logical volume lv_root successfully resized
[root@cs02 /]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/vg_cs01-lv_root
50G 2.1G 45G 5% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
/dev/sda2 485M 37M 423M 9% /boot
/dev/sda1 200M 260K 200M 1% /boot/efi
/dev/mapper/vg_cs01-lv_home
50G 181M 47G 1% /home
[root@cs02 /]# resize2fs -p /dev/mapper/vg_cs01-lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_cs01-lv_root is mounted on /; on-line resizing required
old desc_blocks = 4, new_desc_blocks = 25
Performing an on-line resize of /dev/mapper/vg_cs01-lv_root to 104595456 (4k) blocks.
The filesystem on /dev/mapper/vg_cs01-lv_root is now 104595456 blocks long.

[root@cs02 /]# resize2fs -p /dev/mapper/vg_cs01-lv_root
resize2fs 1.41.12 (17-May-2010)
The filesystem is already 104595456 blocks long. Nothing to do!
捐赠:喜欢就请我喝一杯
0%