手册:

http://linux.51yip.com/

https://www.linuxcool.com/

查看命令来自哪个包

  1. 查看tcpdump命令来自哪个软件包
  2. # yum provides *bin/命令名称

ss -naltup

ss命令 – 显示活动套接字信息 是类似netstat的工具。能显示查看网络状态信息,包括TCP、UDP连接,端口

-n  不解析端口对应的服务名称,已数字方式显示端口号
-a  显示所有套接字
-l  显示处于监听状态的套接字
-t  只显示TCP套接字
-u  只显示UDP套接字
-p  显示进程信息

# ss -naltup |grep ":80"

和ssh 服务建立连接的套接字信息(注意不加l)
# ss -natup |grep ":22"  

# ss -natp |grep ":22"

netstat

netstat命令 – 显示网络状态 netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等

-a 显示所有连线中的Socket
-p 显示套接字所属进程的PID和名称。
-u 显示UDP传输协议的连线状况
-t 显示tcp传输协议的连线状况
-n 直接使用IP地址,不通过域名服务器 
-l 只显示正在侦听的套接字(这是默认的选项)


# netstat -anp |grep ":3306" -c   #查看3306 端口(mysql)的链接数
# netstat -anp |grep ":22" -c

# netstat -naltp|grep 8080     #找出运行在指定端口的进程

# netstat -naltup   显示tcp/udp 所有连接
# netstat -natp |grep ":80"

显示网络接口列表
# netstat -i
Kernel Interface table
Iface       MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP 
enp6s0     1500      0     0      0 0      0      0      0     0 BMU

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

last

功能说明:列出目前与过去登入系统的用户相关信息。

主要参数
- R: 省略 hostname 的栏位
-n:指定输出记录的条数。
-f file:指定用文件file作为查询用的log文件。
-t tty:只显示指定的虚拟控制台上登录情况。
-h 节点:只显示指定的节点上的登录情况。
-i IP:只显示指定的IP上登录的情况。
-1:用IP来显示远端地址。
-y:显示记录的年、月、日。      #内核 2.6.32-431.el6.x86_64 -y 已经被 -F 替换
-ID:知道查询的用户名。
-x:显示系统关闭、用户登录和退出的历史。
-a  把从何处登入系统的主机名称或IP地址,显示在最后一行。
-d  将IP地址转换成主机名称。
查看最后5条登录信息
# last -a -5

查看登录系统的用户相关信息
# last -a -f /var/log/btmp 

查看指定时间之前登录信息
# last -a -t 20190210123030
#2019-02-10 12:30:30之前

查看记录每个用户最后的登入信息
# lastlog

w

w 显示目前登入系统的用户信息。


# w

# ss -natp |grep ":22"

iftop

iftop是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能。必须以root身份才能运行

iftop
相关命令:暂无相关命令
iftop是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能。必须以root身份才能运行

# iftop -i ens33 
# iftop -m 100M

常用参数

-i设定监测的网卡,如:# iftop -i eth1


-B 以bytes为单位显示流量(默认是bits),如:# iftop -B

-n使host信息默认直接都显示IP,如:# iftop -n

-N使端口信息默认直接都显示端口号,如: # iftop -N

-F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0

-h(display this message),帮助,显示参数信息

-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;

-b使流量图形条默认就显示;

-f这个暂时还不太会用,过滤计算包用的;

-P使host信息及端口信息默认就都显示;

-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M


进入iftop画面后的一些操作命令(注意大小写)

按h切换是否显示帮助;

按n切换显示本机的IP或主机名;直接显示IP, 不进行DNS反解析

按s切换是否显示本机的host信息;

按d切换是否显示远端目标主机的host信息;

按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;

按N切换显示端口号或端口服务名称;

按S切换是否显示本机的端口信息;

按D切换是否显示远端目标主机的端口信息;

按p切换是否显示端口信息;

按P切换暂停/继续显示;

按b切换是否显示平均流量图形条;

按B切换计算2秒或10秒或40秒内的平均流量;

