Linux常用命令大合集(持续更新)

admin
2025-05-25 / 0 评论 / 23 阅读 / 正在检测是否收录...


前言:Linux的各项命令与用法非常多,不同的发行版命令还不一样,我们不需要全部掌握,在实际工作中常用的命令与用法其实就那么几类,我们以RedHat系列Centos发行版为例。。


系统基础软件:


关于帮助类:

help (获取简要的帮助信息)

  • 内部命令: help xxx
  • 外部命令: xxx --help 简化xxx --h
    或者直接打出命令 如:docker 会自动打印出使用说明

怎么区分一个命令是内部命令还是外部命令?

type xxx (type命令用来显示指定命令的类型)

  • 1) xxx is a shell builtin 为内部命令
  • 2) /xxx/xxx 外部命令显示为一个命令的路径如:各种软件的主程序路径


man / info (获取帮助文本文档) 详细带翻页

  • man xxx
  • info xxx
    ctrl + z 结束


关于命令补全:

  • TAB 使用tab进行命令补全
  • 双击 TAB 列出将要进行的命令


查找命令:find

  • find / -name mysql 查询根目录下所有包含mysql字符的文件 对于查询配置文件与安装目录十分方便
  • find / -user abc 查询abc用户的文件/目录
  • find / -size +100M (100K 500M) 查找根目录下所有大于100M的文件
  • find /var/log/ -name *.log -exec rm -f {} \; 查找对应目录下所有log文件并执行删除(无提醒)
  • find /var/log -type f -name "*.log" -mtime +10 -exec rm -f {} \; 查找目录下10日以前的log文件并删除它们
  • for i in $(find /www/wwwlogs/pm2 -name "*.log"); do cat /dev/null >$i; done 批量清空某目录下的所有log
  • find /root/.pm2/logs -name *.log | cut -d "/" -f 5 查看以/分割的第五列日志名
  • find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件


关于系统:

  • shutdown -h now 关闭系统
  • init 0 关闭系统
  • telinit 0 关闭系统
  • poweroff 立刻关机
  • shutdown -h 10 10分钟后关机
  • shutdown -h hours:minutes & 按预定时间关闭系统 shutdown -h 11:00
  • shutdown -c 取消按预定时间关闭系统
  • shutdown -r now 重启
  • reboot 重启
  • init 6 重启
  • logout 注销
  • init 5 图像界面
  • init 3 命令行界面
  • sync buff数据同步到磁盘 常组合使用 sync && shutdown -h now


系统日志:( 可以通过cat less more或tail 命令来查看)

  • tail -f /var/log/messages 实时日志查看
  • tail -n 100 /var/log/messages 查看最后100行
  • /var/log/messages 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
  • /var/log/secure 与安全相关的日志信息
  • /var/log/maillog 与邮件相关的日志信息
  • /var/log/cron 与定时任务相关的日志信息
  • /var/log/spooler 与UUCP和news设备相关的日志信息
  • /var/log/boot.log 守护进程启动和停止相关的日志消息
  • /var/log/lastlog 所有用户最近登录的信息
  • /var/log/wtmp 当前和曾经登录过的信息
  • /var/log/utmp 曾经尝试登陆但失败的日志


查看系统信息:

  • uname -a 查看内核/OS/CPU信息
  • uname -r 只查看内核版本
  • cat /etc/redhat-release 查看操作系统版本
  • cat /proc/cpuinfo 查看CPU信息
  • hostname 查看计算机名
  • lspci (-tv) 列出所有PCI设备 (包括显卡)
  • date 查看系统时间
  • ntpdate cn.ntp.org.cn 同步系统时间
  • lsmod 列出当前加载的内核模块
  • lsmod | grep bbr 过滤bbr模块
  • env 查看环境变量
  • who -r 查看系统运行级别
  • whoami 查看当前登录的用户


查看系统资源:

  • free -m 查看内存使用量和交换区使用量
  • swapon -s 查看所有交换分区
  • df -h 查看各分区使用情况 ( df -hT 包括文件格式 如:xfs或者ext4)
  • df -i 查看inode使用情况 inode个数决定了该分区可以创建的文件个数 如果inode满磁盘不满也不能创建文件了
  • grep MemTotal /proc/meminfo 查看内存总量
  • grep MemFree /proc/meminfo 查看空闲内存量
  • cat /proc/loadavg 查看系统负载
  • uptime 查看系统运行多久 用户使用情况 系统负载信息
  • top 查看cpu负载 进程
  • ps -auxf | sort -nr -k 4 | head -10 找出占用内存资源最多的前 10 个进程
  • ps -auxf | sort -nr -k 3 | head -10 找出占用 CPU 资源最多的前 10 个进程


