linux常用命令熟悉及应用

linux常用命令熟悉及应用

1.1 通过perf工具记录10秒OS中的CPU使用,找到耗时最长的函数,找到CPU上下文切换耗时最多的进程。

						启动 perf 记录:
						使用 perf record 命令来收集性能数据。为了限制记录时间为 10 秒,你可以结合 timeout 命令使用,或者手动在 10 秒后停止记录(但这需要另一个终端或脚本)。这里我们使用 timeout:
						sudo timeout 10 perf record -g -F 997 -a
						-g:启用调用图(call graph)收集。
						-F 997:设置采样频率为每毫秒采样一次(大约 1000Hz - 1 = 999Hz,但这里为了接近整秒我们稍微调低一些以避免时间偏差)。注意,实际采样频率可能受到系统限制。
						-a:收集所有 CPU 上的数据。
						timeout 命令会在 10 秒后自动终止 perf record。

						生成报告并找到耗时最长的函数:
						记录完成后,使用 perf report 命令查看报告:
						sudo perf report
						在报告界面中,你可以浏览各个函数的 CPU 使用情况,通常耗时最长的函数会排在顶部。你可以使用箭头键在报告中导航,并按下 q 键退出。
						
						


1.2 “date”命令可以设置系统时间,通过strace命令,记录所有打开文件的列表并输出到文件,找到系统时间设置是将数据写入哪个文件。	
    在Linux系统中,使用“date”命令可以设置系统时间。为了了解“date”命令设置系统时间时是将数据写入哪个文件,可以使用strace命令来跟踪其系统调用和打开的文件。

				步骤概述
				使用strace命令跟踪date命令:通过strace命令,我们可以记录date命令在执行过程中打开的所有文件,并观察它是否对某个文件进行了写操作,以设置系统时间。
				分析strace输出:查看strace命令的输出文件,找到与设置系统时间相关的系统调用和文件操作。
				具体步骤
				执行strace命令:
				bash
				strace -e trace=open,write -o date_strace_output.txt date +"%Y-%m-%d %H:%M:%S"

				这里,-e trace=open,write 选项告诉strace只跟踪open和write系统调用,-o date_strace_output.txt 选项将strace的输出重定向到文件 date_strace_output.txt 中。date -s "YYYY-MM-DD HH:MM:SS" 是我们要跟踪的date命令,用于设置系统时间。

				分析输出文件:
				打开 date_strace_output.txt 文件,查找与打开文件相关的输出。通常,你会看到类似于以下的输出:

				open("/etc/ld.so.cache", O_RDONLY) = 3  
				open("/lib/libc.so.6", O_RDONLY) = 3  
				...  
				open("/etc/localtime", O_RDONLY) = 5  
				...  
				write(1, "Fri Oct  6 12:34:56 UTC 2023\n", 30) = 30
				open 系统调用表示打开了某个文件,而 write 系统调用表示向某个文件或设备写了数据。然而,需要注意的是,date 命令设置系统时间时,并不直接写入一个特定的文件来更改系统时间。相反,它通常通过调用内核提供的系统调用来更改系统时间。

				在strace的输出中,你可能会看到 date 命令打开了 /etc/localtime 文件,这是因为它需要读取本地时区信息来正确显示和设置系统时间。但是,设置系统时间本身并不涉及写入这个文件。

				实际上,date 命令(特别是当使用 -s 选项时)会通过调用 clock_settime 或类似的系统调用来更改系统时间。这些系统调用是由内核处理的,并且不直接涉及文件系统的写操作。因此,在strace的输出中,你可能不会看到与设置系统时间直接相关的文件写操作。


1.3 systemctl命令控制系统服务,理解 enable、disable、start、stop、restart等选项的功能。
						# 启动nginx服务
						sudo systemctl start nginx
						 
						# 停止nginx服务
						sudo systemctl stop nginx
						 
						# 重启nginx服务
						sudo systemctl restart nginx
						 
						# 查看nginx服务状态
						sudo systemctl status nginx
						 
						# 设置nginx服务开机自启动
						sudo systemctl enable nginx
						 
						# 禁用nginx服务开机自启动
						sudo systemctl disable nginx




