
正文
linuxsock命令 linux sock文件解析
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
测试中最基本的linux命令,学会离大佬就不远了
学习软件测试,最基本的linux命令必须掌握,现为大家整理如下:
一:系统管理相关命令
ls:可以看到整个目录
1.su:在不退出登陆的情况下,切换到另一个用户的身份
如:su root
切换到root这个用户,将提示输入密码,输完密码后即可登陆
# 超级用户提示符
$ 普通用户提示符
whoami:确认自己身份
history:查看运行命令的 历史
ifconfig:显示或设置网络设备的命令,我们可以用这个命令查看自己虚拟机的IP地址
ping:ping是Windows.Unix,Linux系统下的一个命令.ping命令也属于一个通信协议,是TCP/I协议的一部分。利用“ping"命令可以检查网络是否联通
停下来是:Ctrl+C(4)
kill:杀死进程(kill-9 进程号 强制杀死进程)
目录操作命令
linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录”/“,下层是各种各样的子目录和文件。
/:unix 文件系统的上层根目录
root:存放root用户的相关文件
home:存放普通用户的相关文件
bin:存放常用命令的目录,如vi,su,普通用户就可以提取的命令
sbin:要具有”一定权限才可以使用命令“
etc:存放配置的相关文件
vir:存放经常变化的文件。如:网络连接的sock文件
boot:启动目录,存放引导系统启动的相关文件
usr:安装一个软件的默认目录,相当于Windows下的program files
dev:设备文件保存目录
lb :系统库保存文件
pwd命令:显示当前路径
cd命令:切换目录
用法:cd目录路径
cd./切换到上级目录
cd/切换到根目录
cd~(或只有cd) 切换到用户主目录(home底下以用户名命名的文件夹)
/root目录
cd /opt ---cd bin 与cd /opt---cd /bin的区别
mkdir创建目录
mkdir 目录名
rmdir删除空目录
用法:rmdir 目录名
也可用:rm-rf 目录名
touch a.txt创建一个a.txt文件
二:文件操作命令
在Linux系统中,几乎所有内容包括文档,命令,设备和目录等都组织成文件的形式,用文件来管理,常用文件命令有:
|| 查看文件目录,以及它们对应的属性信息
cp 复制命令
用法:cp[选项] 文件名或目录 目标地址
-R 拷贝目录及目录下所有目录和文件
cp a.txt b.txt 将a文件复制,且另命名为b文件(目录名)
mv 移动命令
用法:mv文件名或目录 目标位置
mv a.txt../ 将a文件移动到上级目录(将一个文件移动到另一个目录没有重命名)
mv a.txt ../b.txt 将a文件移动到上一级并改名为b文件(将一个文件移动到另一个目录并重命名)
移动目录的时候,如果出现覆盖的情况,且被覆盖的目录非空,需要加一个'-b'的参数才能移动成功。被覆盖的目录此时会生产一个备份。
rm 删除文件或目录(i:操作时进行询问)
-f 强制删除
-r 删除目录
常用:rm -f文件或目录
find命令 查找文件
用法:find[路径][选项]
常用选项有:
find . -name a.txt 在当前目录查找文件a.txt
find / -name a.txt 从当前目录查找a.txt文件
grep命令
功能:在指定文件中查找字符(串)并打印该行;过滤,经常跟管道符号一起出现
用法:grep 字符串 文件名
grep xyz file 在file文件中寻找band字符串所在的那一行
文件编辑命令
vi:是linux下常用的文本编辑器
调用方法:vi a.txt(如果a.txt不存在,则创建,保存退出则创建成功)
按键盘i进入编辑状态(注意:都是英文输入法下进行输入)
退出编辑按ESC键,退出方法
不保存退出: :q!
保存退出: :wq
输入/,进入搜索,输入你需要搜索的文字,按Enter
按键盘G,可以直接定位到最末行
按键盘g,可以直接定位到首
cat命令:显示文本文件内容
用法: cat文件名 cat 文件名字
head:查看前几行 用法:head -n 5 文件名
tail:从指定点开始将文件写到标准输出,使用tail命令的-f选项可以方便的查阅正在改变的日志文件
tail -n 5文件名 查看后几行
tail -f error.log 不断刷新,看到最新内容
系统资源查询命令
ps 查看进程(动态)
-ef 显示所有运行进程,并显示启动进程的命令
Uid:用户ID,PID;进程id PPID:父进程,C:进程cpu占用率,Stime:进程从启动到现在所运行的时间
TTY:终端号。CMD:命令名称和参数
netstat 查看网络状况
netstat -apn 查看所有端口
管道命令
管道使用”|“符号,并且在命令之间建立管道,将前面命令的输出作为后面命令的输入
如:ls|greap abc:管卡道前面的命令显示当前目录下的文件,后面从列出的文件名中寻找含有abc字符串的文件或者目录
正常情况下,杀死服务进程(比如杀死tomcat进程)
通过进程名找到进程,在杀死进程
通过命令查找tomcat进程:ps -ef|grep tomcat(ps -ef是查找所有运行的进程,通过管道符找到所有进程中包含了”tomcat"字符串的进程,即为tomcat进程),假如5541
杀掉此进程,kill -9进程id(kill -9 5541)
通过端口来找到进程,再杀死进程
通过命令查找到占用此端口的进程编号:netstat -apn|grep 8080 根据8080查进程,假如 5541
杀掉进程:kill -9 pid(kill -9 5541)
三:权限赋予命令:chmod
linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在linux中可以使用||或ls -|命令来显示一个文件的属性以及文件所属的用户和组。
chmod语法:chmod[-R] xyz文件或目录
读(r): 4 写(w): 2 执行(x): 1
chmod 532 test.txt
压缩,解压命令
例如:将test文件压缩成test.tar.gz
安装软件命令
yum 自动下载安装(前提:能访问外网)
yum[操作][package]
例如:yum install mysql-server(安装mysql服务器)
rpm 安装
rpm -ivh 软件包名(ivh 安装显示安装进度)
相关问答
Q1: 如何使用linux命令关闭一个socket
在linuxlinuxsock命令的网络编程,特别是TCP的编程中,SIGPIPE信号错误是一个比较常见的问题,linuxsock命令我猜测linuxsock命令你是在使用TCP的socket吧,如果是这样的话,很有可能是你在向一个已经处于关闭状态的socket写数据,因为TCP是面向连接的协议。如果对方将socket给close掉linuxsock命令了,而你还继续往这个socket写数据,就会触发这个信号。因此,建议你在write之前检查一下对方是否已经close掉linuxsock命令了这个socket。如果回答得不对,可以继续追问哈
Q2: linux下send命令是干什么用的
功能描述:
发送消息,send只可用于基于连接的套接字,send 和 write唯一的不同点是标志的存在,当标志为0时,send等同于write。sendto 和 sendmsg既可用于无连接的套接字,也可用于基于连接的套接字。除了套接字设置为非阻塞模式,调用将会阻塞直到数据被发送完。
参数:
sock:索引将要从其发送数据的套接字。
buf:指向将要发送数据的缓冲区。
len:以上缓冲区的长度。
flags:是以下零个或者多个标志的组合体,可通过or操作连在一起
MSG_DONTROUTE:不要使用网关来发送封包,只发送到直接联网的主机。这个标志主要用于诊断或者路由程序。
MSG_DONTWAIT:操作不会被阻塞。
MSG_EOR:终止一个记录。
MSG_MORE:调用者有更多的数据需要发送。
MSG_NOSIGNAL:当另一端终止连接时,请求在基于流的错误套接字上不要发送SIGPIPE信号。
MSG_OOB:发送out-of-band数据(需要优先处理的数据),同时现行协议必须支持此种操作。
to:指向存放接收端地址的区域,可以为NULL。
tolen:以上内存区的长度,可以为0。
Q3: Linux怎么使用ss命令查看系统的socket状态
ss是Socket Statistics的缩写。顾名思义linuxsock命令,ss命令可以用来获取socket统计信息linuxsock命令,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,但请相信linuxsock命令我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。(但仍然比 netstat要快。)
命令格式linuxsock命令:
ss [参数]
ss [参数] [过滤]
2.命令功能linuxsock命令:
ss(Socket Statistics的缩写)命令可以用来获取 socket统计信息,此命令输出的结果类似于 netstat输出的内容,但它能显示更多更详细的 TCP连接状态的信息,且比 netstat 更快速高效。它使用了 TCP协议栈中 tcp_diag(是一个用于分析统计的模块),能直接从获得第一手内核信息,这就使得 ss命令快捷高效。在没有 tcp_diag,ss也可以正常运行。
3.命令参数:
-h, --help 帮助信息
-V, --version 程序版本信息
-n, --numeric 不解析服务名称
-r, --resolve 解析主机名
-a, --all 显示所有套接字(sockets)
-l, --listening 显示监听状态的套接字(sockets)
-o, --options 显示计时器信息
-e, --extended 显示详细的套接字(sockets)信息
-m, --memory 显示套接字(socket)的内存使用情况
-p, --processes 显示使用套接字(socket)的进程
-i, --info 显示 TCP内部信息
-s, --summary 显示套接字(socket)使用概况
-4, --ipv4 仅显示IPv4的套接字(sockets)
-6, --ipv6 仅显示IPv6的套接字(sockets)
-0, --packet 显示 PACKET 套接字(socket)
-t, --tcp 仅显示 TCP套接字(sockets)
-u, --udp 仅显示 UCP套接字(sockets)
-d, --dccp 仅显示 DCCP套接字(sockets)
-w, --raw 仅显示 RAW套接字(sockets)
-x, --unix 仅显示 Unix套接字(sockets)
-f, --family=FAMILY 显示 FAMILY类型的套接字(sockets),FAMILY可选,支持 unix, inet, inet6, link, netlink
-A, --query=QUERY, --socket=QUERY
QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-D, --diag=FILE 将原始TCP套接字(sockets)信息转储到文件
-F, --filter=FILE 从文件中都去过滤器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
4.使用实例:
实例1:显示TCP连接
命令:ss -t -a
输出:
代码如下:
[root@localhost ~]# ss -t -a
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 0 127.0.0.1:smux *:*
LISTEN 0 0 *:3690 *:*
LISTEN 0 0 *:ssh *:*
ESTAB 0 0 192.168.120.204:ssh 10.2.0.68:49368
[root@localhost ~]#
实例2:显示 Sockets 摘要
命令:ss -s
输出:
代码如下:
[root@localhost ~]# ss -s
Total: 34 (kernel 48)
TCP: 4 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 3《/p》 《p》Transport Total IP IPv6
* 48 - -
RAW 0 0 0
UDP 5 5 0
TCP 4 4 0
INET 9 9 0
FRAG 0 0 0
[root@localhost ~]#
说明:列出当前的established, closed, orphaned and waiting TCP sockets
实例3:列出所有打开的网络连接端口
命令:ss -l
输出:
代码如下:
[root@localhost ~]# ss -l
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 127.0.0.1:smux *:*
0 0 *:3690 *:*
0 0 *:ssh *:*
[root@localhost ~]#
实例4:查看进程使用的socket
命令:ss -pl
输出:
代码如下:
[root@localhost ~]# ss -pl
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 127.0.0.1:smux *:* users:((“snmpd”,2716,8))
0 0 *:3690 *:* users:((“svnserve”,3590,3))
0 0 *:ssh *:* users:((“sshd”,2735,3))
[root@localhost ~]#
实例5:找出打开套接字/端口应用程序
命令:ss -lp | grep 3306
输出:
代码如下:
[root@localhost ~]# ss -lp|grep 1935
0 0 *:1935 *:* users:((“fmsedge”,2913,18))
0 0 127.0.0.1:19350 *:* users:((“fmsedge”,2913,17))
[root@localhost ~]# ss -lp|grep 3306
0 0 *:3306 *:* users:((“mysqld”,2871,10))
[root@localhost ~]#
实例6:显示所有UDP Sockets
命令:ss -u -a
输出:
代码如下:
[root@localhost ~]# ss -u -a
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 127.0.0.1:syslog *:*
UNCONN 0 0 *:snmp *:*
ESTAB 0 0 192.168.120.203:39641 10.58.119.119:domain
[root@localhost ~]#
实例7:显示所有状态为established的SMTP连接
命令:ss -o state established ‘( dport = :smtp or sport = :smtp )’
输出:
代码如下:
[root@localhost ~]# ss -o state established ‘( dport = :smtp or sport = :smtp )’
Recv-Q Send-Q Local Address:Port Peer Address:Port
[root@localhost ~]#
实例8:显示所有状态为Established的HTTP连接
命令:ss -o state established ‘( dport = :http or sport = :http )’
输出:
代码如下:
[root@localhost ~]# ss -o state established ‘( dport = :http or sport = :http )’
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 75.126.153.214:2164 192.168.10.42:http
[root@localhost ~]#
实例9:列举出处于 FIN-WAIT-1状态的源端口为 80或者 443,目标网络为 193.233.7/24所有 tcp套接字
命令:ss -o state fin-wait-1 ‘( sport = :http or sport = :https )’ dst 193.233.7/24
实例10:用TCP 状态过滤Sockets:
命令:
代码如下:
ss -4 state FILTER-NAME-HERE
ss -6 state FILTER-NAME-HERE
输出:
代码如下:
[root@localhost ~]#ss -4 state closing
Recv-Q Send-Q Local Address:Port Peer Address:Port
1 11094 75.126.153.214:http 192.168.10.42:4669
说明:
FILTER-NAME-HERE 可以代表以下任何一个:
代码如下:
established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listen
closing
all : 所有以上状态
connected : 除了listen and closed的所有状态
synchronized :所有已连接的状态除了syn-sent
bucket : 显示状态为maintained as minisockets,如:time-wait和syn-recv.
big : 和bucket相反。
实例11:匹配远程地址和端口号
命令:
代码如下:
ss dst ADDRESS_PATTERN
ss dst 192.168.1.5
ss dst 192.168.119.113:http
ss dst 192.168.119.113:smtp
ss dst 192.168.119.113:443
输出:
代码如下:
[root@localhost ~]# ss dst 192.168.119.113
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.119.103:16014 192.168.119.113:20229
ESTAB 0 0 192.168.119.103:16014 192.168.119.113:61056
ESTAB 0 0 192.168.119.103:16014 192.168.119.113:61623
ESTAB 0 0 192.168.119.103:16014 192.168.119.113:60924
ESTAB 0 0 192.168.119.103:16050 192.168.119.113:43701
ESTAB 0 0 192.168.119.103:16073 192.168.119.113:32930
ESTAB 0 0 192.168.119.103:16073 192.168.119.113:49318
ESTAB 0 0 192.168.119.103:16014 192.168.119.113:3844
[root@localhost ~]# ss dst 192.168.119.113:http
State Recv-Q Send-Q Local Address:Port Peer Address:Port
[root@localhost ~]# ss dst 192.168.119.113:3844
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.119.103:16014 192.168.119.113:3844
[root@localhost ~]#
实例12:匹配本地地址和端口号
命令:
代码如下:
ss src ADDRESS_PATTERN
ss src 192.168.119.103
ss src 192.168.119.103:http
ss src 192.168.119.103:80
ss src 192.168.119.103:smtp
ss src 192.168.119.103:25
输出:
代码如下:
[root@localhost ~]# ss src 192.168.119.103:16021
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:63054
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:62894
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:63055
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:2274
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:44784
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:7233
ESTAB 0 0 192.168.119.103:16021 192.168.119.103:58660
ESTAB 0 0 192.168.119.103:16021 192.168.119.201:44822
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:56737
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:57487
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:56736
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:64652
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:56586
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:64653
ESTAB 0 0 192.168.119.103:16021 10.2.1.206:56587
[root@localhost ~]#
实例13:将本地或者远程端口和一个数比较
命令:
代码如下:
ss dport OP PORT
ss sport OP PORT
输出:
代码如下:
[root@localhost ~]# ss sport = :http
[root@localhost ~]# ss dport = :http
[root@localhost ~]# ss dport \》 :1024
[root@localhost ~]# ss sport \》 :1024
[root@localhost ~]# ss sport \《 :32000
[root@localhost ~]# ss sport eq :22
[root@localhost ~]# ss dport != :22
[root@localhost ~]# ss state connected sport = :http
[root@localhost ~]# ss \( sport = :http or sport = :https \)
[root@localhost ~]# ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24
说明:
ss dport OP PORT 远程端口和一个数比较;ss sport OP PORT 本地端口和一个数比较。
OP 可以代表以下任意一个:
《= or le : 小于或等于端口号
》= or ge : 大于或等于端口号
== or eq : 等于端口号
!= or ne : 不等于端口号
《 or gt : 小于端口号
》 or lt : 大于端口号
实例14:ss 和 netstat 效率对比
命令:
代码如下:
time netstat -at
time ss
输出:
代码如下:
[root@localhost ~]# time ss
real 0m0.739s
user 0m0.019s
sys 0m0.013s
[root@localhost ~]#
[root@localhost ~]# time netstat -at
real 2m45.907s
user 0m0.063s
sys 0m0.067s
[root@localhost ~]#
说明:
用time 命令分别获取通过netstat和ss命令获取程序和概要占用资源所使用的时间。在服务器连接数比较多的时候,netstat的效率完全没法和ss比。
关于linuxsock命令和linux sock文件解析的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