关于磁盘和分区:

  • lsblk 列出所有可用块设备的信息和结构
  • fdisk -l 查看所有分区(块级显示 包括未分区的磁盘信息 默认是mbr分区) gdisk -l (GPT分区)
  • fdisk /dev/sdb 对磁盘进行分区 (n---p---w) (mbr分区)
  • parted /dev/sbc 对磁盘进行高级分区 (mklabel gpt、mkpart primary 0 -1/5TB、I、q) (GPT分区)
  • mkfs -t ext4 /dev/sdb1 ext4格式化sdb1
  • mkfs.xfs /dev/sdb1 xfs格式化sdb1
  • df -h 查看各分区使用情况
  • df -hT 包括文件格式 如:xfs或者ext4
  • mount /dev/sdb1 /mnt 将 /dev/sdb1 挂在 /mnt之下
  • mount -t xfs /dev/sdc1 /mnt/usbhd1 指定文件系统挂载
  • mount -o ro /dev/hda1 /mnt 将 /dev/hda1 用只读模式挂在 /mnt 之下
  • mount -o loop xxx.iso /mnt/cdrom 挂载iso⽂件
  • mount | column -t 查看挂接的分区状态
  • umount -v /dev/sda1 通过设备名卸载挂载
  • umount /mnt/abc 通过挂载点/文件夹名卸载挂载
  • dmesg | grep IDE 查看启动时IDE设备检测状况
  • dmesg | grep -i sda 查看整个sda磁盘
  • du -sh xxx 查看某个文件夹或者文件大小
  • du -sh * . 查看当前目录下所有文件的大小
  • du -sk * | sort -rn 从高到底依次显示文件和目录大小
  • lvdisplay 查看lv信息
  • vgdisplay 查看vg信息
  • pvdisplay 查看pv信息


关于网络:

  • ifconfig 查看所有网络接口
  • ifconfig eth0 查看某网卡的配置
  • ip addr show / ip a / ss (centos7) ipconfig (win) 查看所有网络接口
  • iptables -L 查看防火墙设置 -F 清除设置
  • route -n / ip route 查看路由表
  • netstat -nr 查看路由表(mac os)
  • netstat -ntlp 查看所有tcp端口
  • netstat -ntulp 查看所有已经建立的连接 (tcp udp)
  • netstat -an | grep 80 过滤某个端口的网络信息
  • netstat -ap | grep nginx 过滤某个应用的网络信息
  • netstat -s 查看网络统计信息
  • netstat -n | grep tcp | grep 侦听端口 | wc -l 监控某个tcp端口网络客户连接数
  • netstat -pnt |grep :3306 |wc -l //查看某一端口的连接数量,比如3306端口
  • netstat -anp |grep 3306 //查看某一端口的连接客户端IP 比如3306端口
  • ping URL 测试网络连通性
  • systemctl restart network 重启网卡
  • service network restart 重启网卡
  • ifconfig eth0 up ifconfig eth0 down 启⽤/禁用eth0⽹络设备
  • ifup eth0 ifdown eth0 启⽤/禁用eth0⽹络设备
  • traceroute proxy.ncku.edu.tw 用来路由追踪
  • curl URL 获取网页源代码 -v查看详情 curl -v url
  • curl -v ipinfo.io 获取本网卡外网ip地址
  • ssh -p 端口 用户名@主机 非22端口非root的登陆
  • scp 目录 root@ip:目录 远程复制-r递归
  • scp -P 端口 目录 root@ip:目录 指定ssh端口远程复制
  • nslookup www.kimo.com 用來查詢或反查詢 DNS 的指令
  • telnet ip port 用了查看端口的连通性 (需要安装telnet yum install telnet -y)
  • tcpdump host 168.63.129.16 对于某个ip进行网络抓包
  • tcpdump -i eth0 tcp port 3306 and -n host 168.63.129.16 对于本地网卡端口与对方的ip进行抓包
  • tcpdump tcp port 3306 and host 168.63.129.16 对方ip连接的本地3306端口的网络包
  • ip route show 或者 route -n 查看路由情况