按T切换是否显示每个连接的总流量;

按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;

按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;

按j或按k可以向上或向下滚动屏幕显示的连接记录;

按1或2或3可以根据右侧显示的三列流量数据进行排序;

按<根据左边的本机名或IP排序;

按>根据远端目标主机的主机名或IP排序;

按o切换是否固定只显示当前的连接;

按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!

按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢
按q退出监控。

tcpdump

根据使用者的定义对网络上的数据包进行截获的包分析工具。 -v 当分析和打印的时候, 产生详细的输出 -n 不对地址(比如, 主机地址, 端口号)进行数字表示到名字表示的转换 链接:https://www.cnblogs.com/lvdongjie/p/10911564.html https://blog.csdn.net/chinaltx/article/details/87469933

# man tcpdump
# tcpdump -i eth0 -nnv
# tcpdump -i eth0 -nnv -c 100
# tcpdump -i eth0 -nnv -w /file1.tcpdump
# tcpdump -nnv -r /file1.tcpdump

# tcpdump -i eth0 -nnv not port 80
# tcpdump -i eth0 -nnv port 22
# tcpdump -i eth0 -nnv port 80
# tcpdump -i eth0 -nnv net 192.168.0.0/24
# tcpdump -i eth0 -nnv host 192.168.0.15
# tcpdump -i eth0 -nnv dst port 22
# tcpdump -i eth0 -nnv src port 22

# tcpdump -i eth0 -nnv arp
# tcpdump -i eth0 -nnv icmp
# tcpdump -i eth0 -nnv udp #udp协议
# tcpdump -i eth0 -nnv tcp #tcp协议,三次握手及四次断开
# tcpdump -i eth0 -nnv ip  #ip协议
# tcpdump -i eth0 -nnv vrrp #keepalived使用协议
使用tcpdump抓取HTTP包
# tcpdump  -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854

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

apring

查看ip 地址对应的mac 地址
[root@localhost ~]# arping -I wlp4s0 192.168.0.140

ps

ps命令是“process status”的缩写,ps命令用于显示当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。 ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等

-a    显示所有终端机下执行的程序,除了阶段作业领导者之外
a    显示现行终端机下的所有程序,包括其他用户的程序
-A    显示所有程序
-e    此选项的效果和指定”A”选项相同
u  以用户为主的格式来显示进程状况
-u  <用户识别码>    此选项的效果和指定”-U”选项相同
-U  <用户识别码>    列出属于该用户的程序的状况,也可使用用户名称来指定
x   显示所有程序,不以终端机来区分
-f  显示UID,PPIP,C与STIME栏位
c   列出进程时,显示每个进程真正的指令名称,而不包含路径,参数或常驻服务的标示。
-C  <指令名称>  指定执行指令的名称,并列出该指令的进程的状况。

把所有进程显示出来:
# 把所有进程显示出来:
ps -aux
ps -A 

# 查找特定进程信息:
ps -ef | grep ssh
ps -aux | grep ssh

# 显示指定用户信息:
ps -u root

#不区分终端,显示所有用户的所有进程
ps aux   

#不区分终端,显示所有用户的所有进程
ps -ef

# ps axo pid,comm,pcpu      //查看进程的PID、名称以及CPU 占用率

# ps axo pid,comm,pcpu --sort=pcpu       // sort 参数以pcpu 为对象对

# ps axo pid,ppid,comm,pcpu,pmem | grep httpd

#CPU或者内存进行排序,-降序,+升序
ps aux --sort=-pcpu,+pmem 
ps aux --sort=+pmem  //按内存升序排列
ps aux --sort=+pcpu
ps aux --sort=+pcpu,+pmem


ps -u nginx -f -w   #显示某一用户的进程

#通过名字或命令搜索进程
ps -C nginx 
#  ps -f -C httpd
#  ps -fC sshd

pstree

以树状图显示程序 显示每个程序的完全指令,包含路径、参数或是常驻服务标识、列出树状图时特别标注现在执行的程序

