linux一些命令

netstat

Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

netstat常见参数

-a (all) 显示所有选项,默认不显示LISTEN相关。
-t (tcp) 仅显示tcp相关选项。
-u (udp) 仅显示udp相关选项。
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服务状态。

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

LISTEN和LISTENING的状态只有用-a或者-l才能看到。

常用netstat相关命令

1、列出所有端口 #netstat -a

2、列出所有 tcp 端口 #netstat -at

3、列出所有 udp 端口 #netstat -au

4、只显示监听端口 #netstat -l

5、只列出所有监听 tcp 端口 #netstat -lt

6、只列出所有监听 udp 端口 #netstat -lu

7、列出所有监听 UNIX 端口 #netstat -lx

8、显示所有端口的统计信息 #netstat -s

9、显示 TCP 或 UDP 端口的统计信息 #netstat -st 或 -su

10、 输出中显示 PID 和进程名称 #netstat -p

11、netstat 输出中不显示主机,端口和用户名 (host, port or user)

当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。

同样可以加速输出,因为不用进行比对查询。

#netstat -an

如果只是不想让这三个名称中的一个被显示,使用以下命令

# netsat -a --numeric-ports
# netsat -a --numeric-hosts
# netsat -a --numeric-users
12、持续输出 netstat 信息  #netstat -c

13、找出程序运行的端口 #netstat  -ap | grep ':80'

14、查看连接某服务端口最多的的IP地址(前20个)

#netstat -nat | grep "10.1.62.23:443" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
15、TCP各种状态列表 

#netstat -nat |awk '{print $6}'

统计数量

#netstat -nat |awk '{print $6}'|sort|uniq -c

排序

#netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn

#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

16、直接统计tcp数量监听的数量

#netstat -ant | wc -l

wc

Linux wc命令用于计算字数。

利用wc指令我们可以计算文件的Byte数、字数、或是列数

-c或--bytes或--chars 只显示Bytes数。
-l或--lines 显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。


cp

一、cp 命令简介

cp 命令主要用于复制文件或目录。即用来将一个或多个源文件或者目录复制到指定的目的文件或目录。

cp 命令可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。

cp 命令支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

二、cp 命令语法

cp [-options] source_file dest_file

source_file:源文件,制定源文件列表。cp 命令默认情况下不能复制目录,除非使用 -r/-R选项。
dest_file:目标文件,指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

三、参数说明:

-a :等于 “dpR” 参数组合,通常在复制目录时保留链接、文件属性,并复制目录下的所有内容。
-b:覆盖已存在的文件目标前将目标文件备份;
-d :复制时保留符号链接。
-f :强行复制文件或目录,覆盖已经存在的目标文件而不给出提示。
-i :与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖。
-l :不复制文件,只是生成源文件的硬链接文件。
-p :复制文件时保留源文件或目录的属性。
-r :递归复制目录,即复制该目录及其所有的子目录和文件。
-R :同 -r 选项参数。
-s:对源文件建立符号连接,而非复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-u:同步复制源文件文件,只在源文件更新时或目标文件不存在时复制。
-v:详细显示命令执行的操作。

-----------------------------------------

du

Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的.

1.命令格式:

du [选项][文件]

2.命令功能:

显示每个文件和目录的磁盘使用空间。

3.命令参数:

-a或-all 显示目录中个别文件的大小。

-b或-bytes 显示目录或文件大小时,以byte为单位。

-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。

-k或--kilobytes 以KB(1024bytes)为单位输出。

-m或--megabytes 以MB为单位输出。

-s或--summarize 仅显示总计,只列出最后加总的值。

-h或--human-readable 以K,M,G为单位,提高信息的可读性。

-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。

-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。

-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。

-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。

--exclude=<目录或文件> 略过指定的目录或文件。

-D或--dereference-args 显示指定符号链接的源文件大小。

-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。

-l或--count-links 重复计算硬件链接的文件



echo

echo命令用于在屏幕上输出指定内容,通常用于打印变量值,默认换行打印。
常用选项:
-n 不换行打印
-e 解释转义字符

