程序锅

  • 首页
  • 分类
  • 标签
  • 归档
  • 关于

  • 搜索
基础知识 Etcd LeetCode 计算机体系结构 Kubernetes Containerd Docker 容器 云原生 Serverless 项目开发维护 ELF 深入理解程序 Tmux Vim Linux Kernel Linux numpy matplotlib 机器学习 MQTT 网络基础 Thrift RPC OS 操作系统 Clang 研途 数据结构和算法 Java 编程语言 Golang Python 个人网站搭建 Nginx 计算机通用技术 Git

Linux Cheat Sheet - 系统、进程、磁盘、网络、安装等

发表于 2020-10-26 | 分类于 Linux | 0 | 阅读次数 2242

系统相关

free:显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。


free [-bkmhotV][-s <间隔秒数>]
1.
total 列显⽰系统总的可⽤物理内存和交换空间⼤⼩。
used 列显⽰已经被使⽤的物理内存和交换空间。
free 列显⽰还有多少物理内存和交换空间可⽤使⽤。
shared 列显⽰被共享使⽤的物理内存⼤⼩(进程间的共享内存)。
buff/cache 列显⽰被磁盘缓存使⽤的物理内存⼤⼩(buffer 表⽰写缓冲 cache 表⽰读缓冲)。
available 列显⽰还可以被应⽤程序使⽤的物理内存⼤⼩。


-b  以Byte为单位显示内存使用情况。
-k  以KB为单位显示内存使用情况。
-m  以MB为单位显示内存使用情况。
-h  以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位如下:
        B = bytes
        K = kilos
        M = megas
        G = gigas
        T = teras

-t  显示内存总和列。
-V  显示版本信息。
-o  不显示缓冲区调节列。
-s<间隔秒数>持续观察内存使用状况。


附:
1.当应⽤程序需要内存时,如果没有⾜够的 free 内存可以⽤,内核就会从 buffer 和 cache 中回收内存来满⾜应⽤程序的请求。所以从应⽤程序的⻆度来说,available = free + buffer + cache。请注意,这只是⼀个很理想的计算⽅式,实际中的数据往往有较⼤的误差。

2.swap space 是磁盘上的⼀块区域,可以是⼀个分区,也可以是⼀个⽂件。当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,⽽当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换⼊。交换空间可以在⼀定程度上缓解内存不⾜的情况, 但是它需要读写磁盘数据,所以性能不是很⾼。
top:可以动态的查看系统当前正在运行的进程情况、内存情况、CPU 使用情况,被广泛用于监视服务器的负载。


输出内容:
1.
Tasks:显示进程的情况,总共有多少个进程、有多少个进程正在处理(running)、有多少个进程处于 sleeping 状态、有多少个进程处于 stopped 状态、有多少个进程处于 zombie 状态。
%Cpu(s):当前的 CPU 状态。
KiB Mem/KiB Swap:当前的内存状态。
之后的内容:
	PID:进程的唯⼀标识符
	USER:进程所有者的实际⽤⼾名
	PR:进程的调度优先级。这个字段的⼀些值是 'rt'。这意味这这些进程运⾏在实时态。
	NI:进程的 nice 值(优先级)。越⼩的值意味着越⾼的优先级。
	VIRT:进程使⽤的虚拟内存
	RES:驻留内存⼤⼩。驻留内存是任务使⽤的⾮交换物理内存⼤⼩。
	SHR:SHR 是进程使⽤的共享内存。
	S:进程的状态。D-不可中断的睡眠态、R-运行态、S-睡眠态、T-被跟踪或已停止、Z-僵尸态、I-空闲状态。
	%CPU:自从上一次更新到现在进程所使用的 CPU 时间百分比。
	%MEM:进程使用的可用物理内存百分比。
	TIME+:任务启动后到现在所使用的全部 CPU 时间,精确到百分之一。
	COMMAND:运行进程所使用的命令。
	其他:还有许多在默认情况下不会显⽰的输出,它们可以显⽰进程的⻚错误、有效组和组ID和其他更多的信息。
