Linux系统常用命令汇总【长期更新】

本文包含了工作中日常会用到一些linux命令,总会有一些会忘记,这里也记录一下,文章偏长,建议Ctrl+L搜索关键字查看,保持更新~~

Last updated:2022.8.29

判断是rhel还是centos
cat /etc/*-release
查看系统版本
uname -a
cat /etc/system-release
查看系统内存大小(总数,kb)
cat /proc/meminfo | grep MemTotal
free -m (free -g)
top
查看Linux系统CPU有几个
cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
查看Linux系统CPU是几核
cat /proc/cpuinfo |grep "cores"|uniq
分区后同步分区至内存
partprobe 分区号
    eg:partprobe /dev/sdb1
查看磁盘uuid
blkid
查看系统编码
locale
修改系统编码
centos7:vim /etc/locale.conf
centos6:vim /etc/sysconfig/i18n
每隔多少秒执行一次命令(一般用在跟踪查看集群等服务状态)
watch
    -n	更新之间等待的秒数
eg:watch -n 1 ntpq -p
筛选查看文件或者文件夹
ll |grep "^-"	仅查看文件
ll |grep "^d"	仅查看文件夹
查看网络路由图

用于探测数据包从源到目的经过路由的IP(Windows中命令为tracert)

traceroute 域名
centos6/7网络yum源
centos6:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
centos7:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
centos6/7网络epel源
centos6:
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
centos7:
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum本地安装rpm包
yum localinstall  xxx.rpm(可解决使用rpm -ivh安装时出现的依赖问题)
centos6修改主机名
vim /etc/sysconfig/network
手动配置时间
date -s "2020-05-19 18:11:00"
date -s 18:11:00
linux光标显示与隐藏
隐藏光标
echo -e "\033[?25l" 
显示光标
echo -e "\033[?25h" 
显示秒后边时间(毫秒)
date +%T+%N
firewall添加端口
firewall-cmd --add-port=80/tcp --zone=public --permanent
解决端口被占用问题
查看端口:netstat -lnt 端口号
直接查看端口号及端口号所属进程:lsof -i :端口号(lsof -i :48026)
干掉进程PID:kill -9 进程号
解决Windows文件在Linux中打开乱码问题
yum -y install dos2unix
dos2unix -k 文件名  (将DOS格式文本文件转换成UNIX格式)
参数:
    -k	保持文件时间戳不变
    -n	将修改后文件保存至新文件中,源文件不变
cat 文件名  (检验)
解压压缩命令
tar压缩:
tar -zcvf 文件名.tar(.gz)压缩文件/目录
	eg:tar -zcvf log.tar log

不解压查看内容:
tar -ztvf 文件名.tar

tar解压
tar -zxvf 文件名.tar
 
指定目录解压: 
tar -zxvf 文件名.tar -C 指定目录

去除目录结构解压:
去除压缩文件内一级目录,将一级目录下内容解压到/home/elasticsearch目录下
tar -xvf /home/elasticsearch-6.2.4.tar.gz --strip-components 1 -C /home/elasticsearch

zip解压:
unzip 文件名.zip
将一个大文件分割成几个同等大小的小文件
split -b 500M 文件名

将多个小文件合并成原文件
cat 小文件名* > 原文件名
查看目录下有多少文件
ls |wc -l
检测系统是否安装某些应用
yum list installed | grep **		eg:yum list installed | grep mysql
检测系统是否开启某个端口
telnet ip port 	
eg:telnet 192.168.99.195 22

nc -z ip port 	(查询udp协议层:nc -uz ip port)
eg:nc -z 192.168.99.195 22
grep/egrep筛选并打印文件内字段
grep查看文件中是否包含有指定的字段并打印出来

grep 8080 文件 (查看文件中中含有8080字段的行)

grep -n 8080 文件(确定8080字段在文件中的行数)

grep -n -i "ggpush" 文件 (确定ggpush在文件中的行数并且忽略大小写)

grep 'ggpush' *.cnf (匹配当前目录下所有后缀为cnf文件含有过滤字段的内容)

grep -v '关键字'	(过滤掉指定的日志信息)

eg:
grep -rn '123' *  (递归查询当前目录下所有文件中含有123的文件和行)

egrep '2|5' test 列出含有2或者5的行

egrep '33(2|5)' test 列出包含33,而且后面跟的是2或5的行
查看进程运行时间
ps -p 进程号 -o etimes
创建指定大小的假文件(测试使用)
dd if=/dev/zero of=test.file bs=25MB count=1
删除查询的所有
rm -rf $(ls -a)
vim编辑中批量替换字符串
:%s/1/2/g		把文件中“1”全部替换为“2”
vim编辑中删除不包含指定字符串的行及统计匹配个数
:g/INSERT/d 是找到INSERT, 删之
:v/INSERT/d 是找到非INSERT, 删之
:%s/INSERT//gn,统计INSERT个数,n表示只报告匹配的个数而不进行实际的替换。
删除除a之外的文件
eg:删除a之外的所有文件
rm -rf !(a)
删除a和b之外的所有文件
rm -rf (a|b)
如果出现-bash: !: event not found
eg:[root@localhost jenkins]# rm -rf !(jenkins.war)
 -bash: !: event not found
  执行shopt -s extglob即可
批量替换多个文件中的字段
eg:/home/目录中有test1,test2文件,需将所有文件中的“ccc”替换为“rr”
    	内容分别是:test1:aabbcc	test2:ccddee
命令为:sed -i "s/cc/rr/g" `grep cc -rl ./`
其中,
cc为原字符串
rr为目标字符串
-rl是递归查找所有包含字符串cc的文件
批量替换文件中从A到C的范围内容
eg:一个文件中含有字段为“A12342543656C”,需要将这些内容替换为“ABC”
命令为:sed -i 's/A\(.*\)C/ABC/g'
其中,
\(.*\)为A到C之间的全部字段
筛选字段在某行前加入一行或行后加入一行
在test.sh文件中包含的1111字段的行前加入新的一行2222
sed -i "/1111/i\2222" /root/test.sh	

在test.sh文件中包含的1111字段的行前加入新的一行3333
sed -i "/1111/a\3333" /root/test.sh	
批量删除多少天之前的目录或者文件
find ./ -maxdepth 1 -type d -mtime +30|xargs rm -rf

-maxdepth 1		代表搜索最大深度为1(2:可搜索目录下内容)
-type d 		代表查询的为目录(d:目录;f:普通文件)
-mtime +30 		代表30*24即30天以前的文件或者目录,相应可自行修改
centos安装ping命令
yum provides "*/ping"	使用provides检测哪个软件包里含有ping命令