添加路由(临时)

  • ip route add 192.168.8.0/24 via 192.168.8.1 dev em1
  • ip route add 10.0.0.0/24 via 10.0.0.1 dev em2

删除路由

  • ip route del 10.0.0.0/24 via 10.0.0.1 dev em2
  • ip route del 169.254.0.0/16
  • ip route del default via 10.0.0.1

增加永久路由

  • 在/etc/sysconfig/network-scripts/ 增加一下文件,命名规则为 route-网卡名
  • 10.15.150.0/24 via 10.10.10.1 dev eth0


关于进程:

  • top 实时显示进程状态 相当于win任务管理器
  • top排序 cpu使用按大P排序 内存按大M排序
  • top -H -p 32123 查看按照线程分隔好的进程统计信息 -p选择指定 pid
  • ps -ef 或者ps -aux 查看所有进程信息
  • ps -aux | grep java 显示所有java进程状态包括程序路径
  • ps -ef | grep java 表示查看所有进程里 java 的进程信息
  • ps -efL | grep java | wc -l 统计java线程数
  • pstree -a -u -p httpd 显示httpd的父子进程 参数 程序路径等等更加详细的进程信息
  • kill -9 [PID号] kill 命令用于终止进程,-9 表示强迫进程立即停止
  • kill -9 $(lsof -i:10300 -t) 杀掉所有10300端口的进程
  • pkill mysql 终止mysql进程 pkill后面跟进程名字
  • lsof -i:8080 是用于查看监听或占用8080端口的进程信息
  • lsof -p 进程号 列出指定进程号所打开的文件


关于服务:

  • chkconfig –list 列出所有系统服务
  • systemctl list-unit-files (centos7)
  • chkconfig –list | grep on 列出所有开机启动的系统服务
  • systemctl list-unit-files | grep on (centos7)
  • chkconfig nginx on/off nginx加入开机启动
  • systemctl enable (disable) nginx (centos7)
  • service nginx start/stop/restart/status
  • systemctl start/stop/restart/status nginx (centos7)
  • user/local/sbin/nginx 或 nginx 启动nginx


关于安装应用程序:

  • rpm -ivh example.rpm 安装rpm包软件
  • rpm -Uvh example.rpm 升级/安装rpm包软件
  • rpm -qa 查看所有安装的软件包
  • rpm -qa | grep php 或 rpm -qa | grep -i php 查看指定的php软件安装包
  • whereis nginx 查看nginx的安装路径
  • rpm -qi ftp 查看ftp的安装详细信息
  • rpm -qc mysql 查看mysql配置文件信息
  • rpm -e --nodeps xxx 强制卸载软件包并卸载所有关联软件


关于包管理工具:(yum dnf apt apt-get)

  • yum -y update 升级所有软件包 dnf update apt update
  • yum -y install xxx 安装xxx apt dnf
  • yum search xxx 搜索xxx软件包
  • yum update xxx 升级xxx apt dnf
  • yum list xxx 列出xxx yum list | grep xxx apt dnf
  • yum remove xxx 删除xxx apt dnf


关于防火墙:

centos6

  • /etc/init.d/iptables status / service iptables status 查看防火墙状态与端口
  • service iptables start / restart / stop 开启 / 重启 / 停止 防火墙
  • chkconfig iptables on / off 开机 启动 / 关闭 防火墙
  • /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT /(DROP) 开启(关闭)80端口 tcp/udp
  • /etc/init.d/iptables save 保存修改
  • service iptables restart 重启防火墙,修改生效

centos7

  • systemctl status firewalld / firewall-cmd --state 查看防火墙状态
  • systemctl start(stop restart) firewalld.service 开启 / 重启 / 停止 防火墙
  • systemctl enable(disable) firewalld.service 开机 启动 / 关闭 防火墙
  • firewall-cmd --permanent --zone=public --add-service=https 启用https服务
  • firewall-cmd --permanent --zone=public --add-port=80/tcp 开启80端口

查看开启的端口和服务

  • firewall-cmd --permanent --zone=public --list-services //服务空格隔开 例如 dhcpv6-client https ss
  • firewall-cmd --permanent --zone=public --list-ports //端口空格隔开 例如 8080-8081/tcp 8388/tcp 80/tcp

