常用Linux命令集锦

常用linux命令:

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

随机数

生成10以内的随机数

echo $RANDOM%10 | bc

生成11-20之间的随机数

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

时间

获取当前系统的时间

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

查看硬件时间

hwclock

修改系统时间

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

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

hwclock --systohc

ip

[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
# 查看日志去除重复
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命令中的时间

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

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

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

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

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命令中的内存使用率

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

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

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

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

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

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

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使用率

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查询结果文件的大小求和

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个数

# 物理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

进程端口

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

[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

根据进程名称查看进程号

[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

根据进程号查看端口

[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  

调整分区大小

[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!

常用Linux命令集锦
https://suncle.me/posts/3933887909/
作者
Suncle Chen
发布于
2019年3月30日
许可协议