可以看到好几个软件包都包含这个命令,但 iputils 最像是要找的软件包,直接yum安装
yum -y install iputils
即可使用ping命令 ^.^
永久挂载光盘
修改/etc/fstab
/dev/sr0        /mnt/storage            udf,iso9660     defaults        0 0
df和fdisk显示磁盘大小不一致

这个问题一般是因为文件系统和分区大小不一致导致的

resize2fs使文件系统filesystem与partition保持一致从而提升空间。
$ resize2fs /dev/sda1	(指定问题分区即可)
mount挂载nfs
mount -t 192.168.x.x:/opt/test /mnt/test123

mount参数介绍
(1)-a:把/etc/fstab中列出的路径全部挂载。
(2)-t:需要mount的类型,如nfs等。
(3)-r:将mount的路径定为read only。
(4)-v mount:过程的每一个操作都有message传回到屏幕上。
(5)rsize=n:在NFS服务器读取文件时NFS使用的字节数,默认值是1 024个字节。
(6)wsize=n:向NFS服务器写文件时NFS使用的字节数,默认值是1 024个字节。
(7)timeo=n:从超时后到第1次重新传送占用的1/7秒的数目,默认值是7/7秒。
(8)retry=n:在放弃后台mount操作之前可以尝试的次数,默认值是7 000次。
(9)soft:使用软挂载的方式挂载系统,若Client的请求得不到回应,则重新请求并传回错误信息。
(10)hard:使用硬挂载的方式挂载系统,该值是默认值,重复请求直到NFS服务器回应。
(11)intr:允许NFS中断文件操作和向调用它的程序返回值,默认不允许文件操作被中断。 (12)fg:一直在提示符下执行重复挂载。
(13)bg:如果第1次挂载文件系统失败,继续在后台尝试执行挂载,默认值是失败后不在后台处理。
(14)tcp:对文件系统的挂载使用TCP,而不是默认的UDP。

开机状态下识别新添加硬盘
echo "- - -" > /sys/class/scsi_host/host0/scan

如果/sys/class/scsi_host/下有多个host文件,那么每个都需要修改,以此来重刷设备信息
可以直接执行此命令(亲测可用)