显示当前所有进程的进程号和进程id:
# pstree -p

显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示:
# pstree -a
# pstree -h

# pstree -p |grep httpd

top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析。 在top命令中按f按可以查看显示的列信息,按对应字母来开启/关闭列,大写字母表示开启,小写字母表示关闭。带*号的是默认列。 linux top命令及参数详解:https://www.pianshen.com/article/11961173000/

显示进程信息:
# top
设置信息更新次数:
# top -n 2


显示完整的进程信息:
# top -c
以批处理模式显示程序信息:
# top -b
以累积模式显示程序信息:
# top -s


在top基本视图 快捷键

N - 以 CPU 占用率大小的顺序排列进程列表 
P - 以 CPU 占用率大小的顺序排列进程列表 
M - 以内存占用率大小的顺序排列进程列表
L - 定位进程所在的行
1(数字1) - 可监控每个逻辑CPU的状况:
c - 完整的进程信息
q - 退出 top 
L - 定位进程所在的行
k - 杀掉进程。输入k之后,会提示用户输入PID及要发送哪种信号   
i - 只显示正在运行的进程
空格 - 立即刷新信息。
PgUp alt+Up或alt+ctrl+k
PgDn alt+Down或alt+ctrl+
l(小写的L) - 关闭或开启第一部分第一行 top 信息的表示
h - 显示帮助
Esc - 退出编辑


敲击键盘“b”(打开/关闭加亮效果) 监控哪个进程占用MEM最多


   s - 改变画面更新频率 
   l(小写的L) - 关闭或开启第一部分第一行 top 信息的表示 
   t - 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示 
   m - 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示 
   N - 以 PID 的大小的顺序排列表示进程列表 
   P - 以 CPU 占用率大小的顺序排列进程列表 
   M - 以内存占用率大小的顺序排列进程列表 
   h - 显示帮助 
   n - 设置在进程列表所显示进程的数量 
   q - 退出 top
统计信息区

前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

01:06:48                     当前时间
up 1:22                      系统运行时间,格式为时:分
1 user                       当前登录用户数
load average: 0.06, 0.60, 0.48    系统负载,即任务队列的平均长度。

三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 29 total        进程总数
1 running              正在运行的进程数
28 sleeping            睡眠的进程数
0 stopped              停止的进程数
0 zombie               僵尸进程数
Cpu(s): 0.3% us        用户空间占用CPU百分比
1.0% sy                内核空间占用CPU百分比
0.0% ni                用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id               空闲CPU百分比
0.0% wa                等待输入输出的CPU时间百分比
0.0% hi                硬中断(Hardware IRQ)占用CPU的百分比
0.0% si                软中断(Software Interrupts)占用CPU的百分比

最后两行为内存信息。内容如下:

Mem: 191272k total        物理内存总量
17616k free               空闲内存总量
173656k used              使用的物理内存总量
22052k buffers            用作内核缓存的内存量

Swap: 192772k total        交换区总量
192772k free               空闲交换区总量
0k used                    使用的交换区总量
123988k cached             缓冲的交换区总量。

内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。


PID:进程ID,进程的唯一标识符

USER:进程所有者的实际用户名。

PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。

NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级

VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR:SHR是进程使用的共享内存。共享内存大小,单位kb

S:这个是进程的状态。它有以下不同的值:
    D - 不可中断的睡眠态。
    R – 运行态
    S – 睡眠态
    T – 被跟踪或已停止
    Z – 僵尸态
%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。

%MEM:进程使用的可用物理内存百分比。

TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。

COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)

top命令的补充


监控java线程数:
ps -eLf | grep java | wc -l

监控网络客户连接数:
netstat -n | grep tcp | grep 侦听端口 | wc -l

获取某进程中运行中的线程数量(PID指的是进程ID):
ls /proc/PID/task | wc -l

在linux中还有一个命令pmap,来输出进程内存的状况,可以用来分析线程堆栈:
pmap PID

lsof

lsof命令用于查看进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。

