常用的Linux命令

背景

常用Linux命令

文本处理

  • 文件按固定行数切分
split -l 20 cn-hangzhou.csv cn-hangzhou-

问题是: 生成的文件都是没有后缀名的, 如下可以使用xargs, 统一增加后缀名, 如下:

  • mac:
split -l 20 cn-hangzhou.csv cn-hangzhou- && ls | grep cn-hangzhou- | xargs -n1 -I{} mv {} {}.txt
  • linux:
split -l 20 cn-hangzhou.csv cn-hangzhou- && ls | grep cn-hangzhou- | xargs -n1 -i{} mv {} {}.txt
  • 文件按照某列进行排序
sort -n -k 1 -t , sample.csv
  • 文件查看某列去重数据
awk -F',' '{print $1}' sample.csv | sort -n | uniq
  • 计算文件中相同的行数量, 并按照数量倒序排列:

todo:

  • grep正则表达式
    grep正则表达式元字符集(基本集)
    ^锚定行的开始 如:’^grep’匹配所有以grep开头的行。
    $锚定行的结束 如:’grep$’匹配所有以grep结尾的行。

  • JSON处理

jq
  • 计算文件md5值
  • Linux:

    md5sum a.txt
  • Mac:

    md5 a.txt
  • 创建空的大文件(全被0占据的文件, 而非打洞)
fallocate -l 50M /data/web/www/html/b.zip
## -l: 指定文件的长度

目录管理

  • 查看目录大小
sudo du -h --max-depth=1 /home/admin/
  • 查看目录下文件大小
du -sh * | sort -nr | head
du -sh * | sort -nr | fgrep "G" | head
  • 查看目录下特定文件类型
# 使用正则, 如下查找出块设备 
[root@localhost dev]# ls -ltrh | grep '^b'
  • 查看当前shell的进程PID
(base) MacBook-Pro:qos davywalker$ echo $$
66549

系统管理

top

进程排序

  • 以 CPU 占用率大小的顺序排列进程列表
    • top进入之后, 按P
    • 或者 top -o %CPU
  • 以内存占用率大小的顺序排列进程列表
    • top进入之后,按M
    • 或者 top -o %MEM
  • 以总共消耗的CPU时间片排序
    • top进入之后,按T
    • top -o +TIME
  • 单独查看某个进程的CPU消耗情况
    top -p $PID

线程排序

  • 查看某个进程下各个线程CPU占用情况,倒序排列
    • top -Hp ${pid} -o %CPU
  • 查看某个进程下各个线程内存占用情况,倒序排列
    • top -Hp ${pid} -o %MEM
  • 查看某个进程下各个线程CPU时间片占用情况,倒序排列
    • top -Hp ${pid} -o +TIME

centOS yum源路径

/etc/yum.repos.d/

进程&网络管理

  • 查看端口被哪个进程占用了
lsof -i:${port}
netstat -natp | fgrep ${port}
  • 根据进程号, 查看进程占用了哪些tcp端口
netstat -natp | fgrep ${pid}
sudo lsof -i -P | fgrep ${pid}
  • 查看进程信息:
ps aux | fgrep ${pid}

用户管理

  • 锁定用户:
sudo passwd -l username
  • 查看用户是否被锁定:
sudo passwd -S username
sudo passwd --status interlive
  • 或者看下密码前边是否有 “!!” 标记, 如果有, 则证明被标记了
sudo fgrep "interlive" /etc/shadow

绑核

  • 查看进程绑核情况
taskset -p $PID
taskset -cp $PID
davywalker@davywalker-ThinkPad-X1-Carbon-4th:~/Downloads/Clash-Linux$ taskset -p 20697
pid 20697's current affinity mask: f
davywalker@davywalker-ThinkPad-X1-Carbon-4th:~/Downloads/Clash-Linux$ taskset -cp 20697
pid 20697's current affinity list: 0-3
  • 执行进程绑核操作
taskset -p COREMASK PID

磁盘操作

查看块设备(包括已分区与未分区的)

root@OpenWrt:~# lsblk
NAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1       259:0    0 465.8G  0 disk
├─nvme0n1p1   259:1    0    16M  0 part /boot
│                                       /boot
├─nvme0n1p2   259:2    0   500M  0 part /rom
├─nvme0n1p3   259:3    0   128G  0 part /overlay
├─nvme0n1p4   259:4    0   128G  0 part /mnt/nvme0n1p4
├─nvme0n1p5   259:5    0   128G  0 part /mnt/nvme0n1p5
├─nvme0n1p6   259:6    0  81.3G  0 part /mnt/nvme0n1p6
└─nvme0n1p128 259:7    0   239K  0 part

查看分区的文件系统类型

root@OpenWrt:~# parted -l
Model: WD Blue SN570 500GB SSD (nvme)
Disk /dev/nvme0n1: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
128     17.4kB  262kB   245kB                      bios_grub
 1      262kB   17.0MB  16.8MB  fat16              legacy_boot
 2      17.0MB  541MB   524MB
 3      542MB   138GB   137GB   ext4
 4      138GB   275GB   137GB   ext4
 5      275GB   413GB   137GB   ext4
 6      413GB   500GB   87.2GB  ext4

为块设备分区

为分区格式化文件系统类型

其他

查看centos版本

[root@localhost ~]# rpm --query centos-release
centos-release-7-9.2009.0.el7.centos.x86_64

查看Linux内核版本

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux