当前位置:首页 » 操作系统 » countlinux

countlinux

发布时间: 2023-01-01 23:10:39

Ⅰ 详解linux系统内存知识及调优方案

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。对于整个操作系统来说,内存可能是最麻烦的的设备。而其性能的好坏直接影响着整个操作系统。

我们知道CPU是不能与硬盘打交道的,只有数据被载入到内存中才可以被CPU调用。cpu在访问内存的时候需要先像内存监控程序请求,由监控程序控制和分配内存的读写请求,这个监控程序叫做MMU(内存管理单元)。下面以32位系统来说明内存的访问过程:

32位的系统上每一个进程在访问内存的时候,每一个进程都当做自己有4个G的内存空间可用,这叫虚拟内存(地址),虚拟内存转化成物理内存是通过MMU来完成的。为了能够从线性地址转换成物理地址,需要page table(页表)的内存空间,page table要载入到MMU上。为了完成线性地址到物理地址的映射,如果按照1个字节1个字节映射的话,需要一张非常大的表,这种转换关系会非常的复杂。因此把内存空间又划分成了另外一种存储单元格式,通常为4K。在不同的硬件平台上,它们的大小一般是不一样的,像x86 32位的有4k的页;而64位的有4k页,2M页,4M页,8M页等等,默认都是4k的。每一个进程一般而言都有自己的页路径和页表映射机制,不管那一个页表都是由内核加载的。每一个进程只能看到自己的线性地址空间,想要增加新的内存的时候,只能在自己的线性地址空间中申请,并且申请后一定是通过操作系统的内核映射到物理地址空间中去找那么一段空间,并且告诉线性地址空间准备好了,可以访问,并且在page table中增加一条映射关系,于是就可以访问物理内存了,这种叫做内存分配。但是新的申请一定是通过操作的内核到物理内存中去找那么一段空间,并且告诉线性地址空间好了,可以建设映射关系,最终page table建立映射关系。

这反映了上述描述过程的大体情况。可以看到每一个用户程序都会有自己的页表,并且映射到对应的主存储器上去。

根据上述文字和图表的描述可以发现2个问题:

1.每个进程如果需要访问内存的时候都需要去查找page table的话,势必会造成服务器的性能底下

2.如果主存储器的内存满了以后,应用程序还需要调用内存的时候怎么办

对于第一个问题,我们就需要借助TLB(Translation Lookaside Buffer)翻译后备缓冲器。TLB是一个内存管理单元,它可以用于改进虚拟地址到物理地址转换速度的缓存。这样每次在查找page table的时候就可以先去TLB中查找相应的页表数据,如果有就直接返回,没有再去查找page table,并把查找到的结果缓存中TLB中。TLB虽然解决了缓存的功能,但是在那么page table中查找映射关系仍然很慢,所以又有了page table的分级目录。page table可以分为1级目录,2级目录和偏移量

但是一个进程在运行的时候要频繁的打开文件,关闭文件。这就意味着要频繁的申请内存和释放内存。有些能够在内存中缓存数据的那些进程,他们对内存的分配和回收更多,那么每一次分配都会在页表中建立一个对应项。所以,就算内存的速度很快,大量频繁的同一时间分配和释放内存,依然会降低服务器的整体性能。当然内存空间不够用的时候,我们称为oom(out of memory,内存耗尽)。当内存耗尽的时候,,整个操作系统挂了。这种情况下我们可以考虑交换分区,交换分区毕竟是由硬盘虚拟出来的内存,所以其性能与真正的内存相比,差了很多,所以要尽力避免使用交换分区。有物理内存空间的时候尽量保证全部使用物理内存。cpu无论如何是不能给交换内存打交道的,它也只能给物理内存打交道,能寻址的空间也只能是物理内存。所以当真正物理内存空间不够用的时候,会通过LRU算法把其中最近最少使用的内存放到交换内存中去,这样物理内存中的那段空间就可以供新的程序使用了。但是这样会引发另外的一个问题,即原来的进程通过page table寻找的时候,那一段空间的数据已经不属于它了。所以此刻cpu发送通知或者异常告诉这个程序,这个地址空间已不属于它,这个时候可能会出现2种情况:

1.物理内存有可用的空间可用:这个时候cpu会根据以前的转换策略会把交换分区中的那段内存重新送到物理内存中去,但是转换过来的空间地址不一定会是以前的那一段空间地址,因为以前的那一段空间地址可能已经被别人使用了。

2.物理内存没有可用的空间可用:这个时候依然会使用LRU算发把当前物理地址空间上最近最少使用的空间地址转换到交换内存中去,并把当前进程需要的这断在交换空间中的内存送到物理内存空间中去,并且重新建立映射关系。

上述通知或者异常出现的情况,通常叫做缺页异常。缺页异常也分为大异常和小异常两种。大异常就是访问的数据内存中没有,不的不去硬盘上加载,无论是从交换内存中还是直接从磁盘的某个文件系统上,反正需要从硬盘上去加载,这种异常加载需要很长时间。小异常就是进程之间通过共享内存,第二个进程访问的时候,查看本地的内存映射表没有,但是其它进程已经拥有了这个内存页,所以可以直接映射,这种异常加载需要的时间一般很短。