防火墙配置文件修改

  • vim /etc/firewalld/zones/public.xml
  • firewall-cmd –reload 重新加载防火墙
  • firewall-cmd --add-rich-rule="rule family="ipv4" source address="10.9.9.6" accept" 允许某个ip的所有流量通过
  • iptables -L -n -v 查看iptables 底层服务详情 (6-7 通用)
  • iptables -F 清空防火墙所有配置 (6-7 通用)

setenforce配置

setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config


关于文件与目录:

  • ls 列出当前目录下所有文件
  • ls -a 列出当前目录下所有文件包含隐藏
  • ls -l / ll 列出当前目录下所有文件和其详细信息
  • ls -R 连同子目录的内容一起列出(递归列出)
  • tree 查看⽂件和⽬录的树形结构 (如果没有需要先安装 yum install tree)
  • cd 进入/退出某个目录
  • cd /home 进入home目录
  • cd .. 返回上一层目录
  • cd / 返回主目录
  • . .. .表示当然目录 ..表示上层目录
  • pwd 用于显示用户当前所在的路径、目录
  • touch abc.txt 新建一个abc.txt文件
  • mkdir abc 用于新建一个abc目录
  • mkdir abc def 同时创建多个目录
  • mkdir -p /tmp/dir1/dir2 创建一个目录树
  • rmdir dir1 用于删除一个空目录
  • rm 用于删除目录和文档
  • rm -rf xxx/xxx 强制删除一个目录和文档
  • cp 用于复制文件/目录到其他路径下
  • cp 路径 路径 把一个目录下的文件复制到另一个目录下
  • cp -r 递归复制,包含内部子文件夹
  • cp -a 将文件的特性一起复制
  • mv 用于移动档案到其他目录,相当于剪切或者对当前文件重命名
  • mv old_dir new_dir 重命名/移动⽬录 -f 就是force的意思,忽略不存在的文件,不会出现警告消息
  • ln -s file1 link1 创建指向⽂件/⽬录的软链接
  • scp 用于两台liunx之间互传文件
  • scp ./ilanni.tar.gz root@192.168.1.102:/ks
  • rsync 用于本地间、服务器间文件同步
  • rsync /ks root@192.168.1.102:/ks rsync aa/ bb/
  • rsync --delete 强一致性同步
  • rsync -r -v aa/ bb/ --delete aa文件夹同步给bb文件夹 bb原有文件删除
  • echo "" > nohup.out / echo > /xxx.log 快速清空一个文件
  • cat /dev/null > /var/log/yum.log 快速清空一个文件
  • whereis nginx 查找nginx的位置
  • cat xxx 查看文件内容 一次性显示整个文件的内容 -n 输出行数
  • cat filename | head -n 3000 | tail -n +1000 显示1000行到3000行
  • more xxx 查看文件内容 提供翻页的功能 Enter向下1行 空格显示下一页 ctrl+B显示上一页(有时可以)
  • less xxx 查看文件内容 比more更强大 上下翻页[pageup] [pagedown] (u b) 空格翻页
  • wc -l file1.txt 统计文件内容行数
  • comm -1 file1 file2 ⽐较两个⽂件的内容(去除’file1’所含内容)
  • comm -2 file1 file2 ⽐较两个⽂件的内容(去除’file2’所含内容)
  • comm -3 file1 file2 ⽐较两个⽂件的内容(去除两⽂件共有部分)
  • sort file1 以降序对文件内容排序
  • sort -r names.txt 以升序对文件内容排序
  • sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
  • sort file1 file2 | uniq -u 删除交集,留下其他的行
  • sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)


关于用户与组:

  • groupadd group_name 创建一个新用户组
  • groupdel group_name 删除一个用户组
  • useradd user1 创建一个新用户
  • useradd -m -d /home/abc -s /bin/bash abc 创建abc用户 家目录/home/abc shell用bash
  • userdel -r user1 删除一个用户 ( '-r' 同时删除除主目录)
  • passwd user1 修改一个用户的口令 (只允许root执行)
  • usermod -g group_name user_name 修改用户的组
  • usermod -aG group_name user_name 将用户添加到组
  • usermod -s /bin/ksh -d /home/codepig –g dev ss 修改用户 ss 的登录 Shell、主目录及用户组
  • w 表示正在登陆的使用的信息
  • who who表示系统已存在的信息
  • whoami 当前是哪个用户
  • id <用户名> 查看指定用户信息
  • last 查看用户登录日志
  • cut -d : -f 1 /etc/passwd 查看系统所有用户
  • cat /etc/passwd | cut -d : -f 1 查看系统所有用户
  • cut -d : -f 1 /etc/group 查看系统所有组
  • cat /etc/group | cut -d : -f 1 查看系统所有组
  • crontab -l 查看当前用户的计划任务 -e 为直接编辑计划任务
  • sudo 命令 非root用户 携带root权限 执行命令
  • sudo su xxx 只是切换用户 没有带设置的环境变量
  • sudo su - xxx 切换用户 并带着环境变量 如果切换root简写为 sudo su –
  • sudo su root 从当前用户切换到root而不需要知道root密码
  • sudo -u abc 命令 用abc用户执行命令


