[Linux服务器] Linux命令大全(入门必备)

1761 0
Honkers 2025-4-1 05:46:39 来自手机 | 显示全部楼层 |阅读模式


一、查看系统信息

  1. cat /etc/os-release #查看操作系统信息
  2. cat /proc/version #查看操作系统信息
  3. cat /etc/issue #适用于所有的Linux发行版本
  4. uname -m #显示处理器架构
  5. uname -r #显示内核版本
  6. uname -a #查看内核信息
  7. cat /proc/cpuinfo或者用lscpu #显示CPU info的信息
  8. free -h #查看内存信息
  9. cat /proc/swaps #显示哪些swap被使用
  10. cat /proc/net/dev #显示网络适配器及统计
  11. cat /proc/mounts #显示已加载的文件系统
  12. localip=$(ifconfig eth0 | grep netmask | tr -s " " | cut -d" " -f3) #网卡IP
  13. mem=$(free |grep Mem |tr -s " " | cut -d" " -f7) #本机内存剩余容量
复制代码

dmidecode -q #显示硬件系统部件 - (SMBIOS / DMI)


hdparm -tT /dev/sda #在磁盘上执行测试性读取操作

二、日期

  1. cal 2020 #显示2020年的日历表
  2. date -s "2020-11-20 14:53:05" #修改系统时间
  3. clock -w #将时间修改保存到 BIOS
  4. date "+%Y-%m-%d %H:%M:%S" #格式化显示时间
  5. date -d -15days "+%Y%m%d" #15天前的日期
复制代码

将日期存入数组

  1. declare -a DATE=(`date +"%S %M %k %d %m %Y"`)
  2. echo ${DATE[*]}
复制代码

三、系统的关机、重启以及登出

  1. init 0 #关闭系统
  2. shutdown -h hours:minutes & #按预定时间关闭系统
  3. shutdown -c #取消按预定时间关闭系统
  4. reboot #重启
  5. logout或者exit #注销,登出当前用户
复制代码

四、文件和目录

  1. cd .. #返回上一级目录
  2. cd #进入个人的主目录,如果是root用户,则等价于cd /root
  3. cd ~dev #进入dev用户的主目录
  4. cd - #返回上次所在的目录
  5. pwd #显示当前所在路径
复制代码