lsof 命令可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能
-a 列出打开文件存在的进程
-c <进程名>列出指定进程所打开的文件
+d <目录>    列出目录下被打开的文件
-n <目录> 列出使用NFS的文件
-p <进程号> 列出指定进程号所打开的文件
-i 用以监听有关的任何符合的地址,若没有相关地址被指定,则监听全部   
用法: lsof -i [46][protocol][@hostname|hostaddr][:serivce|port]
根据某文件查看正在被哪些进程使用
# lsof /usr/sbin/vsftpd
# which  httpd
/usr/sbin/httpd
# lsof /usr/sbin/httpd

根据某个端口查看对应进程( 查看一下80端口的进程)
# lsof -i:80   
# lsof -i tcp:80   
# lsof -i:http

列出目录下被打开的文件:
# lsof +d /root

列出所有TCP网络连接
# lsof -i tcp
查找某个程序打开的所有文件
# lsof -c httpd

列出所有由某个PID对应的进程打开的文件
# lsof -p 3738
递归查找某个目录中所有打开的文件
# lsof +D /usr/local
用户打开的文件
# lsof -u zhangy |more     

列出目录下被打开的文件:
# lsof +d /root
递归列出目录下被打开的文件:
# lsof +D /home/linuxcool

fuser

fuser 命令用指定的文件或者文件系统显示进程进程号,默认情况下每一个文件名后会跟着一个字母来表示类型

-u PID显示用户名
-v 运行时,显示相信处理信息
-a 与程序相关的所有文件
-k 删除程序相关的所有文件
查询当前目录下的进程
# fuser -uv .

显示与/root 目录相关的进程
# fuser -a /root

根据某文件查看正在被哪些进程使用
# fuser /usr/sbin/httpd
# lsof /usr/sbin/httpd

显示信号
#fuser -l   

fuser -k /root #杀死与/root 目录相关的进程
fuser -uv .    #查询当前目录下的进程

rpm

rpm是一个功能十分强大的软件包管理系统,它使得在Linux下安装、升级和删除软件包的工作变得容易,并且具有查询、验证软件包的功能

一、安装选项
rpm -i ( or --install)  packge.rpm 
rpm -ivh packge.rpm 
rpm --force -ivh package.rpm   #忽略报错,强制安装

二、删除选项
rpm -e ( or --erase) package.rpm 
rpm -e package.rpm  --nodeps  #不检查依赖性 

三、升级选项
rpm -U ( or --upgrade) packge.rpm 
rpm -U packge.rpm 
rpm -Uvh ipchains-1.3.6-1.i386.rpm     #升级包

四、查询 
-p 查询软件包的文件 
-f 查询属于哪个软件包 
-a 查询所有安装的软件包 
--whatprovides 查询提供了 功能的软件包 
-g 查询属于 组的软件包 
--whatrequires 查询所有需要 功能的软件包 

-i 显示软件包的概要信息 
-l 显示软件包中的文件列表 
-c 显示配置文件列表 
-d 显示文档文件列表 
-s 显示软件包中文件列表并显示每个文件的状态 

五、校验已安装的软件包

检验RPM包完整性
没有显示说明包没有被修改
rpm -V bash
rpm -V kernel
rpm -V vsftpd
rpm -Vf /etc/ssh/sshd_config
rpm -ivh ipchains-1.3.6-1.i386.rpm     #安装包,并显示详细进度
rpm -Uvh ipchains-1.3.6-1.i386.rpm            #升级包
rpm -e  httpd               #移除安装包

rpm -qc httpd            #列出httpd配置文件列表 
rpm -ql openssl | grep /etc*

rpm -ql httpd            #列出httpd中有哪些文件
rpm -qd httpd            #显示文档文件列表
rpm -qs httpd            #显示软件包中文件列表并显示每个文件的状态 

rpm -qf /usr/bin/who       #查找一个文件属于哪个rpm包
rpm -qf ` which iostat `   #查询iostat命令归属已安装的哪个软件包
rpm -qpl mon-0.37j-1.i386.rpm      #列出一个rpm包的文件信息
rpm -qpi mon-0.37j-1.i386.rpm     #列出一个rpm包的描述信息

