网站首页 > 文章中心 > 其它

linux命令执行原理_linux命令行打开文件命令

作者:小编 更新时间:2023-08-23 13:19:54 浏览量:321人看过

Linux基础命令和原理总结

作为一个程序员或者测试开发人员,我们在进行项目部署和运维时,经常会用到一些linux命令,可是这些命令老是忘记,每次用到的时候都要去谷歌百度,很是麻烦!这不,为了自己使用方便,对常见的linux命令, SHELL, VIM, Linux性能调优和linux kernel的总结,以便在用到时能够快速地找到相关命令,同时有需要的朋友也可以参考搜藏该篇文章!文章对讲到的每个命令都有详细的参数解释,并且给出一些常用例子,所以呢也非常适合用来学习!

shell(命令解释器)自带的命令称为内部命令,其它的是外部命令

内部命令使用help帮助:help cd

linux命令执行原理_linux命令行打开文件命令-图1

外部命令使用help帮助:ls --help

type命令:用于区分是内部命令还是外部命令:

ls is aliased to +ls --color=auto' #外部命令

cd is a shell builtin #内部命令

pwd命令:显示当前目录

ls命令:查看目录和文件名称

ls -l 查看目录各个字段含义

linux命令执行原理_linux命令行打开文件命令-图2

第一字段:首字母代表的是文件类型 ,其中"-"为普通文件、"d"为目录文件、"c"为字符设备文件、"b"为块设备文件、"p"为管道文件、"l"为链接文件、"s"为socket文件."rwx"分别代表拥有读、写和执行权限,"-代表无对应权限.三个"rwx"依次代表文件所有者、文件所有者所在用户组、其它用户对文件拥有的权限.

第二字段:文件硬连接数量

第三字段:文件拥有者

第四字段:文件拥有者所在组

第五字段:文件大小(以字节为单位)

第六字段:文件最后更改时间

第七字段:文件名(若为链接文件则追加显示其链接的原文件的路径)

ls命令其它参数含义:

-a显示隐藏文件(.开头的文件)

-r逆序排序

-t按照时间顺序显示

-R递归显示

ls -lartR : 按照时间顺序倒序显示所有文件及其文件夹的文件

cd命令:更改当前的工作目录

cd /path/... 绝对路径

cd ./path/... 相对路径(./可以省略)

cd ../path/... 相对路径

mkdir -p 递归目录:递归创建目录

rmdir命令:删除目录

rmdir a/b/c/d/e/ #删除空目录

rm -r a/b/c/d/ #递归删除目录,但是系统会做多次询问

rm -rf a/b/c/d/ #删除目录,不做任何询问

cp命令:复制文件和目录

-r 复制目录

-p 保留用户、权限、时间等文件属性

mv命令:移动文件和重命名

mv *.log 目标目录

通配符:

*匹配任何字符串

匹配一个字符串

[xyz]任何一个字符串

[a-z]匹配一个范围

cat命令:文本内容显示到终端

head命令:查看文件开头

tail命令:查看文件末尾

tail常用参数-f,文件内容更新后,同步显示更新的文件信息

tail -f 文件名称

wc命令:统计文件内容信息

wc 文件名称

useradd命令:新建用户

useradd 用户名

userdel命令:删除用户

userdel 用户名 用户所在的家目录不会被删除

linux命令执行原理_linux命令行打开文件命令-图3

userdel -r 用户名 用户相关的所有配置都会被删除

passwd命令:修改用户密码

passwd 用户名

usermod命令:修改用户属性

/etc/passwd文件:查看用户文件

tail /etc/passwd

/etc/shadow文件:查看用户密码

tail /etc/shadow

groupadd命令:添加用户组

groupadd 用户组

groupdel命令:删除用户组

groupdel 用户组

用户切换

su 用户名 切换用户,但是用户所在环境不变,即pwd路径不会变化

su - 用户名 切换用户,同时会切换到用户家目录,即/home/用户名

sudo命令:普通用户需要执行root用户权限的解决方案.

-c 'cc-address' -b 'bcc-address'

'to-address' | Command to send email | | mail -s "Subject"

to-address Filename+ | Command to send email with attachment |

File Permission commands

Hope this Linux reference guide helps you!

希望这些常用的命令和系统原理,以及linux操作可以让粉丝们变的更强提升linux命令和操作!!!

LINUX系统的内存管理知识详解

内存是Linux内核所管理的最重要的资源之一.内存管理系统是操作系统中最为重要的部分,因为系统的物理内存总是少于系统所需要的内存数量.虚拟内存就是为了克服这个矛盾而采用的策略.系统的虚拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量.Linux支持虚拟内存, 就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大.核心把当前不用的内存块存到硬盘,腾出内存给其他目的.当原来的内容又要使用时,再读回内存.以下就是我为大家整理到的详细LINUX系统内存管理的知识,欢迎大家阅读!!!

LINUX系统教程:内存管理的知识详解

第一段:内存使用情况监测

(1)实时监控内存使用情况

在命令行使用"Free"命令可以监控内存使用情况

代码如下:

#free

total used free shared buffers cached

watch命令会每两秒执行 free一次,执行前会清除屏幕,在同样位置显示数据.因为 watch命令不会卷动屏幕,所以适合出长时间的监测内存使用率.可以使用 -n选项,控制执行的频率;也可以利用 -d选项,让命令将每次不同的地方显示出来.Watch命令会一直执行,直到您按下 [Ctrl]-[C] 为止.

第二段:虚拟内存的概念

(1)Linux虚拟内存实现机制