dirname /etc/hosts #去除最后的文件或目录
basename /etc/hosts #保留最后的文件或目录

  1. ls -l #显示文件和目录的详细信息
  2. ls -A #显示隐藏文件
  3. ls -hl #人性化显示文件的大小
  4. ls -R /etc #递归显示目录的所有内容
  5. ls -t #按时间排序
  6. ls -d */ #只显示目录
  7. ls /var/log/ -lR | grep "^-" | wc -l #查看/var/log目录下文件数
  8. ls -tl /tmp | egrep -v '(^d|^total)' | head -n1 | awk '{print $9}' #列出最新的文件名
  9. echo "123" > f1 #覆盖重定向。f1不存在,则创建,并写入123;f1存在,则覆盖原有的内容,并写入123
  10. echo "123" >> f1 #追加重定向。f1不存在,则创建,并写入123;f1存在,则在原有的内容后面追加123
  11. mkdir dir1 dir2 #同时创建两个目录
  12. mkdir -p /tmp/dir1/dir2 #创建一个目录树,如果没有/tmp/dir1,也能成功创建
  13. rm -f /tmp/t1.txt #删除文件
  14. rm -rf dir1 #删除整个dir1目录
  15. mv t1.txt /tmp/ #移动文件t1.txt到/tmp目录下
  16. mv t2/.[^.]* t1/ #移动隐藏文件
  17. mv dir1 /tmp/dir2 #如果/tmp/dir2存在,则把dir1目录移动到dir2下;如果不存在,则把dir1目录移动到/tmp下并改名字为dir2
  18. cp file1 file2 #复制一个文件
  19. \cp file1 file2 #跳过cp别名,如果file2存在,会强制覆盖
  20. cp dir/* . #复制一个目录下的所有文件到当前工作目录
  21. cp -a /tmp/dir1 . #复制一个目录到当前工作目录
  22. ln file1 lnk1 #创建一个指向文件或目录的物理链接
复制代码

ln -sv file1 lnk1 #创建一个指向文件或目录的软链接,并显示出来

  1. stat t.txt #查看文件或者目录的时间戳
  2. touch -t 202011211500 t.txt #修改文件或者目录的时间戳
  3. tree #显示文件和目录由根目录开始的树形结构
  4. tree -N dir1 #支持显示中文
  5. tree -p dir1 #显示权限
  6. tree -ug dir1 #显示所有者和所属组
  7. alias tree='tree --charset ASCII' #解决乱码问题
  8. cat -A t.txt #查看文件换行符
复制代码

五、文件搜索

find

find 命令这 7 种高级用法,你肯定没用过?

  1. find / -name file1 #从 '/' 开始进入根文件系统搜索文件和目录
  2. find / -user user1 #搜索属于用户 'user1' 的文件和目录
  3. find /home/user1 -name \*.bin #在目录 '/home/user1' 中搜索带有'.bin' 结尾的文件
  4. find /usr/bin -type f -atime +10 #搜索10天前被使用过的执行文件
  5. find /usr/bin -type f -mtime -10 #搜索在10天内被修改过的文件
  6. find / -name \*.rpm -exec chmod 755 '{}' \; #搜索以 '.rpm' 结尾的文件并修改其权限
  7. find / -xdev -name \*.rpm #搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备
  8. find / -perm -u+s #罗列一个系统中所有使用了SUID控制的文件
  9. find temp/ -type f -name "*.groovy" -o -name "*.sh" | xargs -i dos2unix {} #-o可以匹配多个名字
  10. find /usr/bin -maxdepth 1 #设置最大深度为1
复制代码

查找重复文件

Linux 查找重复文件方法汇总

  1. find -not -empty -type f -printf "%s\n" | sort -rn |uniq -d |xargs -I{} -n1 find -type f -size {}c -print0 |xargs -0 md5sum |uniq -w32 --all-repeated=separate |cut -b 35-
复制代码

解释:

  1. find是查找命令;-not -empty是要寻找非空文件;-type f是指寻找常规文件;%s表示的是文件的大小,单位为bytes,\n是换行符
  2. sort是排序,-n是指按大小排序,-r是指从大到小排序(逆序reverse)
  3. uniq是把重复的只输出一次,而-d指只输出重复的部分(如9出现了5次,那么就输出1个9,而2只出现了1次,并非重复出现的数字,故不输出)。
  4. xargs -I{} -n1,xargs命令将之前的结果转化为参数,供后面的find调用,其中-I{}是指把参数写成{},而-n1是指将之前的结果一个一个输入给下一个命令。后半部分是find -type f -size {}c -print0,-size{}是指找出大小为{}bytes的文件,而-print0则是为了防止文件名里带空格而写的参数。
  5. xargs -0表示读取参数的时候以null为分隔符读取。后面的md5sum是指计算输入的md5值。
  6. sort是排序
  7. uniq -w32是指寻找前32个字符相同的行,原因在于md5值一定是32位的,而后面的--all-repeated=separate是指将重复的部分放在一类,分类输出
  8. 由于我们的结果带着md5值,不是很好看,所以我们截取md5值后面的部分,cut是文本处理函数,这里-b 35-是指只要每行35个字符之后的部分。
复制代码

  1. locate \*.sh #寻找以 '.sh' 结尾的文件,效率高于find- 先运行 'updatedb' 命令
  2. whereis ls #显示一个二进制文件、源码或man的位置
  3. which ls ##显示一个二进制文件或可执行文件的完整路径
复制代码

六、挂载文件系统

fuser

选项含义
-mname 指定一个挂载文件系统上的文件或者被挂载的块设备
-v详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel. -V 输出版本号
-k杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。
-nspace 指定一个不同的命名空间.支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口)。对于端口, 可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space (即形如:80/tcp之类的表示)。
  1. fuser -mv /dev/sda2 #查看哪个用户的哪个进程占用/dev/sda2
  2. fuser -km /mnt/hda2 #当设备繁忙时强制卸载
  3. fuser -v -n tcp 80 #查看那些程序使用tcp的80端口
复制代码
  1. mount /dev/sdb1 /data #挂载到/data目录,需确保/data目录存在
  2. umout /data #卸载/data目录上的挂载
  3. umount -n /mnt/hda2 #运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用
  4. mount -o loop file.iso /mnt/cdrom #挂载一个文件或ISO镜像文件
  5. mount -t nfs 192.168.1.1:/data01 /data #挂载NFS存储到本地的/data目录
复制代码

七、磁盘

磁盘空间

  1. ls -lShr |more #以尺寸大小排列文件和目录
  2. du -sh dir1 #估算目录 'dir1' 已经使用的磁盘空间'
  3. du -sk * | sort -rn #以容量大小为依次显示文件和目录的大小
  4. du -sh * | grep 'G' | sort -rn #查看目录大小,过滤G为单位,从大到小排序
  5. ls --human-readable --size -1 -S --classify #按文件大小排序
  6. du -h -d 2|grep [GT] |sort -nr #查找磁盘目录大小(深度为2),并排序
  7. du -d1 -h /var/lib/docker/containers | sort -h #显示哪些容器目录占用空间最大
复制代码

磁盘速度

dd命令

dd测试磁盘读写速度

  1. dd if=/dev/zero of=/opt/bigfile count=512 bs=1M #生成一个512M的文件
复制代码

八、用户和群组

  1. groupadd group_name #创建一个新用户组
  2. groupmod -n new_group_name old_group_name #重命名一个用户组
  3. userdel -r user1 #删除用户和其主目录
  4. usermod -s /bin/nologin user1 #修改用户属性
  5. usermod -aG root zhangsan #追加zhangsan到root组
  6. gpasswd -d zhangsan root #将zhangsan从root组中删除
  7. echo “user1:pwd” |chpasswd #非交互式修改用户密码
  8. passwd user1 #修改一个用户的口令 (只允许root执行)
  9. chage -E 2005-12-31 user1 #设置用户口令的失效期限
  10. pwck #检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户
复制代码

useradd -g dev -G ops -s /bin/bash -d /home/user1 -m user1

  1. -g #指定基本组
  2. -G #指定附加组
  3. -s #指定解释器
  4. -d #指定主目录,不存在会自动创建
  5. -m #指定用户名
复制代码

九、文件的权限

  1. ls -l #显示权限
  2. chmod 777 directory1 #设置目录权限为777
  3. chmod o-rwx directory1 #删除其他人(o)对目录的读写执行权限
  4. chown user1.user1 file1 #改变一个文件的所有者和所属组为user1
  5. chown -R user1 directory1 #递归改变整个目录的所有者属性
  6. chgrp group1 file1 #改变文件的所属组
  7. chmod u+s /bin/file1 #设置一个二进制文件的 SUID 位
  8. chmod g+s /home/public #设置一个目录的SGID 位
  9. chmod o+t /home/public #设置一个文件的 沾滞位
复制代码

十、文件特殊属性

  1. chattr +a file1 #只允许以追加方式读写文件
  2. chattr +c file1 #允许这个文件能被内核自动压缩/解压
  3. chattr +C file1 #不会进行写入时复制更新.对目录没有影响,但在该目录中创建的新文件会设置No_COW属性。
  4. chattr +d file1 #在进行文件系统备份时,dump程序将忽略这个文件
  5. chattr +i file1 #设置成不可变的文件,不能被删除、修改、重命名或者链接
  6. chattr +s file1 #允许一个文件被安全地删除
  7. chattr +S file1 #一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
  8. chattr +u file1 #若文件被删除,系统会允许你在以后恢复这个被删除的文件
  9. lsattr #显示特殊属性
复制代码

十一、打包和压缩文件

tar

选项含义
-ptar进行解压后,生成的文件的权限,直接取自tar包里面文件的权限,如果不加-p,还要与umask值进行位运算。对root用户无效
  1. gzip -9 file1 #最大程度压缩
  2. tar zcvf archive.tgz dir1 #创建一个gzip格式的压缩包
  3. tar zcvf archive.tgz dir1 --remove-files #打包后删除源文件
  4. tar -tf archive.tgz #显示一个包中的内容
  5. tar xvf archive.tgz -C /tmp #解压到指定目录,默认为当前目录
  6. tar zcvf archive.tgz --exclude=*.zip ./* #排除以.zip结尾的所有文件
复制代码

zip/unzip

  1. zip -r file1.zip file1 file2 dir1 #将几个文件和目录同时压缩成一个zip格式的压缩包
  2. zip -rm file1.zip file1 #压缩之后删除file1
  3. unzip -q file1.zip #静默解压
  4. unzip -o file1.zip #强制覆盖
复制代码

十二、RPM 包 - (CentOS, Redhat、SUSE)

  1. rpm -ivh package.rpm #安装一个rpm包
  2. rpm -ivh --nodeeps package.rpm #安装一个rpm包而忽略依赖关系警告
  3. rpm -ivh package.rpm --force #强制安装
  4. rpm -e package_name.rpm #删除一个rpm包
  5. rpm -qa | grep httpd #显示所有名称中包含 "httpd" 字样的rpm包
  6. rpm -qi package_name #获取一个已安装包的特殊信息
  7. rpm -ql package_name #显示一个已经安装的rpm包提供的文件列表
  8. rpm -qc package_name #显示一个已经安装的rpm包提供的配置文件列表
  9. rpm -q package_name --whatrequires #显示与一个rpm包存在依赖关系的列表
  10. rpm -q package_name --scripts #显示在安装/删除期间所执行的脚本
  11. rpm -qf /etc/httpd/conf/httpd.conf #确认所给的文件由哪个rpm包所提供
  12. rpm --import /media/cdrom/RPM-GPG-KEY #导入公钥数字证书
  13. rpm --checksig package.rpm #确认一个rpm包的完整性
  14. rpm -V package_name #检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间
  15. rpm -e package_name --noscripts #删除rpm包的时候不调用卸载脚本,使用软件包已经损坏的情况
复制代码

十三、YUM

  1. yum install package_name #下载并安装一个rpm包
  2. yum localinstall package_name.rpm #将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系
  3. yum update #更新当前系统中所有安装的rpm包
  4. yum makecache fast #更新yum软件包索引
  5. yum update package_name #更新一个rpm包
  6. yum remove package_name #删除一个rpm包
  7. yum autoremove package_name #卸载这个包和它依赖的所有rpm包
  8. yum list #列出当前系统中安装的所有包
  9. yum search package_name #在rpm仓库中搜寻软件包
  10. yum clean packages #清理rpm缓存删除下载的包
  11. yum clean all #删除所有缓存的包和头文件
  12. yum downgrade glibc.x86_64 #降低软件包的版本
  13. yum list --showduplicates kubeadm --disableexcludes=kubernetes #通过kubernetes YUM仓库查找kubeadm版本
  14. yum repolist -e 0 #列出yum仓库,-e指定错误级别为0
复制代码

13.1.解决Rpmdb checksum is invalid的问题

  1. rpm --rebuilddb #重建数据库
复制代码

十四、DEB 包 (Debian, Ubuntu 以及类似系统)

  1. dpkg -i package.deb #安装/更新一个 deb 包
  2. dpkg -r package_name #从系统删除一个 deb 包
  3. dpkg -l | grep httpd #显示所有名称中包含 "httpd" 字样的deb包
  4. dpkg -s package_name #获得已经安装在系统中一个特殊包的信息
  5. dpkg -L package_name #显示系统中已经安装的一个deb包所提供的文件列表
  6. dpkg --contents package.deb #显示尚未安装的一个包所提供的文件列表
  7. dpkg -S /bin/ping #确认所给的文件由哪个deb包提供
复制代码

十五、APT 软件工具 (Debian, Ubuntu 以及类似系统)

  1. apt-get install package_name #安装/更新一个 deb 包
  2. apt-cdrom install package_name #从光盘安装/更新一个 deb 包
  3. apt-get update #升级列表中的软件包
  4. apt-get upgrade #升级所有已安装的软件
  5. apt-get remove package_name #从系统删除一个deb包
  6. apt-get check #确认依赖的软件仓库正确
  7. apt-get clean #从下载的软件包中清理缓存
  8. apt-cache search searched-package #返回包含所要搜索字符串的软件包名称
  9. apt-cache madison 包名 #查看包的可安装版本
复制代码

十六、查看文件内容

tail -f跟tail -F的区别

  1. tail -f 等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止
  2. tail -F 等同于--follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
复制代码
  1. cat file1 #从第一个字节开始正向查看文件的内容
  2. tac file1 #从最后一行开始反向查看一个文件的内容
  3. more file1 #查看一个长文件的内容
  4. head -2 file1 #查看一个文件的前两行,默认为前10行
  5. tail -2 file1 #查看一个文件的最后两行
  6. tail -n +2 #从第2行开始显示
  7. tail -f /var/log/messages #实时查看文件中的内容
复制代码

十七、处理文本、字符串

grep

grep -w

完全匹配数字和单词

  1. grep -w '^FROM' Dockerfile #精确匹配以FROM开头的行
  2. #以下情况需注意:
  3. echo "/data/docker/overlay" | grep -w '/data/docker'
复制代码


因为’/'不是数字也不是单词,因此不会影响匹配。
而要精确匹配/data/docker应该写成下面这种

  1. echo "/data/docker/overlay" | grep -w '/data/docker$'
复制代码
  1. grep -r '192.168.137.2' /etc/ #查找/etc/下所有包含“192.168.137.2”的文件
  2. grep -q '^SE[0-9]+$' f1 #匹配结果不输出到屏幕;[0-9]包含0~9,+匹配至少一次;$匹配字符串结尾
  3. grep -c localhost /etc/hosts #统计匹配结果的行数
  4. grep -v '^$' f1 #过滤文件空白行
  5. grep 'i\b' /etc/passwd #匹配i结尾的单词;\b为边界字符(也可以用\>表示边界)
  6. grep '\w' /etc/passwd #匹配所有字母、数字、下划线
  7. grep -o '^root' /etc/passwd #仅显示匹配的内容,不显示全行所有内容
  8. grep -A3 '^root' /etc/passwd #打印匹配内容和其后三行
  9. echo 21 | grep -P "\d" #\d,数字字符匹配,等效于 [0-9],与\D互反
  10. grep -n "enable:" f1 #打印匹配到的行号
  11. grep -E #支持扩展正则,等同于egrep
  12. grep -P #支持Perl正则
复制代码

sed

Linux神兵利器—sed命令详解

awk

awk命令详解

tr

语法:
tr [选项] 数据集1 [数据集2]
数据集1是必需的,选项和数据集2是可选的

选项功能描述
-s删除连续的多个重复的数据
-d删除包含特定集合的数据
-c使用数据集1的差集
  1. [root@localhost ~]# echo "hello world" | tr 'a-z' 'A-Z' #小写转大写
  2. HELLO WORLD
  3. [root@localhost ~]# echo "hello world" | tr l 9 #所有的l替换为9
  4. he99o wor9d
  5. [root@localhost ~]# tr 'a-z' 'A-Z' < /etc/passwd #从标准输入读取数据
  6. ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
  7. [root@localhost ~]# echo 'aaa' | tr -s a #删除连续重复的a
  8. a
  9. [root@localhost ~]# echo 'aaabbb' | tr -s ab #删除重复的a和b
  10. ab
  11. [root@localhost ~]# echo 'hello world' | tr -d 'l' #删除所有的l
  12. heo word
  13. [root@localhost ~]# echo 'hello world' | tr -d 'hl' #删除所有的h和l
  14. eo word
  15. [root@localhost ~]# echo 'hello world' | tr -d 'a-e' #删除包含a-e的所有字母
  16. hllo worl
  17. [root@localhost ~]# echo 'hello world' | tr -cd 'o' #只保留o
  18. oo[root@localhost ~]#
  19. [root@localhost ~]# echo 'hello 666' | tr -cd a-z #仅保留小写字母
  20. hello[root@localhost ~]# echo 'hello 666' | tr -cd '0-9\n' #保留数字和换行
  21. 666
  22. [root@localhost ~]# echo 'hello666' | tr -c '0-9' x #将数字外的符号替换为x
  23. xxxxx666x[root@localhost ~]#
  24. echo " false" | tr -s ' ' | cut -d ' ' -f2 #去掉前面空格。cut -d以空格分隔,打印第二列
复制代码

sort

Linux----sort命令详细使用方法

参数含义
-k后面接数字,指定第N列
-u去除重复行
-b忽略前导空格
  1. cat update_file.txt | sort -u -o update_file.txt #去重后再写入到原文件
  2. sort file1 file2 | uniq #取出两个文件的并集(重复的行只保留一份)
  3. sort file1 file2 | uniq -u #删除交集,留下其他的行
  4. sort file1 file2 | uniq -d #取出两个文件的交集
复制代码
  1. paste file1 file2 #合并两个文件或两栏的内容
  2. paste -d '+' file1 file2 #合并两个文件或两栏的内容,中间用"+"区分
  3. comm -1 file1 file2 #比较两个文件的内容只删除 'file1' 所包含的内容
  4. comm -2 file1 file2 #比较两个文件的内容只删除 'file2' 所包含的内容
  5. comm -3 file1 file2 #比较两个文件的内容只删除两个文件共有的部分
复制代码

十八、字符设置和文件格式转换

  1. dos2unix filedos.txt fileunix.txt #将一个文本文件的格式从MSDOS转换成UNIX
  2. unix2dos fileunix.txt filedos.txt #将一个文本文件的格式从UNIX转换成MSDOS
  3. recode ..HTML < page.txt > page.html #将一个文本文件转换成html
  4. recode -l | more #显示所有允许的转换格式
复制代码

十九、文件系统分析

  1. badblocks -v /dev/hda1 #检查磁盘hda1上的坏磁块
  2. fsck /dev/hda1 #修复/检查hda1磁盘上linux文件系统的完整性
  3. e2fsck -j /dev/hda1 #修复/检查hda1磁盘上ext3文件系统的完整性
  4. fsck.ext4 /dev/hda1 #修复/检查hda1磁盘上ext4文件系统的完整性
复制代码

二十、初始化一个文件系统

  1. mkfs.ext4 /dev/sdb1 #格式化磁盘
  2. mkfs -t vfat 32 -F /dev/hda1 #创建一个 FAT32 文件系统
复制代码

二十一、SWAP文件系统

  1. mkswap /dev/hda3 #创建一个swap文件系统
  2. swapon /dev/hda3 #启用一个新的swap文件系统
  3. swapoff /dev/hda3 #取消swap文件系统
  4. swapoff -a #关闭所有swap文件系统
复制代码

二十二、备份

rsync

Linux 服务器数据同步利器!

  1. rsync -rogpav --delete /home /tmp #同步两边的目录
  2. rsync -avzP /data/dir root@192.168.1.2:/data/ #同步到远程主机
  3. rsync -avzHP --delete srchub/ dsthub/ #同步srchub目录的内容到dsthub目录,并删除dsthub有而srchub没有的内容,好比给srchub做了个完整拷贝
  4. rsync -avzP -e "ssh -o StrictHostKeyChecking=no" srchub/ dsthub/ #跳过Authentication (yes/no)
  5. rsync --bwlimit=100K # 限制网络传输带宽为100KB
复制代码
  1. find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 #查找所有以 '.log' 结尾的文件并做成一个bzip包
复制代码

二十三、网络

netstat

选项解释
-t显示TCP端口
-u显示UDP端口
-n显示数字地址而不是解析主机
-l仅显示监听端口
-p显示侦听器进程的PID和名称。仅当你以root用户或 sudo 用户身份运行命令时,才会显示此信息
  1. netstat -nutlp
复制代码


Active Internet connections,称为有源TCP连接

列名含义
Recv-Q接收队列,通常为0,不为0代表软件包正在队列中堆积
Send-Q发送队列,通常为0,不为0表示软件包正在队列中堆积
Local Address进程侦听的IP地址和端口号
Foreign Address外部连接本机端口的IP和端口
State监听状态
PID/Program namePID和进程名称
netstat已过时,被ss和 ip 取代,但它仍然是检查网络连接的最常用命令。

ss

ss是新的netstat。它缺少netstat的某些功能,但是公开了更多的TCP状态,并且速度稍快。

tcpdump

运维必备服务器抓包–tcpdump详解

  1. tcpdump tcp port 80 #显示所有http协议的流量
  2. tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
复制代码

解释:

  1. (1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
  2. (2)-i eth1 : 只抓经过接口eth1的包
  3. (3)-t : 不显示时间戳
  4. (4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
  5. (5)-c 100 : 只抓取100个数据包
  6. (6)dst port ! 22 : 不抓取目标端口是22的数据包
  7. (7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
  8. (8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
复制代码

ip

  1. ip link show #查看网卡信息
  2. ip a s #查看网卡信息
  3. ip addr add 192.168.1.100/24 dev eth0 #给网卡eth0临时设置IP地址
复制代码

masscan扫描端口

使用yum install masscan安装

参数含义
-iL读取一个范围列表进行扫描
-oL <文件名>将扫描结果报错到文件里
–rate指定每秒发多少个数据包,提高扫描效率
  1. #扫描all_ip.txt里面的端口,并将结果输出到all_ip.log文件,每次都会覆盖all_ip.log的内容
  2. masscan -iL all_ip.txt -p22,25,80-100 -oL all_ip.log --rate 100000
复制代码

如果端口是通的,会显示如下信息,否则没有信息

  1. ifconfig eth0 #显示一个以太网卡的配置
  2. ifup eth0 #启用一个 'eth0' 网络设备
  3. ifdown eth0 #禁用一个 'eth0' 网络设备
  4. ifconfig eth0 192.168.1.1 netmask 255.255.255.0 #临时设置IP地址
  5. dhclient eth0 #以dhcp模式启用 'eth0'
  6. route -n #查看路由表
  7. route add -net 0/0 gw IP_Gateway #配置默认网关
  8. route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 #配置静态路由到达网络'192.168.0.0/16'
  9. route del 0/0 gw IP_gateway #删除静态路由
  10. hostname #查看机器名
  11. nslookup www.example.com #用于查询DNS的记录
  12. ethtool #用于查询和设置网卡配置
  13. ping -c2 -i0.2 -W1 192.168.137.2 #-c设置包的个数,-i设置间隔时间,-W设置超时时间,单位秒
复制代码

二十四、下载上传

wget

选项含义
-P指定数据下载到特定目录
-c支持断点续传
-q不显示下载过程
–user指定用户名
–password指定密码
-r递归下载
-np不下载父附录
-nd不建立目录,若无此选项,将按照网站目录结构创建目录
  1. wget --user aqx --password 123 -c URL #-c开启断点续传功能
复制代码

curl

选项含义
-L跟随重定向地址
-k跳过证书验证
-o重命名
-O指定要下载的文件URL
-v详细输出,包含请求和响应的首部
-s静默模式,不输出任何信息
-I仅显示HTTP头部信息
–connect-timeout指定尝试连接的最大时长,单位s
-m指定处理的最大时长,单位s
-w完成访问后,返回一些类似的附加信息
  1. curl -k -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl
  2. curl -kLO URL
  3. curl -lv URL
  4. curl -s www.baidu.com > baidu.html
  5. curl -I www.baidu.com
  6. curl -m 3 -s -o /dev/null -w %{http_code} www.baidu.com #返回状态码
  7. curl -o fuck.png URL #下载文件并重命名
  8. curl -LO -# URL #有进度条和百分比的下载
  9. curl -u 用户名:密码 -O URL #指定用户名和密码
  10. curl ifconfig.me #获取本地公网IP
复制代码

附加信息表:

  1. curl --max-time 95 --unix-socket /var/run/docker.sock -X GET http:/v1.23/_ping #检查Docker状态
复制代码

二十五、监控

  1. vmstat 2 3 #查看系统资源使用情况。2表示每隔两秒,3表示采样3次。详细内容参考:https://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html
复制代码

nmap

  1. nmap -sP 192.168.137.2 #仅执行ping扫描
  2. nmap -n -sP 192.168.1.0/24 #扫描整个网段;-n禁止DNS反向解析
  3. nmap -n -sT 192.168.1.10~192.168.1.50 #扫描之间所有主机;-T扫描所有TCP端口,并显示哪些端口是开放的
  4. nmap -n -sS -p80 192.168.1.10,20,30 #扫描不连续主机;-S针对TCP的半开扫描;-p指定端口
  5. nmap -n -sS -p100-200 192.168.1.2 #指定多端口
  6. nmap -T5 -n -sU 192.168.137.2 #-T5加快扫描速度;-U扫描UDP端口
复制代码

iostat

参考文章:linux下iostat命令详解

  1. yum install sysstat -y #安装iostat的命令
  2. iostat -xm 2 #每隔两秒循环输出信息
复制代码

查看进程的启动时间

ps -eo pid,lstart,etime,cmd | grep sshd |grep -v ‘grep’

  1. 10630 #sshd的进程号
  2. Mon Dec 7 10:27:25 2020 #表示该进程于2020年12月7日周一10:27:25启动
  3. 1-03:31:34 #代表进程从启动到现在过了1天3小时31分34秒
  4. /usr/sbin/sshd -D #启动sshd的命名
复制代码

二十六、设置系统语言字符集

  1. localectl status #查看当前语言字符集
  2. locale或者echo $LANG #查看当前语言字符集
  3. localectl list-locales #列出所有字符集
  4. export LANG=zh_CN.UTF-8 #临时设置
  5. localectl set-locale "LANG=zh_CN.UTF-8" #永久设置,重新登录终端方可生效
  6. locale -a #列出当前安装的字符集
复制代码

二十七、定时任务

  1. 0 2 * * * find /data/ -type f -mtime +15 -exec rm -rf {} \; #每天凌晨2点执行删除15天之前文件的操作
  2. 0 2 * * * find /data/ -type f -mtime +3 -size +100M -exec rm -rf {} \; #删除三天之前且文件大小大于100M的数据
复制代码

二十八、进程、端口

pgrep

  1. pgrep java #输出java进程的ID号
  2. pgrep -au devops #查找devops用户运行的进程
复制代码

lsof

lsof是功能强大的命令行应用程序,可提供有关进程打开的文件的信息
Linux 命令神器:lsof
Linux一个很强大的命令:lsof

选项含义
-n不要将端口号转换为端口名称
-iTCP -sTCP:LISTEN仅显示TCP状态为LISTEN的网络文件
+L1显示所有打开的链接数小于1的文件
-u指定用户名
-p指定进程号
-c列出以字符开头的进程打开的文件
-t只显示PID
-i列出所有网络连接
-N列出所有网络文件系统 (NFS) 文件
  1. lsof -nP -iTCP -sTCP:LISTEN #获取具有lsof的所有侦听TCP端口的列表
复制代码

  1. lsof -nP -iTCP:3306 -sTCP:LISTEN #查找本机侦听3306端口的进程
  2. lsof -i:7070 -t #列出正在监听端口的进程号
  3. lsof -u devops #查看用户打开哪些文件
  4. lsof -u ^devops #排除devops用户后的所有用户
  5. lsof -u root -c nginx -a #列出root用户下且以nginx开头的进程打开的文件
  6. kill -9 `lsof -t -u devops` #杀掉devops用户下的所有进程
  7. lsof –p 4838 #查看进程打开哪些文件
  8. lsof –i @192.168.34.128 #查看远程已打开的网络连接
  9. lsof +D /path/to/directory | grep 'txt' #查看占用该目录的进程。+D递归子目录,+d不递归
  10. lsof /var/log/nginx/access.log #列出打开特定文件的进程
  11. lsof -c ssh -c init #列出进程打开的文件
  12. lsof /home #列出所有使用挂载点的进程
  13. lsof –p 4838 -r5 #每隔5秒刷新一次
  14. lsof -i #列出所有网络连接,使用“-i4”或“-i6”分别仅列出“IPV4”或“ IPV6 ”
  15. lsof -i -a -c ssh #列出以 ssh 开头的进程打开的网络文件
  16. lsof -i tcp #列出所有TCP连接
复制代码

端口转发

  1. #8080转发到80
  2. iptables -t nat -A PREROUTING -d 10.0.0.8 -p tcp --dport 80 -j REDIRECT --to-ports 8080
复制代码

查看进程相关

  1. cat /proc/PID/environ | tr '\000' '\n' #查看进程环境信息
  2. cat /proc/PID/status #查看进程状态,类似于ps
  3. ls /proc/pid/task #查看所有线程
复制代码

二十九、ssh

ssh-keygen生成公私钥

-q : 安静模式,一般用在生成密钥上
-N: 生成一个新密钥
-f : 生成密钥的文件路径
-C:指定注释,默认为用户名@主机名

  1. ssh-keygen -q -N "" -f ~/.ssh/id_rsa -C devops
复制代码

sshpass

  1. sshpass -p 密码 scp -o StrictHostKeyChecking=no 本机文件路径 root@远程机器IP:远程路径
  2. sshpass -p 密码 rsync -avzP -e "ssh -o StrictHostKeyChecking=no" 本机文件路径 root@远程机器IP:远程路径
  3. sshpass -p 密码 ssh -o StrictHostKeyChecking=no root@远程机器IP "执行shell命令"
复制代码

三十、日志

journalctl

  1. journalctl --since="2023-02-20 1:00:00" --until="2023-02-21 11:00:00" -u docker #查看某个时间范围内的日志
  2. journalctl -u docker #查看所有日志
  3. journalctl -u docker -f #动态查看日志
  4. journalctl --since="2022-03-04 10:00:00" -u docker #查看指定日期日志
复制代码

参考文章:linux命令之journalctl —— 筑梦之路

其它

参考文章
PS:感谢作者的精心整理,我后面也会不断把常用的命令整理进来,以供各位同仁参考。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行