echo显示带颜色,echo命令(带参数-e)

格式如下:
  echo -e "\033[字背景颜色;文字颜色m 字符串 \033[0m"
  或者
  echo -e "\e[字背景颜色;文字颜色m 字符串 \e[0m"
  
  
  例如:
  echo -e "\033[41;36m something here \033[0m"
  其中41的位置代表底色, 36的位置是代表字的颜色
  
  1、字背景颜色和文字颜色之间是英文的;
  2、文字颜色后面有个m
  3、字符串前后可以没有空格,如果有的话,输出也是同样有空格
  4、echo -e 后是英文的""
字颜色:30—–37
  echo -e "\033[30m 黑色字 \033[0m"
  echo -e "\033[31m 红色字 \033[0m"
  echo -e "\033[32m 绿色字 \033[0m"
  echo -e "\033[33m 黄色字 \033[0m"
  echo -e "\033[34m 蓝色字 \033[0m"
  echo -e "\033[35m 紫色字 \033[0m"
  echo -e "\033[36m 天蓝字 \033[0m"
  echo -e "\033[37m 白色字 \033[0m"
字背景颜色范围:40—–47
  echo -e "\033[40;37m 黑底白字 \033[0m"
  echo -e "\033[41;37m 红底白字 \033[0m"
  echo -e "\033[42;37m 绿底白字 \033[0m"
  echo -e "\033[43;37m 黄底白字 \033[0m"
  echo -e "\033[44;37m 蓝底白字 \033[0m"
  echo -e "\033[45;37m 紫底白字 \033[0m"
  echo -e "\033[46;37m 天蓝底白字 \033[0m"
  echo -e "\033[47;30m 白底黑字 \033[0m"
