手册:
查看命令来自哪个包
查看tcpdump命令来自哪个软件包# 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