关于权限:

  • chmod u+x,g+w,o+x abc.txt 给某个文件添加删除权限(u代表所属用户 g代表所属组 o代表其他用户)
  • chmod 777 abc.txt 用十进制的方法 添加删除权限 777 775 755
  • chmod a+x abc.sh 给文件执行权限 (脚本常用) -x 则去掉执行权限
  • chown root:root install.log 修改文件所属用户与组
  • chown -R www:www xxx 带递归包含内部子文件夹


关于打包和解压缩:

各参数:

  • -c :新建打包文件
  • -x :解打包或解压缩的功能
  • -z :通过gzip的支持进行压缩/解压缩
  • -v :在压缩/解压缩过程中,将正在处理的文件名显示出来
  • -f filename :filename为要处理的文件
  • -C dir :指定压缩/解压缩的目录dir
  • tar -zcf 1.tar /abc 将abc目录下所有文件打包为1.tar tar只打包
  • tar -zcvf jpg.tar.gz *.jpg 加-v表示输出过程
  • tar -zcvf img.tar.gz img1 img2 将img1和img2两个文件夹打包并压缩成img.tar.gz gz以gzip方式压缩
  • tar -zvf file.tar 解压 tar包
  • tar -zxvf file.tar.gz 解压tar.gz包
  • tar -zxvf xxxx.rar.gz 解压缩某个rar包
  • tar -zxvf aaa.tar.gz -C 目录 解压到指定目录
  • tar -tf aaa.tar.gz 在不解压的情况下查看压缩包的内容
  • tar -jxvf file.tar.bz2 解压tar.bz2包
  • tar -jvf xxx.tar.bz2 *.jpg 将所有jpg文件压缩并打包为 xxx.tar.bz2
  • zip -r aaa.zip /home 将home目录以zip压缩的方式压缩为aaa.zip -r为递归
  • unzip aaa.zip 解压aaa.zip
  • unzip -o /aaa.zip -d /home 将aaa.zip 解压到home下 -d指定目录 -o强制覆盖
  • tar zcvf www.tar.gz .[!.] 打包所有包括隐藏文件(此为在目录内打包,推荐直接打包外层目录就会打包所有文件包括隐藏)


vim:(编辑文档)

  • vim xxx.conf 编辑文件
  • vim +20 xxx.conf 编辑文件并跳到第20行
  • gg: 跳至文件首行
  • G: 跳至文件末行
  • ^ 或 0: 跳到行首
  • $: 跳到行尾
  • dd : 删除光标所在的那一整行
  • yy: 复制光标所在的那一行
  • yyp:复制当前行并粘贴到下一行
  • /xxx 正向搜索xxx字符
  • i : 进入编辑模式 左下角显示 --INSERT--
  • u: 撤销操作
  • esc: 退出编辑模式
  • :wq! 强制保存
  • :q! 不保存强制退出


环境变量设置:

查询系统环境变量

echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

直接运行命令时,系统就会从上面的目录依次挨个进行查找是否存在这个命令 (靠前的优先级更高)

设置环境变量

  • 软连接 (在使用ln -s命令时,注意使用绝对路径)

ln -s /xxx/xxx/bin/xxx /usr/bin/xxx 把命令做成一个软连接 链接到其中的/usr/bin/目录下

ln -s /xxx/xxx/bin/xxx /usr/local/sbin/xxx 优先级高的环境变量

  • 直接把程序/命令所在目录加入到环境变量的配置文件中

修改 /etc/profile 文件,在文件末尾加上如下两行代码

PATH=$PATH:/xxx/xxx/bin //重新定义环境变量
export PATH //应用

最后执行命令 source /etc/profile 或执行点命令 ./profile 使其修改生效

  • 单个命令(非目录) vim /etc/profile

