ss是Socket Statistics的缩写。顾名思义,ss
命令可以用来获取socket统计信息,它可以
显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。(但仍然比 netstat要快。)命令格式:ss [参数]ss [参数] [过滤] 2.命令功能: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=QUERYQUERY := {allinettcpudprawunixpacketnetlink}[,QUERY]-D, --diag=FILE 将原始TCP套接字(sockets)信息转储到
文件-F, --filter=FILE 从文件中都去过滤器信息FILTER := [ state TCP-STATE ] [ EXPRESSION ]4.使用实例:实例1:显示TCP连接命令:ss -t -a输出:代码如下:[root@localhost ~]# ss -t -aState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 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 -sTotal: 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 0UDP 5 5 0TCP 4 4 0INET 9 9 0FRAG 0 0 0[root@localhost ~]#说明:列出当前的established, closed, orphaned and waiting TCP sockets实例3:列出所有打开的网络连接端口命令:ss -l输出:代码如下:[root@localhost ~]# ss -lRecv-Q Send-Q Local Address:Port Peer Address:Port0 0 127.0.0.1:smux *:*0 0 *:3690 *:*0 0 *:ssh *:*[root@localhost ~]#实例4:查看进程使用的socket命令:ss -pl输出:代码如下:[root@localhost ~]# ss -plRecv-Q Send-Q Local Address:Port Peer Address:Port0 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 -lpgrep 19350 0 *:1935 *:* users:((“fmsedge”,2913,18))0 0 127.0.0.1:19350 *:* users:((“fmsedge”,2913,17))[root@localhost ~]# ss -lpgrep 33060 0 *:3306 *:* users:((“mysqld”,2871,10))[root@localhost ~]#实例6:显示所有UDP Sockets命令:ss -u -a输出:代码如下:[root@localhost ~]# ss -u -aState Recv-Q Send-Q Local Address:Port Peer Address:PortUNCONN 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:Port0 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-HEREss -6 state FILTER-NAME-HERE输出:代码如下:[root@localhost ~]#ss -4 state closingRecv-Q Send-Q Local Address:Port Peer Address:Port1 11094 75.126.153.214:http 192.168.10.42:4669说明:FILTER-NAME-HERE 可以代表以下任何一个:代码如下:establishedsyn-sentsyn-recvfin-wait-1fin-wait-2time-waitclosedclose-waitlast-acklistenclosingall : 所有以上状态connected : 除了listen and closed的所有状态synchronized :所有已连接的状态除了syn-sentbucket : 显示状态为maintained as minisockets,如:time-wait和syn-recv.big : 和bucket相反。实例11:匹配远程地址和端口号命令:代码如下:ss dst ADDRESS_PATTERNss dst 192.168.1.5ss dst 192.168.119.113:httpss dst 192.168.119.113:smtpss dst 192.168.119.113:443输出:代码如下:[root@localhost ~]# ss dst 192.168.119.113State Recv-Q Send-Q Local Address:Port Peer Address:PortESTAB 0 0 192.168.119.103:16014 192.168.119.113:20229ESTAB 0 0 192.168.119.103:16014 192.168.119.113:61056ESTAB 0 0 192.168.119.103:16014 192.168.119.113:61623ESTAB 0 0 192.168.119.103:16014 192.168.119.113:60924ESTAB 0 0 192.168.119.103:16050 192.168.119.113:43701ESTAB 0 0 192.168.119.103:16073 192.168.119.113:32930ESTAB 0 0 192.168.119.103:16073 192.168.119.113:49318ESTAB 0 0 192.168.119.103:16014 192.168.119.113:3844[root@localhost ~]# ss dst 192.168.119.113:httpState Recv-Q Send-Q Local Address:Port Peer Address:Port[root@localhost ~]# ss dst 192.168.119.113:3844State Recv-Q Send-Q Local Address:Port Peer Address:PortESTAB 0 0 192.168.119.103:16014 192.168.119.113:3844[root@localhost ~]#实例12:匹配本地地址和端口号命令:代码如下:ss src ADDRESS_PATTERNss src 192.168.119.103ss src 192.168.119.103:httpss src 192.168.119.103:80ss src 192.168.119.103:smtpss src 192.168.119.103:25输出:代码如下:[root@localhost ~]# ss src 192.168.119.103:16021State Recv-Q Send-Q Local Address:Port Peer Address:PortESTAB 0 0 192.168.119.103:16021 192.168.119.201:63054ESTAB 0 0 192.168.119.103:16021 192.168.119.201:62894ESTAB 0 0 192.168.119.103:16021 192.168.119.201:63055ESTAB 0 0 192.168.119.103:16021 192.168.119.201:2274ESTAB 0 0 192.168.119.103:16021 192.168.119.201:44784ESTAB 0 0 192.168.119.103:16021 192.168.119.201:7233ESTAB 0 0 192.168.119.103:16021 192.168.119.103:58660ESTAB 0 0 192.168.119.103:16021 192.168.119.201:44822ESTAB 0 0 192.168.119.103:16021 10.2.1.206:56737ESTAB 0 0 192.168.119.103:16021 10.2.1.206:57487ESTAB 0 0 192.168.119.103:16021 10.2.1.206:56736ESTAB 0 0 192.168.119.103:16021 10.2.1.206:64652ESTAB 0 0 192.168.119.103:16021 10.2.1.206:56586ESTAB 0 0 192.168.119.103:16021 10.2.1.206:64653ESTAB 0 0 192.168.119.103:16021 10.2.1.206:56587[root@localhost ~]#实例13:将本地或者远程端口和一个数比较命令:代码如下:ss dport OP PORTss 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 -attime ss输出:代码如下:[root@localhost ~]# time ssreal 0m0.739suser 0m0.019ssys 0m0.013s[root@localhost ~]#[root@localhost ~]# time netstat -atreal 2m45.907suser 0m0.063ssys 0m0.067s[root@localhost ~]#说明:用time 命令分别获取通过netstat和ss命令获取程序和概要占用资源所使用的时间。在服务器连接数比较多的时候,netstat的效率完全没法和ss比。文件名称区分大小写
文件名最长255个字符
包括路径在内文件名称最长4095个字节
蓝色-->目录:绿色-->可执行文件:红色-->压缩文件:浅蓝色-->链接文件:灰色-->其它文件
除了斜杠和NUL,所有字符都有效,使用特殊字符的目录名和文件不推荐使用,有些字符需要加引号来引用
标准Linux文件系统,文件名称大小写敏感
/boot: 内核引导文件存放目录
/bin: 所有用户使用的基本命令不能关联至独立分区,系统启动会用到的程序
/sbin: 管理类的基本命令不能关联至独立分区,系统启动会用到的程序
/lib: 系统启动时程序依赖的基本共享库文件及内核模块文件(/lib/modules)
/etc: 配置文件目录
/home: 普通用户家目录
/root: 管理员家目录
/media: 便携式移动设备挂载点
/mnt: 临时文件系统挂载点
/dev: 设备文件及特殊文件存储位置
/opt: 第三方应用程序安装位置,同/usr/local
/srv: 系统服务用到的数据
/tmp: 存储临时文件
/usr: 系统软件资源存放目录
/var: 系统运行时的可变动数据:/var/tmp:系统两次重启产生的临时数据
/proc: 内核与进程信息相关的虚拟文件系统
/sys: 硬件设备相关信息的虚拟文件系统
/selinux: selinux安全策略
meta data:
文件类型,权限,UID,GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据
文件类型:
-: 普通文件
d: 目录文件
b: 块设备
c: 字符设备
l: 符号链接文件
p: 管道文件pipe
s: 套接字文件socket
查看方式:
使用ll,ls -l: 看第一个字符,链接数,
ls -lih:
inode编号,文件类型,文件权限,硬链接个数,文件属主,文件属组,文件大小,文件修改时间
file命令,type命令,
stat命令: 文件详细信息,修改时间mtime,改变时间ctime,访问时间atime
du -sm filename: 查看文件大小
文件扩展名:
源码.tar、.tar.gz、.tgz、.zip、.tar.bz表示压缩文件,创建命令一般为tar,gzip,zip等。
.sh表示shell脚本文件,通过shell语言开发的程序。
.pl表示perl语言文件,通过perl语言开发的程序。
.py表示python语言文件,通过python语言开发的程序。
.html、.htm、.php、.jsp、.do表示网页语言的文件。
.conf表示系统服务的配置文件。
.rpm表示rpm安装包文件。
touch: 创建空文件和刷新时间戳
touch [OPTION]... FILE...
-a: 改变atime和ctime
-m: 改变mtime和ctime
-t: [[CC[YY[MMDDhhmm[.ss]]]]]
指定atime和mtime的时间戳
-c: 如果文件不存在,则不予创建
硬链接:
同一个文件多个名字
不支持跨分区,不支持目录
平级关系,删除原始文件不影响打开
iNode相同,链接数增长
创建语法,原始文件路径,相对于工作目录的路径
文件类型,普通文件
创建方式ln filename [linkname]
软链接:
与原始文件,不同的文件
支持跨分区,支持目录
依赖关系,删除原始文件即失效
iNode不同,链接数不会增长
创建语法,原始文件路径,相对于软链接的路径
文件类型显示l
创建方式ln -s filename [linkname]
实例说明:
cd ../data
mkdir -pv d1/d2
touch linux.txt
ln linux.txt d1/d2/linux.hlink
ln -s ../../linux.txt d1/d2/linux.slink
ln -s ../d2 d1/d2/d2.slink
tree
执行如图:
stat: 查看文件状态
示例: stat /etc/issue
stat/etc/motd
touch: 创建空文件和刷新时间
touch [OPTION]... FILE...
-a: 仅改变atime和ctime
-m: 仅改变mtime和ctime
-t: 指定atime和mtime时间戳
-c: 如果文件不存在,则不予创建
示例: touch /data/f1
cp: 复制文件和目录
cp [OPTION]... SOURCE... DIRECTORY
-i: 覆盖前提示
-n: 不覆盖
-r,-R: 递归复制目录及内部的所有内容
-a: 归档,相当于-dR --preserv=all
-p: 等同--preserv=mode,ownership,timestamp
-u: 只复制源比目标更新或目标不存在
-b: 目标存在,覆盖前先备份filename~
--backup=numbered: 目标存在,覆盖前先备份并加数字后缀
cp SRC DEST
SRC是文件:
如果目标不存在: 新建DEST,并将SRC中内容填充至DEST中
如果目标存在:
如果DEST是文件: 将SRC中内容覆盖至DEST中
如果DEST是目录: 在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
SRC是多个文件:
DEST必须存在,且为目录
SRC是目录: 使用选项-r
如果DEST不存在: 则创建指定目录,复制SRC目录中所有文件至DEST中
如果DEST存在:
如果DEST是文件: 报错
如果DEST是目录:在DEST下新建与原目录同名的目录,并将SRC中内容复制至新目录中
示例: mkdir -p /data/backup
cp -ab /etc/issue /etc/passwd /etc/group /data/backup
mv: 移动和重命名文件
mv [OPTION]... SOURCE... DIRECTORY
-f: 强制
-b: 目标存在,覆盖前先备份
示例: mv /etc/issue /data
mv /etc/issue /data/issue.bak
rm: 删除
rm [OPTION]... FILE...
-f: 强制删除
-r: 递归
--no-preserve-root 删除/
示例: rm -rf /data/d1/d2
tree: 显示目录树
-d:只显示目录
-L level: 指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
示例: tree /data
ls:列出指定目录下的内容
ls [OPTION]... [FILE]...
-a:显示所有文件包括隐藏文件
-A:显示除.和..之外的所有文件
-l,--long:显示文件的详细属性信息
-h:对文件大小进行单位换算,可能影响精度
-d:查看目录本身而非其内部的文件
-r:逆序显示文件
-R:递归显示文件
示例:ls -lah / 详细显示/目录下的所有文件(包括隐藏文件)
mkdir:创建目录
mkdir [OPTION]... DIRECTORY...
-p:自动按需创建父目录
-m:创建目录时给定权限
示例: mkdir -p /data/test/A/B
cat:正向查看文本内容
cat [OPTION]... [FILE]...
-n:给显示的文本行编号
-E:显示行结束符号$
示例: cat -n /etc/fstab
tail:显示文本内容,默认显示后10行
tail [OPTION]... [FILE]...
-n #:显示文本后#行内容
-f:查看文件尾部内容结束后不退出,跟随显示新增的行
示例: tail -8 /etc/passwd
head:显示文本内容,默认显示头10行
head [OPTION]... [FILE]...
-n #:显示文本头#行内容
示例: head -5 /etc/passwd
less:分屏显示文本内容,不主动退出
less [options] file [...]
Space键:显示文本下一屏内容
Enter键:只显示文本下一行内容
b键:显示文本上一屏内容
q键:退出
cp /etc/profile /tmp
vim /tmp/profile
:%s/^\s\+//
如图:
命令模式下输入:
:set tabstop=4
或写入用户配置文件~/.vimrc
您的位置: Linux系统教程 >Linux技巧 >
cenots下从官网安装composer无法安装的解决办法
时间:2016-01-04来源:linux网站 作者:路过暴风
composer官网下的安装方法如下:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
然而,有时官网会连接不上,造成这一步卡住,失败,此时可以去官网(一般可以访问)查看下载地址,直接使用wget下载composer.phar:
wget https://getcomposer.org/download/1.0.0-alpha11/composer.phar
然而有时,这一步也不好使,此时可以在windows下使用迅雷下载链接,然后上传到服务器,然后执行mv语句,之后需要使用chmod修改文件权限为可执行,不然执行时会报错:
评论列表(0条)