在操作系统开机的时候,每一个io设备都会像cpu申请一些列的随机端口,这种端口叫做io端口。在IBM PC体系结构中,I/O地址空间一共提供了65,536个8位的I/O端口。正是这些io端口的存在,cpu可以与io设备进行读写交互的过程。在执行读写操作时,CPU使用地址总线选择所请求的I/O端口,使用数据总线在CPU寄存器和端口之间传送数据。I/O端口还可以被映射到物理地址空间:因此,处理器和I/O设备之间的通信就可以直接使用对内存进行操作的汇编语言指令(例如,mov、and、or等等)。现代的硬件设备更倾向于映射I/O,因为这样处理的速度较快,并可以和DMA结合起来使用。这样io在和内存传数据的时候就不需要通过cpu,cpu把总线的控制权交给DMA,每次io传数据的时候就调用DMA一次,就把cpu给解放了出来。当数据传输完了以后,DMA通知给cpu中断一次。DMA在运行的时候对整个总线有控制权限,当cpu发现有其它进程需要使用总线的时候,二者就会产生争用。这个时候,在总线控制权的使用上,CPU和DMA具有相等的权限。只要CPU委托给了DMA,就不能随意的收回这个委托,就要等待DMA的用完。

如果没有其它进程可以运行,或者其它进程运行的时间非常短,这个时候CPU发现我们的IO仍然没有完成,那就意味着,CPU只能等待IO了。CPU在时间分配里面有个iowait的值,就是CPU在等待IO花费的时间。有些是在同步调用过程中,CPU必须要等待IO的完成;否者CPU可以释放IO的传输在背后自动完成,CPU自己去处理其它的事情。等硬盘数据传输完成以后,硬盘只需要像CPU发起一个通知即可。CPU外围有一种设备,这个设备叫做可编程中断控制器。每一个硬件设备为了给CPU通信,在刚开机的时候,在BIOS实现检测的时候,这个设备就要到可编程中断控制器上去注册一个所谓的中断号。那么这个号码就归这个硬件使用了。当前主机上可能有多个硬件,每一个硬件都有自己的号码,CPU在收到中断号以后,就能够通过中断相量表查找到那个硬件设备进行中断。并且就由对应的IO端口过来处理了。

CPU正在运行其它进程,当一个中断请求发过来的时候,CPU会立即终止当前正在处理的进程,而去处理中断。当前CPU挂起当前正在处理的进程,转而去执行中断的过程,也叫做中断切换。只不过,这种切换在量级别上比进程切换要低一些,而且任何中断的优先级通常比任何进程也要高,因为我们指的是硬件中断。中断还分为上半部和下半部,一般而言,上半部就是CPU在处理的时候,把它接进来,放到内存中,如果这个事情不是特别紧急(CPU或者内核会自己判断),因此在这种情况下,CPU回到现场继续执行刚才挂起的进程,当这个进程处理完了,再回过头来执行中断的下半部分。

在32位系统中,我们的内存(线性地址)地址空间中,一般而言,低地址空间有一个G是给内核使用的,上面3个G是给进程使用的。但是应该明白,其实在内核内存当中,再往下,不是直接这样划分的。32位系统和64位系统可能不一样(物理地址),在32位系统中,最低端有那么10多M的空间是给DMA使用的。DNA的总线宽度是很小的,可能只有几位,所以寻址能力很有限,访问的内存空间也就很有限。如果DMA需要复制数据,而且自己能够寻址物理内存,还可以把数据直接壮哉进内存中去,那么就必须保证DMA能够寻址那段内存才行。寻址的前提就是把最低地址断M,DA的寻址范围内的那一段给了DMA。所以站在这个角度来说,我们的内存管理是分区域的。

在32位系统上,16M的内存空间给了ZONE_DMA(DMA使用的物理地址空间);从16M到896M给了ZONE_NORMAL(正常物理地址空间),对于Linux操作系统来说,是内核可以直接访问的地址空间;从896M到1G这断空间叫做"Reserved"(预留的物理地址空间);从1G到4G的这段物理地址空间中,我们的内核是不能直接访问的,要想访问必须把其中的一段内容映射到Reserved来,在Reserved中保留出那一段内存的地址编码,我们内核才能上去访问,所以内核不直接访问大于1G的物理地址空间。所以在32位系统上,它访问内存当中的数据,中间是需要一个额外步骤的。

在64位系统上,ZONE_DAM给了低端的1G地址空间,这个时候DMA的寻址能力被大大加强了;ZONE_DAM32可以使用4G的空间;而大于1G以上给划分了ZONE_NORMAL,这段空间都可以被内核直接访问。所以在64位上,内核访问大于1G的内存地址,就不需要额外的步骤了,效率和性能上也大大增加,这也就是为什么要使用64位系统的原因。

在现在的PC架构上,AMD,INTER都支持一种机制,叫做PEA(物理地址扩展)。所谓PAE。指的是在32位系统的地址总线上,又扩展了4位,使得32位系统上的地址空间可以达到64G。当然在32为系统上,不管你的物理内存有多大,单个进程所使用的空间是无法扩展的。因为在32位的系统上,线性地址空间只有4个G,而单个进程能够识别的访问也只有3个G。

linux的虚拟内存子系统包含了以下几个功能模块:

slab allocator,zoned buddy allocator,MMU,kswapd,bdflush

slab allocator叫做slab分配器

buddy allocator又叫做buddy system,叫做伙伴系统,也是一种内存分配器

buddy system是工作在MMU之上的,而slab allocator又是工作在buddy system之上的。

设置为小于等于1G,在数据库服务器应该劲量避免使用交换内存

3.在应用服务器上,可以设置为RAM*0.5,当然这个是理论值

如果不的不使用交换内存,应该把交换内存放到最靠外的磁道分区上,因为最外边的磁盘的访问速度最快。所以如果有多块硬盘,可以把每块硬盘的最外层的磁道拿一小部分出来作为交换分区。交换分区可以定义优先级,因此把这些硬盘的交换内存的优先级设置为一样,可以实现负载均衡的效果。定义交换分区优先级的方法为编辑/etc/fstab:

/dev/sda1 swap swap pri=5 0 0

/dev/sdb1 swap swap pri=5 0 0

/dev/sdc1 swap swap pri=5 0 0

/dev/sdd1 swap swap pri=5 0 0