export KUBECONFIG=/root/.kube/kube.config
export PATH
source /etc/profile

  • 高优先级的环境变量

vim /etc/profile
最底部增加:
export PATH=/usr/local/php/bin:/usr/local/nginx/sbin:/usr/local/git/bin/:$PATH


sed命令:(修改)

常用选项或命令:

i:直接修改文件

-n:使用安静(silent)模式
sed的用法中所有来自STDIN的数据一般都会被列出到终端上,但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来,常搭配p表示打印输出

-e :允许多项编辑

-r:使用扩展正则表达式

-s:查找并替换 sed 's/旧内容/新内容/g' file.txt

g:全局范围

a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~

c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!

d:删除

  • sed -i 就是直接对文本文件进行修改操作
  • sed -i 's/原字符串/新字符串/' /home/1.txt 只修改第一个匹配
  • sed '3s/旧内容/新内容/' file.txt 仅第3行替换
  • sed -i 's/原字符串/新字符串/g' /home/1.txt 修改所有匹配
  • sed -i 's/k8s.k.90/k8s.k.75/g' /etc/keepalived/keepalived.conf 修改对应文件中的k8s.k.90为k8s.k.75
  • echo -e 'hello world' | sed -e 's/hello/A/' -e 's/world/B/' 对文本内容进行多次操作用-e
  • sed '/^$/d' hello.txt 从hello.txt⽂件中删除所有空⽩⾏
  • sed -r 使用了扩展正则表达式,需要加-r选项
  • sed -n “1p” 打印第一行
  • sed '3d' file.txt 删除第3行


grep命令:(过滤)

  • grep time /root/abc.txt 在文件中过滤time关键词 关键词可加引号 双引号
  • grep -i 不区分大小写 默认区分大小写 -r 递归
  • grep ^s hello.txt 在⽂件hello.txt中查找以 s 开头的内容
  • grep [0-9] hello.txt 选择hello.txt⽂件中所有包含数字的⾏
  • grep -r xxx . | cut -d "/" -f 5 | sort | sort -u (sort 去重复)
  • grep -r nebula-beta.redis.rds.aliyuncs.com . | awk -F/ '{print $5}' 过滤关键词并打印出第5列
  • cat nginx.log | grep 200 过滤是200的
  • cat nginx.log | grep -v 200 过滤非200的 (排除200)
  • grep -w grep是匹配关键字 -w是匹配一个单词 例如我想匹配 “like”, 不加 -w 就会匹配到 “liker”, 加 -w 就不会匹配到
  • grep inet -w 只匹配到inet的这行
  • grep -v "xxx" 排除xxx

grep 同时满足多个关键字

① grep -E "word1|word2|word3" file.txt
满足任意条件(word1、word2和word3之一)将匹配

② grep word1 file.txt | grep word2 |grep word3
必须同时满足三个条件(word1、word2和word3)才匹配

grep 同时排除多个关键字

例如需要排除 abc.txt 中的 mmm nnn
grep -v 'mmm|nnn' abc.txt
或者 grep -e mmm -e nnn abc.txt

grep利用正则找出一段日志中的ip地址并去掉重复

- tail -n 100 access.log | grep -oE '"http_x_forwarded_for":"[^"]+"' | cut -d ":" -f 2 | sort -u

- cat log.txt | awk '{print $7}' | grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u

- grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" logfile.txt | sort -u


cut命令:

  • cat /etc/passwd |cut -d : -f 1 查看所有用户名 按照:的分隔符 截取第一列
  • cat /etc/passwd | cut -b 1-3 直接截取1-3的字符串
  • cut -d' ' -f1-3 data.txt 按照空格的分隔符 截取1-3列 -f 1,3 截取1和3列
  • find /root/.pm2/logs -name *.log | cut -d "/" -f 5 截取第五列所有日志文件名
  • sed -n '/2022:01:00:00/,/2022:11:00:00/p' ./nginx_access.log | cut -d "-" -f 1 | sort -u 查看日志截取所需要列并去重
  • sed -n "/10/Nov/2022:11:52/,/10/Nov/2022:11:58/p" /wwwlogs/nginx_access.log | cut -d " " -f 9 | grep "500" | wc -l


关于数据库:

  • mysql -u root -p 连接本地数据库
  • mysql -h localhost -u root -p 连接远程数据库
  • mysql -h localhost -P 3307 -u root -p 带端口连接远程数据库