2.top 是一个交互式的命令,可以在界面上继续用键盘输入指令执行对应的操作。
	回⻋/空格:top 命令默认在⼀个特定间隔(3秒)后刷新显⽰。要⼿动刷新,⽤⼾可以输⼊回⻋或者空格。
	d/s:当按下 'd' 或 's' 时,你将被提⽰输⼊⼀个值(以秒为单位),它会以设置的值作为刷新间隔。如果你这⾥	      输⼊了 1,top 将会每秒刷新。
	k:用于发送信号给进程(通常是结束进程)。
	R:切换反向/常规排序。
	V:切换成树视图。
	e:切换显示的单位,依次以 k、m、g、t、p。
	B:⼀些重要信息会以加粗字体显⽰,可以切换粗体显示。

uname:输出一组系统信息。如果不跟随选项,则视为只附加-s 选项。

uname [选项]

-a:以如下次序输出所有信息。其中若 -p 和 -i 的探测结果不可知则被省略
-s:输出内核名称
-n:输出网络节点上的主机名
-r:输出内核发行号
-v:输出内核版本
-m:输出主机的硬件架构名称
-p:输出处理器类型或"unknown"
-i:输出硬件平台或"unknown"
-o:输出操作系统名称
--help:显示此帮助信息并退出
--version:显示版本信息并退出

进程相关

ps:用于报告当前系统的进程状态。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。但是这种只会显示输入这个命令时那一刻系统中进程的状态。
ps 命令支持三种使用的语法格式:1.UNIX 风格,选项可以组合在一起,选项前必须有“-”连字符;2.BSD 风格,选项可以组合在一起,选项前不能有“-”连字符;3.GNU 风格的长选项,选项前有两个“-”连字符。这几种风格可以混用,但是可能会发生冲突。

输出内容:
	USER:运行该过程的用户
	PID:进程的 ID
	PPID:父进程的 ID
	%CPU:进程 cpu 利用率
	%MEM:进程驻留集大小占计算机物理内存的百分比
	VSZ:进程的虚拟内存大小 KiB
	RSS:进程正在使用的物理内存的大
	PRI:这个是 Priority (优先执行序) 的缩写
	NI:这个是 Nice 值
	ADDR:这个是 kernel function,指出该程序在内存的哪个部分。如果是个 	  
	      running的程序,一般就是 "-"
	TTY:登入者的终端机位置
	TIME:使用掉的 CPU 时间
	CMD:所下达的指令为何,假如是 [] 括起来的,那么是内核线程
	STAT:代表这个进程的状态。D-不可中断;R-运行;S-中断;T-停止;Z-僵死。可能
	      还会有以下这些后缀,<-优先级高的进程;N-优先级较低的进程;L-有些页被
	      锁进内存;s-进程的领导者(在它之下有子进程);l-多进程的(使用 
	      CLONE_THREAD,类似 NPTL pthreads);+-位于后台的进程组。


ps 没有属性参数的时候,显示的是同一终端下 terminal 所有的进程
T:显示同一终端下 terminal 下的所有进程,但是输出信息更丰富点
a:显示现行所有终端下的所有程序,包括其他用户的程序
-A:显示所有用户的所有进程,包括没有控制终端的进程,结果按照进程 id 排序
-e:等于 -A
-a:显示所有用户进程,不包括没有控制终端的进程
-u:显示本用户下所有进程,不包括没有控制终端的进程
-u [用户名]:显示指定用户名下的所有进程,
x:通常与 a 这个参数一起使用,可列出完整信息


-l:较长、较详细的将该 PID 的信息列出
j:工作的格式
-f:有一个更为完整的输出

# 查阅只与 bash 相关的程序
ps -l

# 列出目前系统所有的进程数据
ps aux

# 同 aux,列出目前系统所有的进程数据
ps -elf
pstree:清晰明了的用树形图显示所有进程的层次关系。


-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
-n:用程序识别码排序。预设是以程序名称来排序;
-p:显示程序识别码,后面还可以跟 PID,只查看指定 PID 的情况;
-u:显示用户名称;


# 只查看 PID 为 1145 的进程的层次关系
pstree -p 1145	
kill:发送信号到指定进程