for i in `ls /sys/class/scsi_host/`; do echo "- - -" > /sys/class/scsi_host/$i/scan; done
检测命令执行的过程
strace <要检测命令>
	eg:strace ls
根据进程PID查看进程工作目录
pwdx <pid>
	eg:pwdx 35560
查看一行的json文件(将打包的json文件转换格式查看)
方法1、cat product-tcs-base.json | python -m json.tool
方法2、cat product-tcs-base.json | jq .
jq安装方式:
 #yum install -y jq 
 或wget -O jq https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 chmod +x ./jq cp jq /usr/bin
简洁修改用户密码
方法一:echo "username:password" | chpasswd
方法二:echo password | passwd --stdin username
将文本文件内容排序
正序排列
sort file.txt		--将文件中第一列,以ASCII 码的次序排列(abcdefg..顺序)
    sort file.txt -k 2      --将文件中第一列,以ASCII 码的次序排列
反向排列
sort -r file.txt
删除文本中重复行后输出
格式:uniq testfile
     cat testfile |uniq 
    eg:
    $ cat testfile
        test 30  
        test 30  
        test 30  
        Hello 95  
        Hello 95  
    $ uniq testfile
       test 30
       Hello 95 
检查文件并删除文件中重复出现的行,并在行首显示该行重复出现的次数  
uniq -c testfile 
    $ uniq -c testfile      #删除重复行后的内容  
        3 test 30             #前面的数字的意义为该行共出现了3次  
        2 Hello 95            #前面的数字的意义为该行共出现了4次 
如果两个重复行不相邻,那么uniq无效,所以通常和sort联合使用
    eg:cat testile |sort |uniq     
批量配置crontab定时任务
$ ansible all -m cron -a "name=ntpdate minute=2 job='ntpdate 10.2.200.55'"
[root@localhost ~]# crontab -l
#Ansible: ntpdate
2 * * * * ntpdate 10.2.200.55

-----------扩展----------
批量禁止crontab定时任务
不加后边disable,默认就是disable=no,即默认开启状态
$ ansible all -m cron -a "name=ntpdate minute=2 job='ntpdate 10.2.200.55' disabled=yes"
$ crontab -l
#Ansible: ntpdate
#2 * * * * ntpdate 10.2.200.55
批量删除crontab定时任务
ansible all -m cron -a "name='ntpdate' state=absent"
ansible批量拷贝文件
ansible test -m copy -a "src=/root/ntp.conf dest=/etc/ntp.conf backup=yes"
参数解析:
src:要拷贝的文件在本地的绝对路径
dest:要拷贝到远端服务器中存放文件的绝对路径
backup:拷贝过去时,是否备份原文件(自动备份在文件当前位置,加时间戳后重命名)
ansible批量启动服务
ansible test,test1 -m service -a "name=ntpd state=restarted enabled=1
ansible批量安装软件
ansible -i byz_ansible_hosts csp-mon,csp-osd -m yum -a "name=nc state=latest"
处理umount卸载盘时目标忙问题
[root@localhost mnt]# fuser -mv /mnt/disks/
                     用户     进程号 权限   命令
/mnt/disks:          root     kernel mount /mnt/disks
                     test     68635 ..c.. bash
您在 /var/spool/mail/root 中有邮件
[root@localhost mnt]# kill -9 68635
[root@localhost ~]# fuser -mv /mnt/disks/
                     用户     进程号 权限   命令
/mnt/disks:          root     kernel mount /mnt/disks
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# umount /mnt/disks/
lvm创建/删除pv/vg/lv
pvcreate /dev/nvme0n1	创建pv
pvs	查看已存在的pv
pvremov /dev/nvme0n1	删除pv

vgcreate data_vg /dev/nvme1n1	创建vg
vgs	查看已存在的vg
vgremove 删除vg

lvcreate -L 3T -n hdfsdata1_lv hdfsdata_vg	创建lv(3T大小,名字是hdfsdata1_lv)
lvcreate -l 100%Free -n hdfsdata2_lv hdfsdata_vg  创建一个所有剩余空闲空间的lv
lvcreate -l 100%VG -n data_lv data_vg   创建一个使用所用vg空间的lv
lvs 查看已存在的lv
lvremove data_lv data_vg	删除lv
xargs和mv联合使用
命令格式:ls / | xargs -i mv {
    
    } ../