关于dns:

  • nslookup www.baidu.com 查询目前用的哪个dns服务器 及解析记录
  • nslookup -qt=A dfocuspace.com 查询dns A解析记录
  • nslookup -qt=mx xxxx.com 查询mx解析记录
  • nslookup -qt=txt _dnsauth.xxxx.com 查询txt解析记录 txt后面 _前 有空格
  • nslookup -qt=A dfocuspace.com 223.5.5.5 指定其他dns服务器来解析域名
  • nslookup -type=AAAA o.aidonow.work 查询ipv6地址


用户正确加入sudo:

  • useradd -d /home/cephuser -m cephuser
  • echo 123456 | passwd --stdin cephuser
  • echo cephuser ALL = (root) NOPASSWD:ALL | sudo tee /etc/sudoers.d/cephuser
  • chmod 0440 /etc/sudoers.d/cephuser


EOF命令:

定义多行文本输入,在shell脚本中通常与输入重定向符号 << 结合使用

cat >> file.txt << EOF
第一行内容
第二行内容$(date)    # 支持变量替换,加转义符号\原样输出,或者直接使用 <<'EOF' 所有内容原样输出  
EOF


其他常用命令:

  • ssh -v -p 19874 dfadmin@139.217.217.84 可以连接并一步一步检测ssh连接情况
  • wget xxx 下载文件
  • wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701 下载并保存本地为taglist.zip
  • curl -O xxx 下载文件 -O 按照服务器上的文件名,存在本地
  • curl www.baidu.com 返回源码
  • curl -v https://www.baidu.com 返回详细情况包括 200 -i 输出包含响应头信息
  • curl -L http://www.example.com -L:自动跳转到重定向链接(Location)
  • curl -X POST -d '参数' http://www.example.com/test 传递请求参数
  • curl -k -s -L "http://10.196.17.80/download_agent.sh" | bash 在线安装
  • history 查看历史命令


fuser:

显示使用指定文件或者文件系统的进程ID 通过文件反向查看哪个进程在占用
安装:yum install -y psmisc
fuser -mu /home //执行这个命令可以看到占用/home分区的进程ID
kill -9 进程ID
fuser -mv 文件/目录


chroot: 即 change root directory (更改 root 目录)

在 linux 系统中,系统默认的目录结构都是以 /,即是以根 (root) 开始的
而在使用 chroot 之后,系统的目录结构将以指定的位置作为 / 位置
如: chroot /data 以 /data 为根目录

使用场景:使用单用户挂载root修改root密码 挂载盘出错单用户重新挂载
chroot /sysroot
允许通过标准输入修改用户密码,如 echo "NewPassWord" | passwd --stdin Username


nc命令 :是一个功能强大的网络工具全称是netcat

  • yum -y install nc 安装
  • nc -vz 10.128.3.249 22 扫描tcp端口
  • nc -v -z -w3 192.168.0.3 1-100 批量扫描tcp端口 w3 超时为3s
  • nc -vuz 104.224.183.6 50310 扫描udp端口
  • nc -u -z -w3 192.168.0.1 1000-3000 扫描192.168.0.3 的端口 范围是 1000-3000


ncdu:强化版本的du

使用df看到的是分区、du看的是具体文件或文件夹、ncdu是明细

安装:yum install ncdu -y

  • ncdu 当前目录所有
  • ncdu xxx 具体目录
  • ncdu -o ncdu.txt 结果导出
  • ncdu -f ncdu.txt 读取结果


shell 获取本机IP地址:

- /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"

- ip addr | grep 'state UP' -A2 | grep inet | egrep -v '(127.0.0.1|inet6|docker)' | awk '{print $2}' | tr -d "addr:" | head -n 1 | cut -d / -f1


查询服务器外网ip地址:

  • curl myip.ipip.net
  • curl -v ipinfo.io


Htop工具

Top的增强工具,交互式进程查看器,可让您直接从终端管理计算机的资源

安装:dnf install -y htop

  • htop


nohup 后台运行命令

  • nohup python script.py &
  • nohup hugo server --baseURL=127.0.0.1 --bind=0.0.0.0 --port=1313 >/dev/null 2>&1 &


iostat CPU 和 I/O 统计数据

  • iostat -d -p sda 5 每 5 秒钟显示一次 sda 每个设备的详细 I/O 统计信息



0

评论 (0)

取消