最后面控制选项说明 
  \33[0m 关闭所有属性
  \33[1m 设置高亮度
  \33[4m 下划线
  \33[5m 闪烁
  \33[7m 反显
  \33[8m 消隐
例:

让字体变为红色并且不停的闪烁
echo -e "\033[31m \033[05m 请确认您的操作,输入 [Y/N] \033[0m"echo -e "\033[5;31m 请确认您的操作,输入 [Y/N] \033[0m"

另一种写法:
echo -e "\033[47;5;31m 请确认您的操作,输入 [Y/N] \033[0m"

mount

用于挂载Linux系统外的文件

1、用法
mount [-t vfstype] [-o options] 镜像 目录

-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:

光盘或光盘镜像:iso9660
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Mount Windows文件网络共享:smbfs
UNIX(LINUX) 文件网络共享:nfs

2、-o options 主要用来描述设备或档案的挂接方式。常用的参数有:

loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集
3.device 要挂接(mount)的设备。
4.dir设备在系统上的挂接点(mount point)。

3、其他参数

-a:将 /etc/fstab 中定义的所有档案系统挂上。

-F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。

-f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
-v:显示较讯息,通常和 -f 用来除错。

umount

umount 用来卸载设备

-a:卸除/etc/mtab中记录的所有文件系统;
-h:显示帮助;
-n:卸除时不要将信息存入/etc/mtab文件中;
-r:若无法成功卸除,则尝试以只读的方式重新挂入文件系统;
-t<文件系统类型>:仅卸除选项中所指定的文件系统;
-v:执行时显示详细的信息; -V:显示版本信息。
–l:并不是马上umount,而是在该目录空闲后再umount。
-f:使用强制卸载
umount -v /dev/sda1    通过设备名卸载
umount -v /mnt/mymount/  通过挂载点卸载
umount -vl  /mnt/mymount/ 延迟卸载
如果报device is busy  ,说明你在这个目录下卸载自己  这样肯定不行   退出目录卸载可行  或者  执行延迟卸载

chage

chage命令用于密码实效管理,用来修改帐号和密码的有效期限。它可以修改账号和密码的有效期。

参数	      描叙

-d         指定密码最后修改日期

-E         密码到期的日期,过了这天,此账号将不可用。0表示马上过期,-1表示永不过期。

-h         显示帮助信息并退出

-l          列出用户以及密码的有效期

-i          停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。

-m        密码可以更改的最小天数。为零代表任何时候都可以更改密码。

-M        密码保持有效的最大天数。

-W        密码过期前,提前收到警告信息的天数。


设置mysql用户60天后密码过期,至少7天后才能修改密码,密码过期前7天开始收到告警信息。

 chage -M 60 -m 7 -W 7 mysql

1、可以编辑/etc/login.defs来设定几个参数,以后设置口令默认就按照参数设定为准:

/etc/login.defs 是设置用户帐号限制的文件。该文件里的配置对root用户无效。/etc/login.defs 文件用于在Linux创建用户时,对用户的一些基本属性做默认设置,例如指定用户 UID 和 GID 的范围,用户的过期时间,密码的最大长度,等等。

需要注意的是,该文件的用户默认配置对 root 用户无效。并且,当此文件中的配置与 /etc/passwd 和 /etc/shadow 文件中的用户信息有冲突时,系统会以/etc/passwd 和 /etc/shadow 为准。

如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,也就是说/etc/shadow的配置优先级高于/etc/login.defs

PASS_MAX_DAYS   99999    #密码最大有效期
PASS_MIN_DAYS   0        #两次修改密码的最小间隔时间
PASS_MIN_LEN    5        #密码最小长度,对于root无效
PASS_WARN_AGE   7        #密码过期前多少天开始提示

指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。

/etc/pam.d/system-auth

2、当然在/etc/default/useradd可以找到如下2个参数进行设置:

# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

通过修改配置文件,能对之后新建用户起作用,而目前系统已经存在的用户,则直接用chage来配置。



ping

ping命令用来测试主机之间网络的连通性。执行ping指令会使用ICMP(Internet控制消息协议)传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

命令格式:

ping [参数] [主机名或IP地址]

选项

-d:使用Socket的SO_DEBUG功能;
-c<完成次数>:设置完成要求回应的次数;
-f:极限检测;
-i<间隔秒数>:指定收发信息的间隔时间;
-I<网络界面>:使用指定的网络界面送出数据包;
-l<前置载入>:设置在送出要求信息之前,先行发出的数据包;
-n:只输出数值;
-p<范本样式>:设置填满数据包的范本样式;
-q:不显示指令执行过程,开头和结尾的相关信息除外;
-r:忽略普通的Routing Table,直接将数据包送到远端主机上;
-R:记录路由过程;
-s<数据包大小>:设置数据包的大小;
-t<存活数值>:设置存活数值TTL的大小;
-v:详细显示指令的执行过程。

例如:

2秒内ping主机3次

ping -c3 -i2 主机名或IP地址


修改主机名

临时修改主机名

hostname  名字
bash

永久修改主机名

hostnamectl set-hostname  名字
cat /etc/hostname


stdin 从标准输入管道读入新的密码

echo “新密码”|passwd  用户名  --stdin

常用文本处理工具

grep

grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug"

grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇

grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行

grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"


sed

sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2"

sed '/^$/d' example.txt 从example.txt文件中删除所有空白行

sed '/ *#/d; /^$/d' example.txt 从example.txt文件中删除所有注释和空白行

sed '1d' result.txt 从文件example.txt 中排除第一行

sed 's/ *$//' example.txt 删除每一行最后的空白字符

sed 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部

sed -n '/stringa1/p' 查看只包含词汇 "string1"的行

sed -n '5p' example.txt 查看第5行

sed -n '1p;5p' example.txt 查看第1行和第5行

sed -n '1,5p' example.txt 查看从第一行到第5行内容

sed 's/00*/0/g' example.txt 用单个零替换多个零

sed '/baidu/i qq' example.txt 匹配行前加内容

sed '/baidu/a qq' example.txt 匹配行后加内容

sed '2i 123' example.txt 指定行前加内容

sed '2a 123' example.txt 指定行后加内容


awk

awk '{print $1}' filename 打印文件的第一列

awk '{print $1,$2}' filename 打印文件的前两列

awk 'NR==1{print}' filename 打印文本第一行

awk 'NR==2{print $1}' 1.txt 打印文本第二行第一列

awk 'END{print NR}' filename 打印文本文件的总行数


paste

paste file1 file2 合并两个文件或两栏的内容

paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分


sort

sort file1 file2 排序两个文件的内容

sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)

sort file1 file2 | uniq -u 删除交集,留下其他的行

sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)


comm

comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容

comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容

comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分


seq命令输出数字

seq命令可以输出连续的数字,或者输出固定间隔的数字,或者输出指定格式的数字,这样说比较模糊,看示例就很容易理解。


选项:
s 指定输出的分隔符,默认为\n,即默认为回车换行

-w 指定为定宽输出,不能和-f一起用

-f 按照指定的格式输出,不能和-w一起使用


例如:

[root@localhost opt]# seq 1 5
1
2
3
4
5
seq命令还可以实现步进输出 ,比如从1 开始,每次步进 2 ,最大到10,效果如下。
[root@localhost opt]# seq 1 2 10
1
3
5
7
9
-s选项:指定分隔符,下图示例为指定加号为分隔符,输出的数字将会使用"+"连接,默认情况下回车换行(\n)为分隔符。
[root@localhost opt]# seq -s + 1 10
1+2+3+4+5+6+7+8+9+10

-w 选项:指定为定宽输出,例如下图,最大值为15,是两位数,那么不到两位的数前面自动用0补全,当然,如果指定的位数最大为三位数字,那么一位数和两位数前面的位数都会用0补全,也就是说,以最大值的位数为标准宽度,不足标准宽度的数字将会用0补位,示例如下图。

[root@localhost opt]# seq -w 1 15
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
[root@localhost opt]# seq -w 90 110
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110

-f选项:按照指定的格式输出生成的数字,在没有使用-f选项指定格式时,默认格式为%g,可以理解为使用-f 指定模式为"%g",跟不指定格式没有任何区别

[root@localhost opt]# seq 8 11
8
9
10
11
[root@localhost opt]# seq -f '%g' 8 11
8
9
10
11

上述示例中,输出的数字没有任何区别,因为在不指定格式的情况下,默认格式为'%g'
那么除了上述的默认格式,我们经常还会使用如下常用格式,"%3g"这种格式表示指定"位宽"为三位,那么数字位数不足部分用空格补位,如下示例中,编号1对应的命令使用的格式为默认格式,与不指定任何格式输出的结果相同,编号2对应的命令使用的格式表示输出的数字位宽固定为3位(三位数),不足三位的数字用空格在数字左侧补齐。
```bash [root@localhost opt]# seq -f '%g' 8 11 8 9 10 11 [root@localhost opt]# seq -f '%3g' 8 11 8 9 10 11 ```

"%02g" 表示指定位宽为两位,数字位数不足用0补位,这种写法跟上述提到的-w选项类似,只不过-w是以指定的最大值的位数为最大位数,而 -f 选项可以直接指定位数,在下例中,我们也对比了-w选项与-f选项的区别。

[root@localhost opt]# seq -w 8 11
08
09
10
11
[root@localhost opt]# seq -f '%02g' 8 11
08
09
10
11
[root@localhost opt]# seq -f '%03g' 8 11 
008
009
010
011
[root@localhost opt]# seq -f '%04g' 8 11 
0008
0009
0010
0011


上述例子中的格式中,都包含一个'%',其实 % 前面还可以指定字符串。

例如在屏幕上打印5个名为dir1 , dir2 .. dir5 的字符串,这时候就用到这种写法。

[root@localhost opt]# seq -f 'dir%g' 8 11  
dir8
dir9
dir10
dir11

所以,结合上述示例中的seq命令的特性,再结合其他命令,就能为我们带来许多方便。

例如一次性创建5个名为dir001 , dir002 .. dir005 的目录,这时候就用到这种写法。

mkdir $(seq -f 'dir%03g' 1 10)

或者如下命令,与上述命令的效果相同。

seq -f 'dir%03g' 1 5 | xargs mkdir

posted @   何二  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示

目录导航