四.内存耗尽时候的相关调优参数

当Linux内存耗尽的时候,它会杀死那些占用内存最多的进程,以下三种情况会杀死进程:

1.所有的进程都是活动进程,这个时候想交换出去都没有空闲的进程

2.没有可用的page页在ZONE_NORMAL中

3.有其它新进程启动,申请内存空间的时候,要找一个空闲内存给做映射,但是这个时候找不到了

一旦内存耗尽的时候,操作系统就会启用oom-kill机制。

在/proc/PID/目录下有一个文件叫做oom_score,就是用来指定oom的评分的,就是坏蛋指数。

如果要手动启用oom-kill机制的话,只需要执行echo f>/proc/sysrq-trigger即可,它会自动杀掉我们指定的坏蛋指数评分最高的那个进程

可以通过echo n > /proc/PID/oom_adj来调整一个进程的坏蛋评分指数。最终的评分指数就是2的oom_adj的值的N次方。假如我们的一个进程的oom_adj的值是5,那么它的坏蛋评分指数就是2的5次方。

如果想禁止oom-kill功能的使用可以使用vm.panic_on_oom=1即可。

五.与容量有关的内存调优参数:

overcommit_memory,可用参数有3个,规定是否能够过量使用内存:

0:默认设置,内核执行启发式的过量使用处理

1:内核执行无内存的过量使用处理。使用这个值会增大内存超载的可能性

2:内存的使用量等于swap的大小+RAM*overcommit_ratio的值。如果希望减小内存的过度使用,这个值是最安全的

overcommit_ratio:将overcommit_memory指定为2时候,提供的物理RAM比例,默认为50

六.与通信相关的调优参数

常见在同一个主机中进行进程间通信的方式:

1.通过消息message;2.通过signal信号量进行通信;3.通过共享内存进行通信,跨主机常见的通信方式是rpc

以消息的方式实现进程通信的调优方案:

msgmax:以字节为单位规定消息队列中任意消息的最大允许大小。这个值一定不能超过该队列的大小(msgmnb),默认值为65536

msgmnb:以字节为单位规定单一消息队列的最大值(最大长度)。默认为65536字节

msgmni:规定消息队列识别符的最大数量(及队列的最大数量)。64位架构机器的默认值为1985;32位架构机器的默认值为1736

以共享内存方式实现进程通信的调优方案:

shmall:以字节为单位规定一次在该系统中可以使用的共享内存总量(单次申请的上限)

shmmax:以字节为单位规定每一个共享内存片段的最大大小

shmmni:规定系统范围内最大共享内存片段。在64和32位的系统上默认值都是4096

七.与容量相关的文件系统可调优参数:

file-max:列出内核分配的文件句柄的最大值

dirty_ratio:规定百分比值,当脏数据达到系统内存总数的这个百分比值后开始执行pdflush,默认为20

dirty_background_ratio:规定百分比值,当某一个进程自己所占用的脏页比例达到系统内存总数的这个百分比值后开始在后台执行pdflush,默认为10

dirty_expire_centisecs:pdlush每隔百分之一秒的时间开启起来刷新脏页,默认值为3000,所以每隔30秒起来开始刷新脏页

dirty_writeback_centisecs:每隔百分之一秒开始刷新单个脏页。默认值为500,所以一个脏页的存在时间达到了5秒,就开始刷新脏

八.linux内存常用的观察指标命令:

Memory activity

vmstat [interval] [count]

sar -r [interval] [count]

Rate of change in memory

sar -R [interval] [count]

frmpg/s:每秒释放或者分配的内存页,如果为正数,则为释放的内存页;如果为负数,则为分配的内存页

bufpg/s:每秒buffer中获得或者释放的内存页。如果为正数则为获得的内存页,为负数。则为释放的内存页

campg/s:每秒cache中获得或者释放的内存页。如果为正数则为获得的内存页,为负数。则为释放的内存页

Swap activity

sar -W [interval] [count]

ALL IO

sar -B [interval] [count]

pgpgin/s:每秒从磁盘写入到内核的块数量

pgpgout/s:每秒从内核写入到磁盘的块数量

fault/s:每秒钟出现的缺页异常的个数

majflt/s:每秒钟出现的大页异常的个数

pgfree/s:每秒回收回来的页面个数

Ⅱ 在linux中,count=$#实现了什么功能

第1行、假如你的脚本是test.sh,当你执行./test.sh
a
b
c时候,你有三个参数
$#的值就是参数的数量3,相当于变量count=3
$0=./test.sh
$1=a
$2=b
$3=c
第3行、只要$count值>0,就进行while循环,
-gt是great
then的意思
调用变量count的方法:是在前面加$,这里的$count=3
第6行、count=$((count-1))
每循环一次count值减1

Ⅲ 在linux中,count=$#实现了什么功能

第一句是把$#赋值给了count变量,$#是特殊Shell变量,指的是参数的个数。
cmd变量的内容是echo命令
第三句是循环,条件是只要count不等于0
第六句是count值减1

程序的意思是:
一直循环,只要参数个数不是0,那么显示这个参数,前面加上一个$符号。
即你的参数是foo的话,那么显示的就是$foo

eval的意思是运行变量cmd中命令

Ⅳ linux dd指令用法中参数bs,count

你对bs=xxx count=mmm的说法是正确的,但是对dd的打印提示说法不正确。

dd的输出是:
x+y records in
m+n records out

其中 x和m的含义是 x和m个完整的块(也就是你用bs指定的块大小)被读入和写出。

其中y和n的含义是 y和n个不完整的块(部分块)被读入和写出。

最常见产生的不完整块的读入是由于碰到了读入的文件尾,比如你有一个文件a.log的大小是10个字节,你用下面的命令就会出现1+1的情况,因为第二个块不够6个字节,只有4字节。