示例:
将当前目录下不含有kube-jar字段的文件移动到其他目录中
ls |grep -v kube-jar |xargs -i mv {
    
    } /root/product-tke-rawimages/software_bak/
grep筛选时包含或不包含隐藏文件
隐藏文件即.bashrc等文件名前加“.”的文件
筛选时包含隐藏文件
grep "aaaa" /home/test
筛选时不包含隐藏文件
grep "aaaa" /home/test/*
------------
这就相当于“.”和“*”的区别
(/home/test/相当于/home/test/.)
“.”是代表选择目录下所有文件,“*”代表选择目录下非隐藏的正常文件
查看硬盘或者分区的文件系统类型
[root@TENCENT64 ~]# file -s /dev/nvme1n1
/dev/nvme1n1: Linux rev 1.0 ext4 filesystem data, UUID=e9cc0f39-9e76-46a4-9e87-04536f2a31a4 (extents) (64bit) (large files) (huge files)
查看硬盘是SSD还是HDD
[root@TENCENT64 ~]# lsblk -d -o name,rota
NAME    ROTA
sda        0
sdb        1
sdc        1
nvme0n1    0
nvme1n1    0

------------输出含义-------------
ROTA为1,代表硬盘可旋转,即为HDD;为0,代表硬盘不可旋转,即为SSD
检测和服务器udp协议端口是否正常通信
nc -vuz IP port
检查带宽使用情况(可查进程)
安装:yum -y install nethogs  (需要配置epel源)
使用示例:nethogs eth0 -d 5
参数解析:
    -d : 刷新间隔 
    -h : 帮助 
    -p : promiscious 模式 
    -t : trace模式 -V : 版本
交互命令(当执行nethogs eth0时,直接输入以下命令)
    m : 修改单位 
    r : 按流量排序 
    s : 按发送流量排序 
    q : 退出命令提示符
Linux中Tab键补全命令软件包
yum -y install bash-completion
根据进程PID号查看软件的工作目录
pwdx {pid}
fdisk非交互式创建盘分区(一条命令创建分区)
创建一个fdisk调用的文件,空的一行代表默认,n/p/w/q代表交互式输入的创建退出等命令
cat fdisk.txt
n
p


+300G
w
q
使用刚创建的文件创建盘分区
fdisk /dev/vdb < fdisk.txt
查Linux系统内CPU占用前十的进程
ps axu |head -1;ps aux |grep -v PID |sort -rn -k +3 |head
查Linux系统内内存占用前十的进程
ps axu |head -1;ps aux |grep -v PID |sort -rn -k +4 |head
bashrc中配置kube exec别名
$ cat /root/.bashrc
function ke ()
{
/data/deploy/bin/kubectl --kubeconfig  /data/deploy/delivery/test/rke/test/kube_config_cluster.yml -n test-rcrai exec -ti $1 -- bash
}
$ source /root/.bashrc
自动/手动配置免密
A免密连接B:

A生成秘钥:
$ ssh-keygen
已知密码情况下自动拷贝:
ssh-copy-id admin@目标IP地址

未知密码(堡垒机连接)手动配置:
1、复制当前服务器A下生成的~/.ssh/id_rsa.pub中内容
2、在服务器B的~/.ssh/目录下创建authorized_keys文件,将上一步复制内容粘贴进去即可

注:目录及文件名的权限一定不要设置为777(否则配置无法生效)
用户admin家目录和.ssh目录权限为700;authorized_keys为600
yum仅下载不安装(解决包依赖问题)
两种方法:
    1、yum install {package_name} --downloadonly --downloaddir=/root/test
    2、yumdownloader --resolve --destdir {存放路径} {软件包}
示例:
    1、yum install docker-ce --downloadonly --downloaddir=/root/test
    2、yumdownloader  --resolve --destdir /root/test docker-ce docker-ce-cli containerd.io

蹚坑提醒:强烈建议第一种!!!因为他是可以包含需要下载的依赖包,第二种,只会去打包本地已经有的依赖包  
vim中批量替换
:%s/test/123/g
或者
:%s#test#123#g
linux中批量修改/替换文件名
命令格式:rename 原名 替换名 要改的文件
eg:
$ ls
1-1.zip 1-2.zip
$ rename - _ *
$ ls
1_1.zip 1_2.zip

如果哪里有误,欢迎指正,一起学习~~

未完待续……

猜你喜欢

转载自blog.csdn.net/weixin_43860781/article/details/110933882