1.4 sysctl配置内核参数方法,设置内存脏页回写比例dirty ratio为50%。与之对应的设置项永久生效方法(修改对应的配置文件)

					 使用sysctl命令设置内存脏页回写比例为50%的方法如下‌:

					首先,打开终端或命令行界面。

					使用以下命令设置vm.dirty_ratio为50%:

					sysctl -w vm.dirty_ratio=50
					为了确保这个设置在系统重启后仍然有效,需要将该参数添加到/etc/sysctl.conf文件中。使用文本编辑器打开/etc/sysctl.conf文件,例如使用vi编辑器:

					sudo vi /etc/sysctl.conf
					在文件的末尾添加以下行:

					vm.dirty_ratio = 50
					保存并关闭文件。然后,运行以下命令使更改生效:

					sudo sysctl -p
					这样,vm.dirty_ratio参数就被设置为50%,并且在系统重启后仍然保持设置‌。




1.5 通过ss或netstat,查看系统打开的端口列表,能找到ssh、对应的进程和PID。

					在Linux系统中,可以使用ss或netstat命令来查看系统中打开的端口列表以及与之关联的服务(如SSH服务)、对应的进程和进程ID(PID)。

					使用ss命令查看:

					ss -tuln
					-t 表示显示TCP端口

					-u 表示显示UDP端口

					-l 表示显示监听状态的端口

					-n 表示不解析服务名称,直接显示端口号

					使用netstat命令查看:

					netstat -tuln
					参数与ss命令相同。

					注意:netstat工具可能在某些最新的Linux发行版中不默认安装,可以使用ss命令或安装net-tools包来使用netstat。

					如果你想找到特定服务(如SSH)对应的端口和进程信息,可以使用grep工具过滤输出结果。例如,使用grep过滤SSH服务:

					ss -tuln | grep ssh
					# 或者
					netstat -tuln | grep ssh
					另外,如果你想要查看特定端口(如22端口,通常为SSH服务)的详细信息,可以使用如下命令:

					ss -tuln | grep ':22'
					# 或者
					netstat -tuln | grep ':22'
					最后,如果你想要得到进程的PID,可以结合awk工具来输出PID列:

					ss -tulnp | grep ssh
					# 或者
					netstat -tulnp | grep ssh
					-p 参数用于显示监听端口的进程信息

					-n 参数用于不解析服务名称




1.6 查看系统内存使用,了解free命令中,“used、free、shared、buff/cache、available”各项表示的意义,与之对应的/proc/meminfo中的项;
					free 命令用于查看系统内存使用情况。它报告的内存状态包括总计、已使用、空闲、共享、缓冲/缓存和可用内存。
					free -h
					-h 参数使得输出的数值更易于阅读,以 K、M、G 为单位显示。
					输出解释:
					total:内存总量
					used:已使用内存,通常情况下,这个值是(total-free-buff/cache),但是在某些情况下,used的值会比这个大,因为used还包括了buff/cache的部分
					free:实际可用内存,是指没有被分配的内存
					shared:共享内存,一般在多个进程共享同一段内存时会使用
					buff/cache:缓冲/缓存,缓冲区是用于存储要写入磁盘的数据,缓存区是用于存储从磁盘中读取的数据
					available:可用内存,考虑了应用程序的内存需求,这是近似的可用内存量,不包括交换空间
					要详细了解每个指标,可以使用不带参数的free命令,或者使用free -s设置刷新间隔,或者free -t显示总计行。
					free -t


1.7了解swap分区的作用,开启和关闭。
					‌Swap分区的作用‌是扩展内存、防止意外崩溃,并将经常不使用的内存数据转移至Swap分区中,以释放物理内存空间‌。当系统内存不足时,Swap分区可以将内存中的数据暂时存储到硬盘上,从而为当前运行的程序腾出足够的内存空间‌。
					‌开启和关闭Swap分区‌可以通过以下命令进行操作
					‌开启Swap分区‌:使用swapon -a命令可以开启所有的Swap分区‌6。
					‌关闭Swap分区‌:使用swapoff -a命令可以关闭所有的Swap分区‌6。
					需要注意的是,关闭Swap分区可能会导致系统在内存不足时无法正常使用,因此需要根据实际情况谨慎操作‌。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值