前言:Linux的各项命令与用法非常多,不同的发行版命令还不一样,我们不需要全部掌握,在实际工作中常用的命令与用法其实就那么几类,我们以RedHat系列Centos发行版为例。。
系统基础软件:
- yum -y update && yum -y install vim wget curl epel-release net-tools lrzsz nc tar unzip traceroute (可选:dos2unix)
- rpm -ivh https://rpms.remirepo.net/enterprise/remi-release-7.rpm (可选:添加Remi源)
关于帮助类:
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)