dd if=a.log of=b.log bs=6 count=2

1+1 records in
1+1 records out

常见的出现0+0的情况是由于被读的文件是空文件(0字节),比如下面的命令

dd if=/dev/null of=b.log bs=6 count=2

0+0 records in
0+0 records out

Ⅳ Linux文件系统操作命令

Linux文件系统操作命令大全

Linux命令有很多,那么Linux文件系统操作命令又有哪些呢?下面我为你介绍!

文件系统操作命令:

1. cat:可以显示文件的内容(经常和more搭配使用),或将多个文件合并成一个文件。

2. chgrp:用来改变文件或目录所属的用户组,命令的参数以空格分开的要改变属组的文件列表,文件名支持通配符,如果用户不是该文件的所有者,则不能改变该文件的所属组。

3. chmod:用于改变文件或目录的访问权限,该命令有两种用法:一种是使用图形化的方法,另一种是数字设置法。

4. chown:用来将指定用户或组为特定的所有者。用户可以设置为用户名或用户ID,组可以是组名或组ID。特定的文件是以空格分开的可以改变权限的文件列表,文件名支持通配符。

5. clear:用来清除终端屏幕。

6. cmp:用来比较两个文件的大小。

7. cp:()可以将文件或目录复制到其他目录中,就如同Dos下的命令一样,功能非常强大。在使用cp命令时,只需要指定源文件名或目标目录即可。

8. cut:用来移除文件的部分内容。

9. diff:用来找出两个文件的不同之处。

10. : 用来显示磁盘的剩余空间的大小。

11. file:用来显示文件的类型。

12. find:用来在目录中搜索文件,并执行指定的操作。

13. head:只查看文件的头几行内容,而不必浏览整个文件。

14. ln:可以在文件之间创建链接,实际上是给某个文件指定一个访问它的别名。

15. less:用法与more类似,可以查看超过一屏的文件内容,不同的是less除了可以按空格键向下显示文件外,还可以利用方向键来滚动显示文件,要结束浏览,只要在less的提示符“:”后按Q即可。

16. locate:可用于查找文件,且比find命令的搜索速度快。

17. ls(list):用来显示当前目录中的文件和子目录列表。

18. mkdir(make directory):建立子目录。

19. more:用于显示内容超过一屏的文件,为了避免文件内容显示瞬间就消失,可以使用more命令让文件显示满一屏时暂停,在按下任意键的时候继续显示下一屏的内容。

20. rmkdir(remove directory):用来删除“空”的子目录或无用的目录文件。

21. mv(move):可以将文件以及目录移到其他位置,或更改文件以及目录的名称。

22. pico:可指定文本的编辑方式。

23. pwd(print working directory):可显示用户当前所在的目录。

24. rm:用来删除系统中过时或无用的文件,可以删除目录中的文件或目录本身,对于链接文件,原有文件保持不变。

25. sort:将文本文件自动分类。

26. stat:用于显示文件或文件系统的状态。

27. Strings:显示文件中要打印的字符串。

28. tail:输出文件的结尾。

29. touch:改变文件的时间戳。

30. umask:用于启动bash shell。

31. uniq:移除已分类文件中的重复文本行。

32. vi:启动vi文本编辑器。

33. wc:显示文件中字节、词组合文本行的数目。

34. whereis:查找特定目录下的原始程序,二进制程序或用户手册等文件的位置。

35. man:如果用户对某个命令想了解更详细的话,可使用此命令。

36. dd:复制一个文件。

37. df:查看一个文件系统的磁盘空间使用情况。

38. edquoat:设置用户与用户组的磁盘空间限制,即Windows系统中的配额。

39. fdformat:格式化软盘。

