运行环境是Ubuntu 16.0.4,联网安装相关命令,同时记录常见命令fdisk、df、top、free等,命令格式的详细参数等,可以参考help或者man。
1、fdisk
sudo fdisk -l
fdisk命令,查看系统所有的硬盘设备信息。
如图,会显示如下的内存信息(未截图)、信息120GB的SSD硬盘,以及外挂的64GB SD卡信息。
2、df命令
命令格式:
df [OPTION]... [FILE]...
作用:查看Linux所有文件系统的硬盘利用率信息(仅包括已经挂载的分区)。
3、du 命令
命令格式
du [OPTION]... [FILE]...
OPTION]... [FILE]...
作用:查看文件占用的磁盘空间大小
du -h -d 1
4、md5sum命令
作用:查看文件md5校验值
1、free命令
如图所示,free 命令显示,当前内存使用的总体情况。
2、top命令
具体命令格式,可以参考help。以及如下连接:
前5行是,统计信息,具体含义:
第一行是,系统时间信息、用户数、任务队列。
序号 | 值 | 含义 |
1 | 09:16:01 | 当前系统时间 |
2 | 50min | 系统运行时间 格式是 小时:分钟 |
3 | 1 [user] | 当前登录用户数 |
4 | load average 0.23 | 系统负载 1分钟前任务平均长度 |
5 | load average 0.27 | 系统负载 5分钟前任务平均长度 |
6 | load average 0.21 | 系统负载 15分钟前任务平均长度 |
疑问:如何计算系统负载?
第二行,是进程信息。
序号 | 值 | 含义 |
1 | 246 [total] | 进程总数 |
2 | 1 [running] | 正在运行的进程数量 |
3 | 245 [sleeping] | 休眠的进程数量 |
4 | 0 [stopped] | 停止的进程数 |
5 | 0 [zombie] | 僵死的进程数 |
第三行,是CPU信息。
可以使用1 - command,切换多核模式。
第四行是 物理内存使用情况。
序号 | 值 | 含义 |
1 | 11988028 total | 物理内存总量 |
2 | 9600056 free | 空闲物理内存 |
3 | 1134356 used | 用户空间的物理内存量 |
4 | 1253616 buff/cache | 内核缓存的物理内存量 |
可以使用E - command,切换不同的统计单位,如下
KiB = kibibyte = 1024 bytes
MiB = mebibyte = 1024 KiB = 1,048,576 bytes
GiB = gibibyte = 1024 MiB = 1,073,741,824 bytes
TiB = tebibyte = 1024 GiB = 1,099,511,627,776 bytes
PiB = pebibyte = 1024 TiB = 1,125,899,906,842,624 bytes
EiB = exbibyte = 1024 PiB = 1,152,921,504,606,846,976 bytes
第五行是 虚拟内存使用情况。
序号 | 值 | 含义 |
1 | 3905532 total | swap内存总量 |
2 | 3905532 free | swap空闲总量 |
3 | 0 used | swap使用量 |
4 | 10081020 avail mem | swap分区交换至物理内存的总量 |
进程以及线程信息:
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
# top -u 用户名 //查看用户进程占用资源情况
#U - command 可以根据用户名查看进程
#c - command 可以查看命令路径
内存查看与优化 - 好文
3、ps、netstat、pmap 等其他 命令
lsof命令 查询端口占用请看
netstat 查询端口网络情况,以下本机实例,查询TCP监听端口:
#jps //查看Tomcat进程
1638 Bootstrap
13766 jps
#while true; do pmap -d 3066 | tail -1; sleep 2; done //查看Tomcat进程占用内存情况
mapped: 6612168K writeable/private: 722332K shared: 2748K
mapped: 6612168K writeable/private: 722332K shared: 2748K
mapped: 6612168K writeable/private: 722332K shared: 2748K
mapped: 6612168K writeable/private: 722332K shared: 2748K
mapped: 6612168K writeable/private: 722332K shared: 2748K
mapped: 6612168K writeable/private: 722332K shared: 2748K
mapped: 6612168K writeable/private: 722332K shared: 2748K
4、locate、find 查询命令
locate与find都是Ubuntu等Linux系统提供的文件查询命令。
locate命令,首先通过建立一个系统内所有文件路径、文件名称的索引库(sqlite库?等待确定),之后执行locate命令,仅仅查询数据库,避免全盘扫描文件,实现快速文件查询。类似与Windows下的Everything文件工具,使用方式如下:
(1)更新文件索引库
(2)使用locate命令查询
locate 文件名
实例一:查询文件名是gulp.js的文件
实例二:查询/etc目录下以sh开头的文件
实例三:查询/softing目录下,以s开头的文件 -n 指示最多显示5条,同时-i 不区分大小写。
实例四:locate -r 正则表达式
以×××开始,以/var/tmp开始的文件名:
以xxxx结束,以/Logs/log结束的文件名:
find,是Linux系统提供的实时文件查询命令。
基本用法如下:find 路径名 -name 文件名
find与grep命令配合:
find命令同时支持正则表达式:
find命令与locate命令,表示以/bin/find结束的文件
使用find + xargs + rm 删除特定目录下的log文件
// 删除以log结尾的日志
find ~/Downloads/ -name "*.log" | xargs rm -f
// 删除更改时间为5天前的,以log结尾的日志
find ~/Downloads/ -mtime +5 -name "*.log" | xargs rm -f
小总结:
(1)locate命令执行速度高于find命令,因为其本质是查询文件系统的索引库。
(2)locate命令是非实时的,是以文件索引库为准。系统会自动维护更新。
(3)locate命令,用户可以通过sudo updatedb 命令更新文件索引库。
5、htop命令
首先,在Ubuntu 系统Terminal,使用 “apt” 命令在线安装htop
如果安装过程遇到如下错误:
是因为,在线安装atom软件包时,非正常结束。如图,我们可以使用 dpkg 命令卸载安装包。然后再安装htop。
然后,运行htop命令。观察相关信息。可以利用状态栏的F1 - F10功能键,完成交互查询。
6、tcpdump
tcpdump是Linux系统常用的网络包分析工具,显示通过网络传输到系统的TCP/IP以及其他网络的数据包。tcpdump使用libpcap。
安装:Linux发行版本普遍存在,联网机器,如果需要额外安装:
CentOS/RHEL
$sudo yum install tcpdump*
Fedora
$dnf install tcpdump
Ubuntu
$apt-get insyall tcpdump
运行权限:sudo特权或者root用户运行tcpdump,
数据来源:网卡或者网络数据包文件
依赖:libpcap
使用样例:
#su
#tcpdump -i any //从所有网卡中抓获数据包
#tcpdump -i eth0 //从特定网卡抓获数据
#tcpdump -i eth1 -w packet_file //将抓包的包写入文件
#tcpdump -r packet_file //读取保存的tcpdump文件
#tcpdump -ttttnnvvS //获取
#tcpdump net 192.168.0.111\24 //查看特定网络的数据包
#tcpdump host 192.168.0.111 //查看特定ip的数据包
#tcpdump src 192.168.0.111 //查看IP源地址等于192.168.0.111的数据包
#tcpdump dst 192.168.0.111 //查看IP源地址等于192.168.0.111的数据包
//特定协议或者端口的数据包
#tcpdump ssh
#tcpdump port 22
#tcpdump portrange 22-125
//使用与(&&,and )、或(||,or)、非(not,!)
#tcpdump src 192.168.0.11 && port 22 -w tcpdump.dmp
#tcpdump port 443 or 80 -w tcpdump.dmp //抓获443或者80端口的数据
#tcpdump -i eth0 src pot not 22 // 捕获eth0网卡的非22端口的所有数据包
man nmap
nmap -h
扫描IP地址表:nmap -iL ip.log
# ip.log 文件
192.168.199.1
192.168.199.100-240
扫描地址段排除IP:
nmap 192.168.199.1/24 -exclude 192.168.199.222
nmap 192.168.199.1/24 -exclude ip.log
sudo nmap --traceroute 192.168.199.202
sudo nmap -vv --traceroute 192.168.199.202
# 其中T代表TCP协议、U代表UDP协议、S代表SCTP协议
sudo nmap -p U:100,T:22,80,443,554,1935,S:21 192.168.199.202
nmap -F -v 192.168.199.202
nmap --iflist
指定扫描方式sT(TCP扫描)、sU(UDP扫描)、sS( SYN 扫描)、sF(FIN scan )、
sP(Ping扫描) 、sL(Idle 扫描)
扫描端口时状态介绍:
Open 端口开启,数据有到达主机,有程序在端口上监控
Closed 端口关闭,数据有到达主机,没有程序在端口上监控
Filtered 数据没有到达主机,返回的结果为空,数据被防火墙或者是IDS过滤
UnFiltered 数据有到达主机,但是不能识别端口的当前状态
Open|Filtered 端口没有返回值,主要发生在UDP、IP、FIN、NULL和Xmas扫描中
Closed|Filtered 只发生在IP ID idle扫描
#uname -a //电脑以及操作系统的相关信息
电脑以及操作系统的相关信息
#cat /proc/version //查询正在运行的内核版本
#cat /etc/issue" //查询发行版本信息
#lsb_release -a //(适用于所有的linux,包括Redhat、SuSE、Debian等发行版,但是在debian下要安装lsb)
#cat /etc/redhat-release //查看CentOS系统版本
#hostname mote
#sudo vim /etc/sysconfig/network //修改其中的hostname reboot 生效
#sudo vim /etc/hosts //修改dns本地配置
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态用户
# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务服务
# chkconfig –list # 列出所有系统服务
# chkconfig –list | grep on # 列出所有启动的系统服务程序
# rpm -qa # 查看所有安装的软件包
# dpkg -l | grep ^rc | cut -d' ' -f3 | sudo xargs dpkg --purge #删除rc状态(已经删除但是存在配置文件)的软件包
参考文档:
Linux Top 命令详解
lubuntu -locate
每天一个Linux命令 - locate
E: 软件包 atom 需要重新安装,但是我无法找到相应的安装文件。_WenJimmy的专栏-CSDN博客
Linux 命令行