kill [-l|信号参数] [信号名称|编号|进程PID]


-l:后面加信号名称(可以只取 SIG 之后的名称)则显示该信号对应的编号。后面加编号,则显示对应的信号名称。啥都不加则显示全部
-信号参数:后头跟进程 PID。信号参数表示你要给指定进程发送的信号,可以使用名称,如 -SIGKILL(-KILL),也可以使用 -9。可以不指定信号参数,那么默认发送的是编号为 15 的 SIGTERM 信号。

1.用 kill 向进程发送信号时,必须是这些进程的主人。如果试图给一个没有权限或者不存在的进程发送信号,就会得到一个错误信息。
2.只有编号为 9 的信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。
3.init 进程不可杀死
4.常用的信号
SIGHUP		1    终端断线
SIGINT		2    中断(同 Ctrl + C)
SIGQUIT		3    退出(同 Ctrl + \)
SIGKILL		9    强制终止
SIGTERM		15    终止
SIGCONT		18    继续(与STOP相反, fg/bg命令)
SIGSTOP		19    暂停(同 Ctrl + Z)


# 查看编号为 9 的信号名称
kill -l 9

# 查看信号名为 SIGKILL 的编号
kill -l SIGKILL

# 向 PID 为 31801 的进程发送 SIGTERM 信号
kill 31801

# 向 PID 为 31801 的进程发送 SIGKILL 信号
kill -9 31801

磁盘相关

du:显示指定的目录或文件所占用的磁盘空间。


du [-abch] [路径|文件]
-a:显示指定目录下所有单独的文件大小,后面不加文件或者目录路径则表示本目录
-b:比 byte 为单位显示
-c:显示单独的目录或者文件的大小,同时也显示所有目录或文件的总和情况
-h:以K,M,G为单位显示,提高信息的可读性(方便人的阅读)

# 不加参数则显示当前目录下所有的子目录大小,下面显示的都是目录
$ du             
4       ./load/test  
904     ./load       
32      ./staticlink 
8       ./dynamic    
12      ./stack      
60      ./sotest     
24      ./elf        
924     ./compile    
1972    .
df:显⽰⽬前在 Linux 系统上的⽂件系统的磁盘使⽤情况统计

df [-hTtx]
不加参数:显⽰整个磁盘空间中⽂件系统的使⽤情况 
-h:以⼈类友好格式显⽰⽂件系统硬盘空间使⽤情况,这样就会在显⽰合适的单位,⽐如 K M G  
-T:显⽰⽂件系统类型 
-t:后头跟文件系统名,仅列出指定的⽂件系统,如 -t ext4 则列出 ext4 系统的⽂件系统
-x:后头跟文件系统名,表示除指定之外的文件系统都列出来,比如 —x ext4 则列出了除 ext4 类型以外的全部⽂件系统

df (不加参数)显示的内容:
Filesystem:Linux 系统中的⽂件系统(不是文件系统类型)
1K-blocks:⽂件系统的⼤⼩,以 1K ⼤⼩为单位,表示有多少 1K 的块
Used:以 1K ⼤⼩为单位,表⽰已使⽤的块数量
Available:以 1K ⼤⼩为单位,表⽰可⽤的块数量
Use%:⽂件系统中已使⽤的百分⽐
Mounted on:已挂载⽂件系统的挂载点


网络相关

netstat:显⽰⽹络状态


netstat [参数] 


-a:显⽰所有 socket
-l:显⽰所有处于监听状态的 socket
-t:显⽰所有使⽤ tcp 协议的 socket
-u:显⽰ UDP 传输协议的连线状况
-x:显示所有监听 UNIX 端口的连线状况
-s:显⽰所有⽹络协议的统计信息

# 显示所有 tcp 端口
netstat -at

# 显示所有处于监听状态的 tcp 端口
netstat -lt
ifconfig:用于显示或设置网络设备


ifconfig [网络设备][down up][add<地址>][del<地址>][hw<网络设备类型><硬件地址>][mtu<字节>][IP地址][netmask<子网掩码>][broadcast<广播地址>]