40. fdisk:执行Linux下的`磁盘分区。

41. mkfs:建立一个Linux文件系统。

42. mkswap:创建一个Linux交换分区。

43. mount:挂载一个文件系统。

44. quota:限制和显示用户可用的磁盘空间。

45. swapon,swapoff:启用或取消设备和文件的交换页。

46. quotaon,quotaoff:启用或取消quota限制。

47. umount:取消文件系统的装备。

系统管理命令

1. finger:查询用户信息,也能查看默认的用户环境。

2. ftp:标准的文件传输协议的用户接口,是在网络上传输文件最简单有效的方法。

3. host:用于DNS查询。

4. hostname:用于显示或设置系统的主机名。

5. ifconfig:用于配置网卡接口。(可以使用down或up参数来禁用或启用某个网卡接口)

6. mail:发送和接收邮件。

7. netstat:显示网络连接、路由表和网络接口信息,用户可以知道目前那些网络连接正在运行。

8. ping:此命令用于测试本计算机和网络上其它的计算机是否相连。

9. rlogin:远程登陆命令,该命令与telnet命令很相似,允许用户启动远程系统的交互会话。

10. rcp:rcp(remote file )命令是远程文件复制命令,该命令用于在计算机之间复制文件,有两中格式,一种格式用于文件动文件的复制,另一种用于把文件或目录复制到其他文件目录中。

11. route:此命令用于显示或设置IP路由表。

12. tcpmp:此命令用于测试网络的通信量。

13. talk:此命令可用于事项网络用户的适时交谈,但是必须将双方系统的信息加入各自的/etc/hosts文件中,以相互识别。

14. telnet:此命令用于通过网络登陆远程计算机,如同操作本地计算机一样。

15. wall:wall(write all)命令可以用于发送消息给登陆本机的用户。在发送消息时,可直接输入要发送的消息,也可以把文件当成消息发送。

16. wget:此命令用于Linux环境下从Internet上下载文件,支持http和ftp协议,支持代理服务器和断点连续传功能,能够递归远程主机上的目录,查找合乎要求的的文件并下载到本地硬盘上。Wget命令可以在后台运行,截获并忽略hantfup信号,因此用户退出登陆后,仍可继续运行。

17. &,bg:&,bg命令是后台执行命令,有时候用户执行的程序可能要话很多时间,如果放在前台执行,可能无法继续其他操作,最好将他放在后台执行。

18. fg:fg命令是前台执行命令,如果用户有程序在后台运行,可以通过fg命令将程序从后台移到前台执行。

19. jobs:此命令用于显示正在后台执行的任务清单。Bg,fg,jobs命令都属于bash命令,

20. kill:此命令用于终止一个程序,例如:#[root@rathat9 root]kill 3793

21. ps:此命令用于显示程序的状态。

22. top:此命令用于显示当前CPU进程。

23. at batch atp atrm:这些命令用于排序,检查或删除后台运行的任务。

Linux与用户有关的命令:

1. passwd命令:更改用户口令。

格式:passwd [用户名]

2. su命令:可以让一个普通用户拥有超级用户或其他用户的权限,也可以让超级拥护以普通用户的身份做一些事情。

格式:su[选项][?][使用者账号]

说明:若没有指定的使用者账号,则系统预设值为超级用户root。该命令中个选项的含义分别为:

-c:执行一个命令后就结束。

-:加了这个减号的目的是使环境变量和欲转换的用户相同。

-m:保留环境变量不变。

Linux系统管理命令:

1. wall命令:对全部以登陆的用户发送信息。

2. write命令:向系统中某一用户发送信息。

格式:write 用户账号 [终端名称]

3. mesg命令:设定是否允许其他用户用write命令给自己发送信息。

如果允许输入命令:mesg y

如果不允许输入命令:mesg n

4. sync命令:在关闭Linux系统是使用的。Sync是强制把内存中的数据写回硬盘,以免数据丢失。

5. shutdown命令:可以安全的关闭或重启Linux它在系统关闭之前给系统上的所有登陆用户提示一条警告信息。

格式:shutdown [选项][时间][警告信息]

命令中选项的含义:

-k:并不真正关机,而只是发出警告信息给所有用户。

-r:关机后立即重新启动。

-h:关机后不重新启动。

-f快速关机,重新启动时跳过fsck。

-n:快速关机,不经过init程序。

-c:取消一个已经运行的shutdown。

6. free命令:查看当前系统内存的使用情况,它显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心使用的缓冲区。

格式:free [-b | -k |-m]

命令中各个选项的含义:

-b:以字节为单位显示。

-k:以K字节为单位显示。

-m:以兆字节为单位显示。

7. uptime命令:显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

8. df命令:检查文件系统的磁盘空间占用情况。

格式:df [选项]

说明:df命令可显示所有文件系统对I节点和磁盘块的使用情况。

命令中各个选项的含义:

-a:显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统。

-k:以k字节为单位显示。

-i:显示i节点信息,而不是磁盘块。

-t:显示各指定类型的文件系统的磁盘空间使用情况。

-x:列出不是某一指定类型文件系统的磁盘空间使用情况。

-T:显示文件系统类型。

9. 命令:显示磁盘空间的使用情况。统计目录(或文件)所占磁盘的大小。

格式: [选项] [Names…]

说明:该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出Names,则对当前目录进行统计。

命令中各个选项的含义:

-s:对每个Names参数只给出占用的数据块总数。

-a:递归的显示指定目录中各文件及子孙目录中个文件占用的数据块数。若既不指定-s,也不指定-a,则显示Names中的每一个目录及其中的各子目录所占的磁盘块数。

-b:以字节为单位列出磁盘空间使用情况(系统缺省以k字节为单位)。

-k:以1024字节为单位列出磁盘空间的使用情况。

-c:最后再加上一个总计(系统缺省设置)。

-l:计算所有的文件大小,对硬链接文件,则计算多次。

-x:跳过在不同文件系统上的目录不予统计。

10. dd命令:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。

格式:dd [选项]

命令中各个选项的含义:

if = 输入文件(或设备名称)。

of = 输出文件(或设备名称)。

ibs = bytes 一次读取bytes字节,及读入缓冲区的字节数。

skip = blocks 跳过读入缓冲区开头的ibs*blocks块。

obs = bytes 一次写入bytes字节,及写入缓冲区的字节数。

bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs).

cbs = byte 一次转换bytes字节。

count = blocks 只拷贝输入的block块。

conv = ASCⅡ 把EBCDIC码转换为ASCⅡ。

conv = ebcdic 把ASCⅡ码转换为EBCDIC码。

conv = ibm ibm把ASCⅡ码转换为alternate EBCDIC码。

conv = block 把变动位转换成固定字符。

conv = ublock 把固定位转换成变动位。

conv = ucase 把字母由小写转换为大写。

conv = lcase 把字母由大写转换为小写。

conv = notrunc 不截短输出文件。

conv = swab 交换每一对输入字节。

conv = noerror 出错是不停止处理。

conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。

11. fdformat命令:低级格式化软盘。

格式:format [-n] device

说明:-n 软盘格式化后不作检验。

12. echo命令:在显示器上显示一段文字,一般起到一个提示作用。

格式:echo [-n] 字符串

13. cal命令:显示某年某月的日历。

格式:cal [选项] [月 [年]]

命令中各个选项的含义:

-j:显示出给定月中的每一天是一年中的第几天(从1月1日算起)。

-y:显示出整年的日历。

14. date命令:显示和设置系统日期和时间。

格式:date [选项] 显示时间格式 (以 + 开头,后面接格式)

date [选项] 设置时间格式

命令中各个选项的含义:

15. clear命令:清除屏幕上的信息。

Vi的基本命令:

1. 移动光标:

Ctrl + b:上滚一屏

Ctrl + f:下滚一屏

Ctrl + d:下滚半屏

Ctrl + u:上滚半屏

G: 移到文件最后

W:移到下个字的开头

B:跳至上个字的开头

2. 删除

x:删除当前光标所在后面一个字符

#x:删除当前光标所在后面#个字符。例如,5x表示删除5个字符。

dd:删除当前光标所在行

#dd:删除当前光标所在后面#行。例如,5dd表示删除字光标算起的5行。

:l,#d:例如,:1,12d表示删除自行1至行12的文字

X:删当前光标的左字符

D:删至行尾

3. 更改

cw:更改光标处的字到此单字的字尾处

c#w:例如,c3w表示更改3个字

cc:修改行

c:替换到行尾

4. 取代

r:取代光标处的字符

R:取代字符直到按ESC为止

5. 复制

yw:拷贝光标处的字到字尾只缓冲区

P:把缓冲区的资料贴上来

yy:拷贝光标所在之行至缓冲区

#yy:例如:5yy,拷贝光标所在之处以下5行至缓冲区

Linux文件的复制,删除和移动命令

1.cp命令:该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的COPY命令一样,功能十分强大。

语法:cp[选项]源文件或目录,目标文件或目录

说明该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。

该命令的各项选项含义如下:

-a:该选项通常在拷贝目录是使用。他保留链接,文件属性,并递归地拷贝目录,其作用等于dpr选项的组合。

-d:拷贝是保留链接

-f:删除已经存在的目标文件而不提示。

-I:和 f选项相反,在覆盖目标文件之前将给出提示要求拥护确认。回答y时目标文件将被覆盖,是交互式拷贝。

-p:此时cp除复制源文件的内容外,还将把其修改时间和反问权限也复制到新文件中。

-r;若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。

-L:不作拷贝,只是链接文件。

需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp 命令拷贝文件后,这个文件酒会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用I选项。

2.mv命令:用户可以使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令如同MS-DOS下的ren 和 move 的组合。

语法:mv[选项]源文件或目录 目标文件或目录。

说明:视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),他将所给的源文件或目录重命名为给顶的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参加参数可以有很多个,mv命令将个参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

命令中各选项的含义为:

-I:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件。

-f:禁止交互操作。在mv操作要覆盖某已有的目标文件是不给任何指示,指定此选项后,I选项将不再起作用。

如果所给目标文件(不是目录)已存在,此时该文件的内容将后备新文件覆盖,为防止用户用mv命令破坏另一个文件,使用mv命令移动文件时,最好使用I选项。

3.rm命令:用户可以用rm命令删除不需要的文件。该命令的功能问删除一个目录中的一个或多个文件或目录,他也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,源文件保持不变。

Rm命令的一般形式为:

Rm [选项]文件……

如果没有使用-r选项,则rm不会删除目录。

该命令的各选项含义如下:

-f:忽略不存在的文件,从不给出提示。

-r:指示rm将参数中列出的全部目录和子目录均递归地删除。

-I:进行交互式删除。

使用rm命令要小心。因为一旦文件被删除,他是不能被恢复的。为了防止这种情况的发生可以使用I选项俩逐个确认要删除的文件。如果用户输入y,文件将被删除。如果输入任何其他东西,文件则不会删除。

Linux目录的创建与删除命令:

1. mkdir命令

功能:创建一个目录(类似MS-DOS下的md命令)。

语法:mkdir[选项]dir-name

说明:该命令创建由dir-name命名的目录。要求创建目录的用户在当前目录中(dir-name的父目录中)具有写权限,并且dirname不能是当前目录中已有的目录或文件名称。

命令中个选项的含义为:

-m:对新建目录设置存取权限。也可以用chmod命令设置。

-p:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。

2. rmdir命令

功能:删除空目录。

语法:rmdir[选项]dir-name。/

说明:dir-name表示目录名。该命令从一个目录中删除一个或多个子目录项。需要特别注意的是,一个目录被删除之前必须是空的。Rm-r dir 命令可代替rndir,但是有危险性。删除某目录时也必须具有对父目录的、写权限。

命令中个选项的含义为:

-p递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。

3. cd命令

功能:改变工作目录。

语法:cd[directory]

说明:该命令将当前目录改变至directory所指定的目录。若没有指定directory,则回到用户的主目录。为了改变到指定目录,用户必须拥有对指定目录的执行和读权限。

该命令可以使用通配符(如”*,_”这样的通配符号)。

4. pwd命令

在Linux层次结构中,用户可以在被授权的任意目录下利用mkdir命令创建新目录,也可以利用cd命令从一个目录转换到另一个目录。然而,没有提示符来告知用户目前处于哪一个目录中。想要知道当前所处的目录,可以用pwd命令,该命令显示整个路径名。

语法:pwd

说明:此命令显示出当前工作目录的绝对路径。

5. ls命令

ls是list的简写,其功能为列出目录的内容。这是拥护最常用的一个命令之一,因为用户需要不时地查看某个目录的内容,该命令类似于DOS下的dir命令

语法:ls[选项][目录或是文件]

对于每个目录,该命令将列出其中的所有子目录与文件。对于每个文件,ls将输出其文件名以及所要求的其他信息。默认情况下,输出条目按字母顺序排序。但未给出目录名或是文件名时,就显示当前目录的信息。

命令中各个选项的含义:

-a:显示指定目录下所有子目录与文件,包括隐藏文件。

-A:显示指定目录下所有子目录与文件,包括隐藏文件。但不列出“.”和“..”.

-b:对文件名中的不可显示字符用把禁止

linux中所有设备都是以文件的形式显示

linux下文件的后缀名无实际意义

命令

pwd 显示路径

man +命令 列出操作说明

ls -l/-help列出 文件目录

cd / 目录做实验

安装步骤 configure make make install?

rm -r dl 递归删除目录

rm -rf 删除所有目录

rm -f 加文件名 删除文件

rmdir +文件地址 删除文件夹所有和rm -rf功能差不多

touch 加名字 创建新文件

cp 复制 mv 移动 rm 删除

vi 文本编辑器 输入a将从命令格式变成输入格式

head tail 查看前面和后面

find 加位置 加文件名 查找

echo $PATH 查询路径

useradd 加名字 添加用户

userdel 加名字 删除用户

su 加用户名 切换用户

chmod +x/-x 加文件名 修改文件权限

chmod 755 加文件名 改变权限在安装程序时

grep 加文本字符 加在那个文件 查找字符存在那行

fdisk -l 查看磁盘信息

命令1|命令2|命令三... 管道

ps -ef查看进程

ifconfig linux查看ip

重定向

linux和其它机器之间共享文件vsftp Windows和linux传输文件15-17

putty远程登录软件ssh

gzip 压缩解压缩 -d解压 21

service iptables off防火墙关闭

tar -xvf 第二层解压缩

.tar

解包:tar xvf FileName.tar

打包:tar cvf FileName.tar DirName

(注:tar是打包,不是压缩!)

———————————————

.gz

解压1:gunzip FileName.gz

解压2:gzip -d FileName.gz

压缩:gzip FileName

.tar.gz 和 .tgz

解压:tar zxvf FileName.tar.gz ./DirName

压缩:tar zcvf FileName.tar.gz DirName

.tar.bz2

解压:tar xjf FileName.tar.bz2 ./DirName

压缩:tar cjf FileName.tar.bz2 DirName

rpm -ivh 加.rpm文件 安装

安装sudo apt-get install 软件名

;

Ⅵ linux中查看物理内存和配置空间的命令是什么

linux中查看物理内存的命令是:dmidecode -t memory | grep Size。(如果没有安装dmidecode 需要先执行yum -y install dmidecode)

物理内存是没办法配置的,只能配置虚拟内存,在Linux系统即Swap分区,查看Swap分区的命令是:free -k 或者 free -m。m代表以MB为单位,k代表以KB为单位。


(6)countlinux扩展阅读

dmidecode命令介绍

使用方法:

dmidecode [OPTIONS]

参数介绍:

-d, --dev-mem FILE 从设备文件读取内存(默认: /dev/mem)

-h, --help显示此帮助文本并退出。

-q, --quiet 减少详细输出。

-t, --type TYPE 仅显示给定类型的条目。

-V, --version 查看版本号。

Ⅶ linux如何查看有多少用户登录

Linux中查看总共有多少用户登录的命令是:who | wc -l,命令解释如下:
统计有多少行用wc命令加-l参数,wc命令可以统计出多少字、行、字符数,-l参数表示仅仅统计出行数。这个命令要和Linux的管道符结合使用,比如想知道一个文件有多少行可以这样用:
cat /etc/passwd | wc -l
而查看当前有哪些用户登录可以用who命令,who命令的显示中一行结果就是一个已登录的用户,再加上wc -l命令就可以统计出有多少用户登录了,所以最终命令是:
who | wc -l

Ⅷ linux中test$count什么意思

Linux系统中有时需要检测某个条件是否成立,那么就要用到test命令了,Linux下test的用法有很多,下面就随学习啦小编一起来学习下Linux系统中如何使用test命令吧。

1.判断一个命令的结果使用test,其返回0,或一个整数。返回0表示true,返回整数表示错误码

2.获取上一个命令的返回结果使用$?

3.例如

我的服务器上面存在/home/www这样一个文件夹,所以ls /home/www这个命令的返回结果为0;

即echo $?的返回值为0

我的服务器上面不存在/home/kkk这样一个文件夹,所以ls /home/kkk这个命令的返回结果为这个命令执行后的错误码;

.png

即echo $?的返回结果为2。这个2表示文件或文件夹不存在。

4.常用的文件测试符

-e表示此文件名是否存在

-f表示此文件名是否是文件

-d表示此文件名是否是文件夹

-r表示此文件名是否可读

-w表示此文件是否可写

-x表示此文件是否可执行

-S表示此文件是否问socket

4.1在我的服务器上/home/www为一个文件夹

所以test -e /home/www的结果为0,即true,此文件名存在

所以test -f /home/www 的结果不为0,即false,此文件名不为文件

所以test -d /home/www的结果为0,即为true,此文件名为文件夹

4.2在我的服务器上/home/kkk这个文件名不存在

所以test -e /home/kkk的结果不为0,即false,此文件名不存在

所以test -d /home/kkk的结果不为0,即false,此文件名不问文件夹。

上面就是Linux逻辑命令之test命令的使用方法介绍了,如果你要判断一个条件是否成立,就会用过该命令,你学会了吗?

文章知识点与官方知识档案匹配
CS入门技能树Linux进阶新增用户
24650 人正在系统学习中
打开CSDN APP,看更多技术内容

shell语法中的test命令详解
test命令用法。功能:检查文件和比较值 1)判断表达式 if test (表达式为真) if test !表达式为假 test 表达式1 –a 表达式2 两个表达式都为真 test 表达式1 –o 表达式2 两个表达式有一个为真 2)判断字符串 test –n 字...
继续访问
linux期末vi简答题,Linux操作系统期末练习题lym
71.进程可以忽略大部分信号,但下列信号中()不能忽略 A.SIGBORT B.SIGILL C.SIGQUIT D.SIGKILL72.调用exec函数会将原来设置为要捕获的信号都更改为() A. 默认 B.忽略 C.另一捕获 D.默认或忽略 73.可用于在不同主机的进程间通信的技术是() A. 管道 B.共享内存 C.消息队列 D.套接字 74.只能在...
继续访问
linux命令test功能,linux利用test命令的测试功能
当要检测系统上的某些文件或者相关属性时,利用test这个命令来工作:测试的标志代表意义-e该文件名是否存在-f该文件名是否存在且为文件-d该文件名是否存在且为目录-b该文件名是否存在且为一个block device设备-c该文件名是否存在且为一个character device设备-S该文件名是否存在且为一个Socket文件-p该文件名是否存在且为一个FIFO文件-L该文件名是否存在且为一个连接文...
继续访问
热门推荐 Linux shell 的 test 命令用法详解
基本格式: test expression expression为test命令构造的表达式。 这里expression是test命令可以理解的任何有效表达式,该简化格式将是读者可能会踫见的最常用格式 返回值: test命令或者返回0(真) 或者返回1(假). test可理解的表达式类型分为四类: 表达式判断 字符串比较 数字比较 文件比较 1)判断表达
继续访问
linux shell 条件测试
1.文件条件测试 -r 可读 -w 可写 -x 可执行 ...
继续访问
test
test命令编程开发test命令是shell环境中测试条件表达式的实用工具。语法test(选项)选项-b<文件>:如果文件为一个块特殊文件,则为真; -c<文件>:如果文件为一个字符特殊文件,则为真; -d<文件>:如果文件为一个目录,则为真; -e<文件>:如果文件存在,则为真; -f<文件>:如果文件为一个普通文...
继续访问
linux 测试 命令大全,linux命令大全之-test测试命令
格式:test 测试条件字符串测试:注意空格:test str1 == str2 测试字符串是否相等test str1 != str2 测试字符串是否不相等test str1 测试字符串是否不为空test -n str1 测试字符串是否不为空test -z str1 测试字符串是否为空整数测试test int1 -eq int2 测试整数是否相等test int1 -ge int2 测试int1是...
继续访问
linux test 命令,Linuxtest命令、test命令
Linux中的test命令test命令可以检测一个文件或者目录是否存在,或者对一个文件或目录的读写权限等等常见语法test -选项 文件或目录-e 文件名是否存在,存在$?返回0也就是true-f 文件名是否存在,且为文件 存在$?返回0-d 文件名是否存在,且为目录 存在$?返回0-L 文件名是否存在,且为链接文件 存在$?返回0-r -w -x 这三个是单选项,文件名是否存在,并且具有可读...
继续访问
shell test 命令
shell test 命令
继续访问
linux中test命令详解
linux中test命令详解,包含test的多种实用方法
继续访问
[Linux]:Linux shell 的 test 命令用法详解
基本格式: test expression expression为test命令构造的表达式。 这里expression是test命令可以理解的任何有效表达式,该简化格式将是读者可能会踫见的最常用格式 返回值: test命令或者返回0(真) 或者返回1(假). test
继续访问
linux test -e ps,test
1、Linux如何挂载windows下的共享目录?mount.cifs //IP地址/server /mnt/server -o user=administrator,password=123456linux 下的server需要自己手动建一个 后面的user与pass 是windows主机的账号和密码 注意空格 和逗号2、如何查看http的并发请求数与其TCP连接状态?netstat -n | ...
继续访问
linux之test命令详解
linux之test命令详解 test作用检查某个条件是否成立,返回值为0(真)或者其他值(假),可通过echo $?查看返回值,也常用于循环和条件语句。 test一般有三种用法: 测试文件或者文件夹 字符串比较 数值比较 1.测试文件或者文件夹 参数 说明 -e 当路径存在时返回真 -f 当路径存在且为文件时返回真 -d 当路径存在且为文件夹时返回真 [root@linuxforliuhj test]# ll total 20 -rw-r--r--. 1 root root
继续访问
最新发布 linux test命令
https://os.51cto.com/article/705259.html
继续访问
linux test命令测试标志
test命令测试标志
继续访问
linux test 使用方法,Linux系统test命令使用方法介绍
Linux系统中有时需要检测某个条件是否成立,那么就要用到test命令了,Linux下test的用法有很多,下面就随小编一起来学习下Linux系统中如何使用test命令吧。1.判断一个命令的结果使用test,其返回0,或一个整数。返回0表示true,返回整数表示错误码2.获取上一个命令的返回结果使用$?3.例如我的服务器上面存在/home/www这样一个文件夹,所以ls /home/www这个命令...
继续访问
linux shell编程学习--test测试比较命令
本文介绍了linux shell自带test命令的各种用法。在linux shell编程过程中,如何使用test命令进行算术比较,文件属性,文件修改,字符串比较,以及逻辑表达式运算的操作。
继续访问
linux shell test 命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。 1.数值比较 参数 说明 -eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于等于则为真 -lt 小于则为真 -le 小于等于则为真 举例: num1=100 num2=1...
继续访问
linux shell 字符比较与数值比较,bash的调试
test命令用法。功能:检查文件和比较值1)判断表达式if test (表达式为真)if test !表达式为假test 表达式1 –a 表达式2 两个表达式都为真test 表达式1 –o 表达式2
继续访问
linux中test的用法
写评论

评论

热点内容
为什么账号风险不能修改密码 发布:2025-05-10 10:31:23 浏览:67
sql与in相对 发布:2025-05-10 10:31:15 浏览:223
c语言led灯闪烁 发布:2025-05-10 10:26:54 浏览:812
比尔密码价值多少人民币 发布:2025-05-10 10:26:20 浏览:448
怎样用电脑远程连接拨号服务器 发布:2025-05-10 10:17:44 浏览:467
服务器需要什么系统 发布:2025-05-10 10:17:38 浏览:195
中国电信拍摄脚本 发布:2025-05-10 10:17:00 浏览:457
43魔兽世界POR脚本 发布:2025-05-10 10:06:15 浏览:731
群辉外网访问nas 发布:2025-05-10 10:05:35 浏览:472
ftp记录传输文件 发布:2025-05-10 09:56:53 浏览:560