rpm -qa                  #列出所有已安装的包
rpm -qa openssl
rpm -qa |grep http*      #获取已经安装的以http为前缀的包
rpm -qi httpd             #得到httpd安装包的信息

rpm -V vsftpd           #检验RPM包完整性
rpm -Vf /etc/ssh/sshd_config

md5sum

md5sum命令用于生成和校验文件的md5值,是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同。

生成文件md5值:
# md5sum file  
# sha1sum file

# md5sum /etc/httpd/conf/httpd.conf
f5e7449c0f17bc856e86011cb5d152ba  /etc/httpd/conf/httpd.conf


# md5sum zzz > zzz.md5        # 生成md5加密检验和 
# md5sum -c zzz.md5           # 检验与文件是否一致,

diff

比较文件的差异 -y 以并列的方式显示文件的异同之处 -W 在使用-y参数时,指定栏宽 -b 不检查空格字符的不同

# diff test1.rb test.rb           #比较二个文件的不同
# diff myweb/ html/                  #比较二个文件夹的不同
# diff -r myweb/ html/              #递归比较二个文件夹的不同
# diff log2014.log log2013.log  -y -W 50

获取当前的/etc 目录md5值
对重要的文件做MD5计算保存到文件中
# find /etc -type f -exec md5sum {} \; >/tmp/`date +%F%H%M`-md5.txt 
修改文件、删除文件、添加文件
# find /etc -type f -exec md5sum {} \; >/tmp/`date +%F%H%M`-md5.txt 
# diff /tmp/1-md5.txt /tmp/2-md5.txt  

# diff log2014.log log2013.log  -y -W 50
注意:”|”表示前后2个文件内容有不同,”<“表示后面文件比前面文件少了1行内容,”>”表示后面文件比前面文件多了1行内容

openssh

openSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。对应的命令就是openssl命令,用于加密算法。

OpenSSL有两种运行模式:交互模式和批处理模式。
直接输入openssl回车进入交互模式,输入带命令选项的openssl进入批处理模式。
-in  输入
-out 输出

用SHA1算法计算文件file.txt的哈西值,输出到stdout:
# openssl dgst -sha1 1.txt
# openssl sha1 -out digest.txt file.txt

#加密
[root@localhost ~]# openssl enc -des3 -in /etc/passwd -out /home/passwd.enc
#解密
[root@localhost ~]# openssl enc -des3 -d -in /home/passwd.enc -out 
/home/pwd.enc

#加密
[root@localhost ~]# openssl enc -des3 -a -in /etc/passwd -out /home/passwd1.enc
#解密
[root@localhost ~]# openssl enc -des3 -a -d -in /home/passwd1.enc -out
/password_new.txt



# 对称加密应用例子
# 用DES3算法的CBC模式加密文件plaintext.doc,
# 加密结果输出到文件ciphertext.bin
openssl enc -des3 -salt -in plaintext.doc -out ciphertext.bin

# 用DES3算法的OFB模式解密文件ciphertext.bin,
# 提供的口令为trousers,输出到文件plaintext.doc
# 注意:因为模式不同,该命令不能对以上的文件进行解密
openssl enc -des-ede3-ofb -d -in ciphertext.bin -out plaintext.doc -pass pass:trousers


生成1024位DSA参数集,并输出到文件dsaparam.pem:
[root@linuxcool ~]# openssl dsaparam -out dsaparam.pem 1024
使用参数文件dsaparam.pem生成DSA私钥匙,采用3DES加密后输出到文件dsaprivatekey.pem:
[root@linuxcool ~]# openssl gendsa -out dsaprivatekey.pem -des3 dsaparam.pem
产生1024位RSA私匙,用3DES加密它,口令为trousers,输出到文件rsaprivatekey.pem:

[root@linuxcool ~]# openssl genrsa -out rsaprivatekey.pem -passout pass:trousers -des3 1024