down:关闭指定的网络设备
up:启动指定的网络设备
add<地址>:设置网络设备 IPv6 的 IP 地址
del<地址>:删除网络设备 IPv6 的 IP 地址
hw<网络设备类型><硬件地址>:设置网络设备的类型与硬件MAC地址
mtu<字节>:设置网络设备的MTU。
netmask<子网掩码>:设置网络设备的子网掩码。
[IP地址]:指定网络设备的IP地址


# 启动/关闭 eth0 网卡
ifconfig eth0 down
ifconfig eth0 up

# 为网卡 eth0 添加 IPV6 地址
ifconfig eth0 add 33ffe:3240:800:1005::2/ 64

# 修改 eth0 的 MAC 地址
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE

# 给 eth0 配置 IP 地址
ifconfig eth0 192.168.1.56

# 给 eth0 网卡配置 IP 地址,并加上子掩码
ifconfig eth0 192.168.1.56 netmask 255.255.255.0

# 给 eth0 网卡配置 IP 地址,加上子掩码,加上个广播地址
ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255

# 设置能通过的最大数据包大小为 1500 bytes
ifconfig eth0 mtu 1500

# 启动和关闭 eth0 的 ARP 协议
ifconfig eth0 arp	# 打开
ifconfig eth0 -arp	# 关闭

安装相关

rpm命令:
rpm  -ivh  filename   # filename为完整的rpm软件包的文件名
rpm  -q  packagename  # packagename为linux系统已经安装的软件包名称,不包括版本号 
rpm  -qa  #查看当前Llinux系统已经安装的rpm格式的软件包的列表
rpm  -qa | grep  -I libjpeg   #命令后面跟grep可以查询是否安装了包含特有字符串的软件包名称,-i表示忽略大小写
rpm  -qi  packagename  #查询软件包的详细信息,显示结果包括该软件的名称,版本,编译时间,安装时间,以及该tree软件简要的功能描述等等
rpm  -ql  packagename  #查询某个已经安装的rpm软件包向Linux文件系统安装复制的文件列表信息
rpm  -qf  filename #查询文件系统中的某个文件属于哪个rpm软件包
rpm  -e  packname   #卸载rpm包
rpm  -Uvh  filename  #升级rpm包

yum命令:
yum  install  packagename   #安装软件包
yum  erase/remove  packagename  #卸载软件包

yum  grouplist   #列出可使用的软件组列表
yum  groupinfo  软件组名 #列出指定软件组的信息软件信息
yum  groupinstall  软件组名 #安装指定的软件组
yum  groupmove  软件组名 #卸载指定的软件组


tatball源代码软件包的安装步骤:
step1:根据LinuxFHS,用户自己安装的软件包建议保存在/usr/local目录。取得tarball包之后,建议把tarball包保存在/usr/local/src目录
step2:切换都/usr/local/src目录,使用tar命令进行解压。
step3:切换到解压后的源代码目录(通常为/usr/local/src/“软件名+版本号”)
step4:执行检测配置脚本configure
step5:执行make命令,这一步的make命令编译软件,生成该软件的二进制可执行程序及其函数库。假如出现错误,那么执行make  clean命令清除前一次编译的目标文件
step6:执行make  install安装软件


src.rpm源码软件包的安装步骤:
step1:src.rpm包的安装需要建立一个专门的用户账号,以及用户组账号
step2:把src.rpm包复制到Linux的/root目录,执行rpm 安装
step3:进入到/root/rpmbuild/SPECS目录,执行rpmbuild  -ba 软件名.spec。最后在
/root/rpmbuild/RPMS/i686(i686只是一个例子)找到编译生成的rpm软件包。
卷死我
dawnguo 微信支付

微信支付

dawnguo 支付宝

支付宝

  • 本文作者: dawnguo
  • 本文链接: /archives/100
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# Linux
A Tour of Go
研途 | how to maximize the impact of your research
  • 文章目录
  • 站点概览
dawnguo

dawnguo

215 日志
24 分类
37 标签
RSS
Creative Commons
© 2018 — 2025 程序锅
0%