Linux虚拟内存的实现需要六种机制的支持:地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制、内存共享机制.

首先内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址,在用户程序运行时如果发现程序中要用的虚地址没有对应的物理内存时,就发出了请求页要求;如果有空闲的内存可供分配,就请求分配内存(于是用到了内存的分配和回收),并把正在使用的物理页记录在缓存中(使用了缓存机制). 如果没有足够的内存可供分配,那么就调用交换机制,腾出一部分内存.另外在地址映射中要通过TLB(翻译后援存储器)来寻找物理页;交换机制中也要用到交换缓存,并且把物理页内容交换到交换文件中后也要修改页表来映射文件地址.

第三段:使甩vmstat命令监视虚拟内存使用情况

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

r b swpd free buff cache si so bi bo in cs us sy id wa

vmstat命令输出分成六个部分:

(1)进程procs:

r:在运行队列中等待的进程数 .

b:在等待io的进程数 .

swpd:现时可用的交换内存(单位KB).

free:空闲的内存(单位KB).

buff: 缓冲去中的内存数(单位:KB).

cache:被用来做为高速缓存的内存数(单位:KB).

si: 从磁盘交换到内存的交换页数量,单位:KB/秒.

so: 从内存交换到磁盘的交换页数量,单位:KB/秒.

bi: 发送到块设备的块数,单位:块/秒.

bo: 从块设备接收到的块数,单位:块/秒.

in: 每秒的中断数,包括时钟中断.

cs: 每秒的环境(上下文)切换次数.

cs:用户进程使用的时间 .以百分比表示.

sy:系统进程使用的时间. 以百分比表示.

id:中央处理器的空闲时间 .以百分比表示.

第四段:Linux 服务器的内存泄露和回收内存的方法

①.、内存泄漏的定义:

一般我们常说的内存泄漏是指堆内存的泄漏.堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存.应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了.

从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在.真正有危害的+是内存泄漏的堆积,这会最终消耗尽系统所有的内存.从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到.存在内存泄漏问题的程序除了会占用更多的内存外,还会使程序的性能急剧下降.对于服务器而言,如果出现这种情况,即使系统不崩溃,也会严重影响使用.

对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到.在 Linux 或者 unix 下,C、C++语言是最使用工具.但是我们的 C++ 程序缺乏相应的手段来检测内存信息,而只能使用 top 指令观察进程的动态内存总额.而且程序退出时,我们无法获知任何内存泄漏信息.

使用kill命令

使用Linux命令回收内存,我们可以使用Ps、Kill两个命令检测内存使用情况和进行回收.在使用超级用户权限时使用命令"Ps",它会列出所有正在运行的程序名称,和对应的进程号(PID).Kill命令的工作原理是:向Linux操作系统的内核送出一个系统操作信号和程序的进程号(PID).

应用例子:

为了高效率回收内存可以使用命令ps 参数v:

PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND

然后如果想回收Ping命令的内存的话,使用命令:

使用工具软件

Memprof是一个非常具有吸引力且非常易于使用的软件,它由Red Hat的Owen Talyor创立.这个工具是用于GNOME前端的Boehm-Demers-Weiser垃圾回收器.这个工具直接就可以执行,并且其工作起来无需对源代码进行任何修改.在程序执行时,这个工具会以图形化的方式显示内存的使用情况.

相关介绍:Linux

严格来讲,Linux这个词本身只表示Linux内核,但人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统.

Linux有着许多不同的版本,但它们都使用了Linux内核.Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机.

Linux下的shell工作原理是什么?

Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言、命令解释程序及程序设计语言的统称.

shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层.当从shell或其他程序向Linux传递命令时,内核会做出相应的反应.

shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用.用户在提示符下输入的命令都由shell先解释然后传给Linux核心.

有一些命令,比如改变工作目录命令cd,是包含在shell内部的.还有一些命令,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序.对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序.

shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs).然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表).如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息.如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核.

shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构.shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中.

当普通用户成功登录,系统将执行一个称为shell的程序.正是shell进程提供了命令行提示符.作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用"$"作提示符,对超级用户(root)用"#"作提示符.

一旦出现了shell提示符,就可以键入命令名称及命令所需要的参数.shell将执行这些命令.如果一条命令花费了很长的时间来运行,或者在屏幕上产生了大量的输出,可以从键盘上按ctrl+c发出中断信号来中断它(在正常结束之前,中止它的执行).

当用户准备结束登录对话进程时,可以键入logout命令、exit命令或文件结束符(EOF)(按ctrl+d实现),结束登录.

linux top命令的原理

那你就把大的进程kill

.

其实PS和TOP都是查看进程的命令,只是用法和参数不一样的,

怎么在linux中调用命令行中的命令,比如我想在一个程序中用命令行运行另一个程序

#include stdlib.h

int system(const char *string);

参数string是将要执行的程序文件名或路径,如果是启动一个命令就是一个命令字符串.

还有一种执行外部程序的方法是exec系列函数,一般是在fork的子进程里面调用exec系列函数,那主进程里直接调用exec系列不行吗,为什么要fork再在子进程里调用呢?因为exec系列的函数(包括execl函数)都是将当前进程替换成新进程,也就是说新进程启动后原来的进程就不存在了,exec系列函数后面的那些代码就不会再执行了.如果你不放在fork子进程里面,那主进程在执行execl函数后就完全不存在了,所以exec系列函数的使用都是先fork然后在子进程里面调用.因为exec系列函数都要使用fork调用,所以我一般是用system函数.

以上就是土嘎嘎小编为大家整理的linux命令执行原理相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章