哈喽,大家好,我是鱼仔,前段时间看到滴滴技术平台发的一篇文章很有意思,分享给大家。这篇文章简单来讲就是有人在生产环境用 v i m 查看了一下日志,然后这个服务器上的加瓦进程就挂了。问题排查过程,大家有兴趣可以看原文,我们来看结论。 在生产环境中使用 vim 命令查看三十七 g 的文件,文件在加载过程中耗尽了内存,触发了 linux omq 了的机制,然后杀掉了加白进程。 追究原因是 v i m 在读取文件的时候会读完整个文件,一旦文件过大,就会触发 linux 内存溢出的机制,这个时候 linux 就会杀掉一些进程,然后加了进程就没了。那么应该如何正确的在生产环境看日志呢? v i m 生产环境的文件这个 操作不仅是滴滴这家公司里有,但这里就会导致很多潜在的问题。第一个问题是在不知道文件大小的情况下使用了 vim, 然后就出现了进程被 q 的情况。另一个问题是安全问题,用 vim 看配置文件的时候,可能会因为误操作使得一些输入被保存起来了, 配置文件的变更可能就会导致程序异常。在商场环境用下面这三个命令才是最优的方案。 如果是想要看程序启动日志或者调用一个接口后的响应结果,用 tail 命令即可。 tail 命令会将文件尾部的内容输出到控制台,结合一些参数能实现更好用的功能。 比如通过 tail 杠一百 f 某个文件,就可以实时获取最新的一百行日志信息。如果想要查询某个字符串是否出现在文件中, grip 是个很好的选择。 grip 的功能十分强大,可以通过特定的模式匹配,比如正则表达式查找文件中的内容。我演示一个简单的,比如,想要看 started 有没有出现在日志文件中,就可以直接用 grip 命令查看。 如果你很想在文件里对内容进行搜索,可以使用类似命令。类似命令可以用来查看大文件,并且使用起来也比较简单。找个文档一看就学会了 bim 或者 bi, 还是不要在生产环境上使用了。以上就是本期视频的全部内容了,我是鱼仔,我们下期再见。
粉丝7.1万获赞79.7万

程序员为什么要用另那个 minix 稳定啊?打个比方吧, windows 电脑二十天不关机会怎么样?可能第三天的时候就蓝屏死机了,或者说是非常的卡顿,哎,我们重启一下就好了嘛,对吧?这个就是咱们 windows 系统的一个弊端,但 minix 系统它相对来说比较稳定,比如你玩一个手机游戏,他不可能服务器频繁的重启 他,哪怕重启花了五秒、十秒,其实对于他的这个成本损失也是非常大的。所以说一般情况下我们是在另一个系统下边长时间运行,非常的稳定,也不会像咱们温度系统功能这么多,差价这么多,乱七八糟东西这么多。 他是一个完全开源的,我们任何的公司想要去对这个系统进行这种深度的修改啊、迭代啊,或者说是优化啊,都是非常简单的,然后温度系统的微软公司的吧,所以说我们也没有办法深度的去优化他。

呃,最近一直在查查病毒啊,我们的云浮气呢,被挖矿病毒入侵了。呃,一开始呢,我们是发现了 app 的访问啊,还有网页的访问呢,要比以往要慢。呃,重启服务进程呢,也没有用数据库也都是正常的。 然后就是差不多判断了,应该是应用服务器遭遇病毒入侵了,我们看了每一台的服务器的状况呢,果然有一台应用服务器的 cpu 飙到了百分之七十, 已经占用很高了。呃,外宽病毒呢,目前是很流行的一个病毒,主要呢就是在入侵后呢, 会把你的夫妻当成矿机去挖矿,说直白点呢,就是利用你的机器不停的在帮别人干活啊。呃,中病毒的最明显的特点呢,就是 cpu 飙升啊,大家其实可以想象一下,我们的 cpu 如果被占满了之后所带来的后果会是怎样的,你想外面的正常的访问进不来,无法响应。呃,进程运行缓慢,严重的话呢,甚至会断机重启, 这就是所谓的 stup 的。呃,杀病毒的核心呢,就是找到病毒文件,单纯的通过杀进程啊,是解决不了,因为很多病毒呢,都有自启程序,杀了进程 立马呢就会启动另一个新的进程,非常的讨厌,你只有找到了病毒文件,然后彻底删除才可以。你们遇到过类似的病毒吗?欢迎在评论区给我留言,谢谢!

今天给大家分享一个零点四使用命令, ss 杠 nitp, 使用场景是获取正在运行的端口继承号的列表,下一步我们打开插射,在这里呢我们执行一下这个命令, ss 空格杠 antp, 然后他会返回一个列表,那在这个列表中我们可以通过这一列来看目前的端口。从最后这一列我们可以看到用户的信息以及他的 p i d 进程号, 这还有用户的使用者,比如说这是刀口,那就说明这是刀口,从这里我们可以看到其中有三零六二,三零六是满三号的端口,在后面我们可以看到他的使用者是刀口继承了 id 是幺零零幺二幺二。那接下来我们把蓝色号给停掉, 执行完之后我们再用一下这个命令查看一下,从这里我们可以看到三三零六的端口已经不存在了,那接下来我们再启动一下马四号, 启动完之后我们再执行一下,此时我们就可以发现三幺零六已经出来了,那通过使用这个命令,我们可以看到当前所有正在运行的端口,以及他的晋城号以及他的用户信息,今天就讲到这,谢谢大家。

你说一下另一个字下面如何结束一个进程?这个一般都是开发弄的,你身为四十名啊,不能只会点点点走开。 比如我想结束 tonkat 的进程,我们要查看 tonkat 的 pid, 我们用命令呢? ps 杠 ef 管道服 grape tongpet, 如果查看的 pid 是一二三四五,我们就是要用 pir 杠九一二三四五能结束这个进程。

干啥呢?杨小三,你说的是系统号,他连关机重启的选项都没有,那怎么搞?哎呦,都说了,很多服务器的密密是超系统的,都是用密密航来操作的。这些关机重启的秘密你记好了, 第一个,关机秘密,第一个秘密,瞎搭档 h l 可以立刻马上关机。第二个秘密呢, ip 零也可以立马关机。第三个,迷你 powerfo 也可以立马关机。 第四个命令,哈尔特执行的时候呢,需要去输入密码进行二次认证,并且啊,哈尔特命令只会关闭系统,不会断电。如果说想要完全关机断电的话呢,要使用哈尔特杠 p 这个选项。第二个,重启命令,第一个命令,加大杠啊二唠可以立马重启。 第二个命令, reap 词可以进行重启。第三个命令呢,可以使用 iit 六也可以重启。我的系统就不能设置一下定时关机重启吗?当然可以了,下次再放。 h, 二十点零零,可以指定晚上十点自动关机 加大杠 h 加三十,可以指定三十分钟之后自动关机。加大杠二加二十五,可以指定二十五分钟之后自动重启。 加拿大杠二,二十三点一零,别指定今晚晚上十一点自动重启。使用加拿大杠杠秀就可以看到设置的任务了。哦,那你帮我设置一下三五六零自动关闭啊。 哎,等一下等一下,六点下班太准时了,不好包啊,任务取消了,你事可真是多啊,哈哈哈哈,下了蛋糕 c 自己取消。

你的意思里面像查开日志一般会用哪些命令呢?呃,太欧港 f, 我要去查找某一个文件,你会用什么命令呢?我是用那个太欧港 f, 然后加上他的日志文件名查找你那意思服务器上面的某个文件用什么命令呢?那呢?所以你刚刚又又听错了,是吧? 如果说你们在不搭建这个环境的时候,这个端口被占用了,你们会怎么去解决呢?我们先用 manissale, 然后杠 ang, 然后管道不堵热乎吗?然后比如说查看这个三三零六怎么就被占用了? 长江被占用了之后,如果这个进程是我们需要的一个程序,那我们会在另外用用一个钻头。如果说这个目前这个程序没有用的话,我们就用 po 杠九把这个进程一杀掉,然后再释放这个钻头出来。

冲击网络服务好,大家好,那在前面你介绍了好多修改网络参数的一个方法,在修改完毕以后,一般我们需要重启网络服务,在一些网络实验或者网络测试中会经常使用到。 重启网络服务呢,主要包括关开服务,关开端口,在同性界面和中单窗户中都可以使用。那么下面介绍使用中单窗口重启网络服务的方法。首先介绍第一种啊,我们首先打开中单窗口, 第一种呢是使用 system ctrl 来重启网络服务,我们可以使用命令 su 度 system ctrl, 先 stop letter let it work manager 验证一下密码。好,这样就关闭了,该忘了服务。那么打开呢,可以使用 start 重启呢,我们可以使用 restart, 可以看一下右上角的网络图标的状态。好,除了使用 ctom ctrl 来重启服务以外呢,还可以使用 nm 克令来重启网络服务, 我们可以使用 su do nm 可恋 networking off 来关闭服务。右上角的网络图标已经消失了,我们可以使用 on 来打开它。 好,第三个命令,我们可以使用网卡的控制命令来重新获取 ip 地址或者读取,没准见命令就是 su 度 ip link set。 我们的网卡是 es 三三,大家可以自己去查询一下,应该都是 es 三三到我们关闭这个网卡借口, 那么开启呢,就是 up, 可以看一下右上角,我们 up, 在我们的另六个词,或者说我们弯弯途中呢,各种功能都有对应的程序和配置文件进行管理,使用这些管理这些程序和配置文件的程序有很多,所以各种命令方法有很多,非常的灵活,我们呢学习呢,可以从一个管理程序学习, 了解了他的具体使用方法以后呢来学习其他的配置操作,最终根据实际情况选择最方便最简单的操作来使用就可以了。好,本期和内容就介绍到这里,感谢大家观看。

大家好,欢迎来到我们的 linux 教程系列,今天我们将深入了解一下 linux 进程管理,就是无论你是在进行系统维护,还是尝试 优化资源理解,如何监控和管理进程都是非常的重要的。这期视频呢,我会带着大家一起去了解一些最实用的进程管理命令。让我们现在开始, 在 ink 系统中,我们经常使用 ps, top, h top, eq 等命令来管理进场, 而 ps 命令呢,是用来查看当前运行的进程。 top 命令是一个实时监控进程并查看系统资源使用情况 的一个命令。 h top 呢,是一个相对更友好的一个界面,对于 h top 来说,而 q 命令呢,是杀掉进程的命令。现在呢,让我们来实际的演示一下。 我们现在呢,可以使用 ps 命令, ps aux, 可以看到我们现在 minis 夫妻上的所有的进程。如果我们想看一下他的一些实时使用情况呢?这些进程呢, 我们可以使用 top, 这里可以看到我们的他的一个系统资源的实时使用情况。我们现在 加一个测试进程,我们这里使用 a b 压测工具进行测试。好,我们现在再看我们的 top 命令, 可以看到它的 cpu 使用情况就已经飙升了,占用了百分之十二。 那么我们如何把他这个命令杀掉呢?我们这里就可以使用六命令,我们拿到他的 pid, 他的就是他的进程 id。 好,我们杀掉他,我们再次查看,可以看到我们的 ab 进程已经 被杀掉了。以上就是 ins 进程管理的一些基础知识,大家要记住处理进程时要谨慎一些,因为错误的命令可能会导致不必要的服务中断,希望这个视频能给你带来帮助, 如果想学习更多关于 linux 的知识,可以留言告诉我,我们下期视频再见!

内存溢出的定义,简称录内存溢出 out of memory, 是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存,此时程序就运行不了,系统会提示内存溢出, 有时候会自动关闭软件,重启电脑或者软件后,释放掉一部分内存,又可以正常运行该软件。而由系统配置数据流、用户代码等原因而导致的内存溢出错误, 即使用户重新执行任务依然无法避免。接下来我们要解决如何定位内存溢出问题。定位内存溢出的步骤第一步,定位 cpu 最高的服务进程先找到 cpu 占用比较高的进程 top c, 进去后按 shift 加 p 键, 一般异常的进程 cpu 的占用会很高,记录下这进程的可以查看指定进程 cpu 情况。第二步,查看指定进程 cpu 情况 top cpp 命令查看此进程占用 cpu 最高的县城,记录下县城的 ped, 也可以将相关信息保存下来。 top hpp 楼 cpu 原因 cpu text t 到此我们就找到的最占用 cpu 的进程以及相关线程。第三步,分析日志和代码 如果已经知道是哪个程序导致了内存溢出,那么我们就得学会分析日志,一般在 lt memory 的上方我们都会有各种日志的输出来标志,现在这个时间点,我们的程序执行了什么操作,导致了我们的这个内存溢出? 分析到这里就轮到看代码了。第四步,检查的内容方向第一步,查看数据库相关内容,例如查询的数据量是不是超过程序之前的设定,例如数据库连接有没有正常释放?第二步, 集合对象使用后有没有正常释放?第三步,代码中有没有死循环或者地规函数?内存溢出的解决方案, 第一,可以直接加内存。第二,检查错误日志。第三,查看 out of memory 错误前是否有其他异常或错误。第四,对代码进行走查和分析,找出可能发生内存溢出的位置。 第五,使用内存查看工具动态查看内存使用情况。关于内存溢出,你有什么好的解决方案吗?欢迎大家评论区留言。

呃,接下来呢,我为了大家继续介绍一下一些特殊的进程。好,那这边呢,我们使用进程的时候啊,一种是直接在前台运行,一种是直接在后台运行。 好,那这个进程啊,有没有这样的一种情况,我们希望他随着我们的系统的开机啊,直接就进行启动,而不是呢,在我们的终端啊,用户登录起来在手动让他启动。 好,那这类的进程啊,其实在零零四里边呢,叫做守护进程。好,那这边呢,他的这个英文呢,叫做低门啊,也有把它翻译成叫做精灵进程。好呢,这个不管是哪一种进程呢,其实都是指我们的同一种类型。 好,那这个守护进程和一般进程有一些什么样的区别呢?啊,那守护进程其实就实现了,我们不需要终端啊,就可以把这个进程启动起来, 然后另外呢,我们启动的时候,他的一些输出会打印到一些特殊的文件当中啊,而且呢我们这边这个进程所占用的目录啊,啊是跟目录啊,也就避免了我们的这个程序占用某些啊,移动硬盘的这个目录啊,这个移动硬盘无法进行卸载的这个情况。 好,那这边我们再去掌握。这个守护进程之前呢,我们还有一个进程和他非常的像啊,那这个进程呢,也非常容易给大家来去演示他和守护进程一个区别,所以呢,我想先给大家看一下这种进程啊,那这种进程呢是什么呢?叫做使用 no hope 启动的进程。 好,那这个使用 nohope 进程启动起来之后呢,他其实是忽略掉这个叫行 app 啊,挂起的信号。好,那这边呢,当你忽略掉信号的时候,那他其实 和守护进程呢还不一样,那一旦呢,我们把这个终端关掉的时候,你看他的这个情况呢,就有点类似于我们的守护进程了,当然和我们的守护进程了还是有一些区别的。 好,那接下来呢,我给大家来去演示一下关于用 no hop 这个命令来去启动的进程啊,以及我们的守护进程到底是什么样的。 好,那么打开我们的这个终端。好,那在这呢,我们用来演示的程序呢,其实是一个叫做太奥的这个命令是吧?好,那我们知道太奥杠 f, 我可以去啊,一直跟踪这个文件内容的变化,这个程序不会结束,所以呢,我就用这个程序来为大家去演示一下。 啊,那使用太后杠 f, 那我们去查看一个文件吧。啊,那这边呢,我们随便找一个系统的这个文件是吧?叫哇 log, 一下子没 i c j 四。好,那在这呢,我们就开始不断的来去跟踪他的变化。好,那这一边呢,我们可以再打开一个终端。 好,在打开中单之后的话呢,我们可以用 ps 来去过滤一下,看看有没有这个太阳命令。好, ps, 杠 ef 是吧? 好,那在下面啊,我们看到有这个太奥杠 f 这样的一条命令。啊,那这边呢,由于显示的过多啊,我只想显示这个太奥杠 f 这一号怎么办呢?这边我们可以通过一个管道符,然后通过 rap 这样的一个命令。好,我这边过滤掉 啊,这个其他的这个关键字只包括太奥这样的关键字显示出来。好,那这边我们看到啊,当前的进程是二六九七五是吧? 好,他的附近程呢?是二五三零九啊,那这种情况下,我们如果做一个操作,大家可以想一下会有什么后果?比如我把这个终端关掉啊,那这个程序会怎么样? 好,那这边大家其实都想到了,那终端一旦关掉的话,我这个程序是不是自动就结束了?好,那这边我们再去过滤,就发现什么呢?啊?没有,这个太这样的一条了。 好,那这边我们在工作当中可能会有这样的一个情况,就是说我希望运行这个程序的时候,你即使关掉终端,也不要对我的程序造成影响。好,那这种方法怎么办呢?那这边我们就用到了一个叫做 no whoop 啊,这样的一个命令。哦,这个命令主要起到的功能是什么呢?就是说当你发给他发一个叫 hung up 这样的一个命令的时候啊,那他不去回应你。 好,那这样的话呢,就让我们的程序可以什么?即使你的终端关掉。哎,我们这个程序也可以正常运行,是吧?好,那这样我们依然跳个 f 哇, log 下的 messages。 好,那在使用的时候呢,我们经常还会和什么符号配合啊?和这个后台运行符号配合,因为你在运行了之后的话呢,我们还可以在终端继续输入其他的一些指令。 好,那这边呢,我们来总结一下这个 no 互跑,那他的功能呢?就是说我们即使关掉终端,这个程序依然可以运行。 好,那还有什么功能啊?这个 nowhoppo 会忽略掉你的输入,并且把输出内容啊追加到当前这个部落下边有个叫 nowhoppe 的奥特这个文件当中。好,那在这边咱们是不是看到了就叫 nowhoppe 的奥特?好,之前 太后杠 f 往你的这个终端再去打印的这个内容都打印到哪了?打印到这个 nohope 点 out 上。好,那在这呢,我们依然用 ps 杠 ef 来去过滤一下。好,那这边我们依然有个叫什么呢?哎,叫做哇 log 下的 mace, 这一次是吧? 好,那这边程序依然运行。好,那这回呢?我们来去结束这个中断。好,那么 exit。 好, 终端结束了。好,那太有呢,这个命令是否还在执行呢?好,大家看到还在进行运行是吧?啊?太,有个 f 还在。好,那还在的时候,大家会发现有一个什么变化呀?哎,那这边他的附近程发生了变化,是吧? 好,为什么会发生变化呢?因为在里边你结束掉了他的终端。那他的终端呢?是什么呢?是创建他的一个附近城。好,那附近城结束之后,我们当前的进程就叫做什么呢? 叫做孤儿进城。好,那孤儿进城呢?必须要被其他的副进城所收留,被谁收留呢?就是被一号进城所收留。如果在三投四六就是 it, 是吧?如果在三投四七呢?就是我们的 cc。 md。 啊,那这一边呢,就可以保证我们的进程可以正常进行一些工作,是吧?啊,那这边包括进程那些控制的指令也依然可以发给我们的这个 tel 的这样的一条命令。 好,那这边我们说了,那我们如果想要去创建这样一种形式啊,比如说我们都互泼去运行这个程序,我们其实是想要他做什么呢?啊?你关掉终端,他依然可以运行。好,那这边有没有其他方式让他你不打开终端也可以运行呢? 好,那这边就是一道什么呢?像我们的 windows 的这个服务是吧?好,那在使用 windows 当中我们希望什么呢?开机你就要去加载我们的各种的网络 服务,是吧?哎,你要加载我们的共享服务,加载我们的验证服务。好,这些服务要在什么之前加载?哎,在用户登录之前是吧?好,那雷尼克斯是不是也是一样的啊?也是一样的,那就说你在用户登录终端之前,你就要启动这样的一系列服务。 好,这一系列服务他有一个什么样的要求呢?呃,第一个要求就是他不需要终端,然后那里面不需要终端。他的做法其实就类似于像我们刚才的附近城创建了一个紫禁城,然后附近城自己结束店,然后有一号进行进行收留这样的一个过程。 好,那这边还有什么样一个操作啊?那我们知道这个 nohoopa 我们把输出都放到了哪儿啊?哎,叫 nowhope 得 out 这个文件是吧?好,那这边我们的这个低门这个进程啊,那它的这个输出放到哪儿呢?哎,其实就是我们后边要加, 他会放到一个日制文件当中。好,在这呢,所以你就知道啊,系统当中其实有很多很多的日制,是吧?这些日制包括系统自身的有 有服务的日志。好,为什么会打印日志呢?因为他在运行的时候是没有终端的,所以我们必须要有一个文件来去记录你的输出信息,那就是日志文件是吧?啊,那日志文件就是这么来的。 好,那这边我们说了,那你的复兴程结束由一号进程收留,这是低门进程做的事情。好,那这边呢,我们在输出的时候会输出到我们的这个文件上啊, 那这边呢,也是我们的这个低门继承的一个特点啊,还有什么特点呢?那这边如果我们在当前的这个位置直径下的太奥,那这边我们在执行的时候,他会占用我们当前的目录啊,这个就为了像我们的 windows 是吧?哎,比如说你打开 u 盘里的某一个文件夹的 时候,你要去卸载这个 u 盘的时候,会告诉你什么?哎,这个 u 盘被占用是吧?好,所以低门继承其实在里面还做了一件事情,就是把它所使用的目录切换为根,是吧? 好,那根目录什么时候能卸载啊?你只有在你进行关机和重启的时候,你的根才有可能进行卸载掉。好,这样的话呢,我们就杜绝掉启动低门进程,导致我们的 u 盘或者其他的硬盘无法正常进行卸载这样的一个事情。 好,那这边呢,我们可以再深入的去观察一下,这个太奥进城啊,和我们低门进城的一个区别啊,那这个呢,作为我们的一个知识的一个扩展。 好,那在这呢,我们看到他的进程号呢,叫二七四五幺,是吧?好,那这边之前我们提到的啊,他的一个输出的文件啊,和我们的这个低门进程输出的文 键有什么区别?咱们可以在这来去对比一下。好,这里边呢,在 linix 里面有一个特殊的目录,这个目录叫做 p r o c。 好,这个目录下所有的内容在硬盘当中默认是不存在的,他其实是什么呢?是我们操作系统去读取你的内存那些信息,然后把内存信息呢?啊,在里面以文件方式给你进行呈现啊,你可以像操作文件一样操作这些东西,是吧?啊,那大多数的操作都只是一个查看。 好,在 plc 下面呢就会有一个什么样的目录呢?这个目录就是和你的晋城号同名的一个目录。好,那这边我们可以进入到 plc 二七四五幺这个目录当中。 好,进来之后的话呢,我们可以查看一下这里边的文件和目录就是你的进程的一些属性了。好,在,这的话呢,我们先要关注第一个 l s 杠 l 是吧?好, c w d。 好,你当前所在的位置。好,那太奥呢,我们操作的时候是在入他下边,所以当前的位置是刚入他啊,那这边也就说这个目录如果是挂载的,你可能不能进行卸载,因为有其他的进程在使用这个目录是吧? 好,那这边我们的这个所谓的输出会放到哪呢?啊?在你的这个进程号同名的目录下边会有一个叫 fd 这样的文件夹。 好,这个文件夹当中啊,你看他就有什么,有一个零一二三是吧?好,那这边的话呢,这个零是表示我们的一个标准输入。 好呢,刚才我们用 no 互泼的虚拟行头,他说,哎,这里边你的标准输入是要被关掉的,是吧?好,那这边我们的这个一和二这个文件描述表示什么呢?哎,你的标准输出。好,你的 标准输出会输出到哪啊?叫做 rut 下的 nohuper 点 out 上。好,这里边呢,就是什么呢?你的 nohup 进程,他的副进程一旦被关掉的时候,他所做的事情是吧?好,那这边我们可以对比一个低免进程来给大家看一下。 好,那低门进程的话呢,我这边找一个县城的例子,这个进程呢叫做 s s h d 啊,是我们的李宁思远程控制的这样的一个服务。 好,这个服务在启动的时候一定是没有终端啊,那这边他就能够启动起来的是吧?啊,那这边我们看看这个 sshd 这个低门服务它是一个什么样的特点。 好,那这边我们看到这个服务,他的附近城就是一号进城啊,因为这个附近城已经被他给结束掉了,所以由一号进城来去收留。好,那 这边接下来我们进入到 p r o c 下面,看一下四五二五这样的一个目录。啊,那 l s 杠 l 好, cwd, 也就是说他运行的当前目录是哪?是根目录是吧?好,那还有刚才我们提到了 啊,他的文件描述符是吧?啊,那零是什么呢?就是把输入关掉了是吧?好,那这边我们的这个一和二是指向这个骚 k 特的。啊,骚 k 特呢,我们把它翻译过来叫做套接字,他也是我们进程通信的一种方式。 好,那这个骚可以的呢,是用来做什么呢?是让我们的程序把他的标准的输出和他的错误输出输出给我们的系统日制程序,然后系统日制程序呢,再把它打印在默认的 vr log 这样的一个目录的 ssd 这个服务的下边。啊,那这个呢,就是我们使用的一个低门啊,这个进程的一个方式。 好,那么以上呢,就是关于我们的 nohoopa 它的用途啊,以及守护进程的一个用途。那在这呢,我简单给大家去区分了一下 nowoopa 和守护进程它的方式的一个区别啊,那最终呢,我们的目的都是希望在脱离终端啊, 可以让你的程序继续运行,只是他们的时间方式呢,略有不同,希望大家能够进行掌握。


在 linux 系统上,哪怕只有一盒 cpu, 依然可以同时运行数十个任务,怎么做到的?其实还是硬件超卖,不过超卖的对象变成了 linux 进程,也就是 taskstruck。 我们从两个方面来说,一、 cpu, 即使 linux 系统上只有一个 cpu, 它也可以同时运行多个任务。怎么做?通过分式调度, 举个例子,这个 cpu 先让任务一运行零点五秒,再让任务二运行零点五秒。 看,一秒之内,我们人类根本感受不到切换的痕迹,但是我们看到的结果就是两个任务都同时得到了运行,所以在一个 cpu 上并发的运行数十个甚至上百个任务就成为了可能。二、内存,即 使拎的系统里只有两 g 内存,但是以三十二位系统为例,每个任务都被分配了三 g 的内存大小。但是这个内存是虚拟的,只是承诺给你的, 只有你在真正使用的时候才给分配真实的物理内存。每个进程实际运行的时候可能只会用到一百张内存,这样耳机的物理内存就可以同时满足二十个进程的运行需要了。 你看吧,在这个过程中, linux 操作系统通过 cpu 分式高度和内存虚拟映射的方式实现了 cpu 和内存的超卖,从而完美地用有限的硬件资源支撑了上层的复杂的业务需求。

做上层开发的程序员,比如说做扎瓦开发的,做勾浪开发的,甚至呢是做 c 语言开发的,都会碰到两个 linus 下面的基本概念,进程和现成,你能清晰地说出他们两者的区别吗?啊, 这两个概念作为面试官的最爱,确实呢,也卡住了很多人。那这期视频呢,咱们就从三个方面来剖析剖析进程和现成。 在视频的末尾有结论,结论有点扎心。首先,我们来看一下晋城跟县城的区别。在 linus 内核层面哈,它是不区分是晋城还是县城的,因为啊,在 linus 内核元代码里边, 晋城和县城统一呢,都是用这个 task struct 来表述。这也就意味着,在 linus 内核设计者看来,他们两个呢,是一类东西,那即使是一类东西,还是有一些区别的,那这个区别是什么呢? 啊,在 linus 下面,晋城呢,是资源管理的最小单位,而县城呢,是 cpu 调度的最小单位。那晋城的资源管理包含到哪些资源呢?主要是 cpu 内存管理,文件和文件系统。 而县城呢,说白了,就是真正地使用 cpu 的物件,也就是真正干活的实体。第二个,我们来看一下他们的这个实线, 在 linus 的上层哈,创建进程呢,用 fork, 最终的话呢,它会通过系统调用的这个 fork 进入到内核。而现成呢,它需要依赖这个 p spread cool, 它的底层实现呢,也是基于系统调用,不过呢,调用的不是 fork, 而是 clone。 而系统调用的 fork 和 clone 在内核里边呢,它都是基于这个 do fork 来实现的。只是两者呢,它闯入的 clone flag 不一样,这里边的 clone flag 它是重点,它让一家人不说两家话。这个怎么说呢? 可龙 v m, 它让县城或者紫禁城,跟附近城呢,共享内存空间。可龙 fs, 让县城或者紫禁城呢,跟附近城呢?共享文件系统 clone files 让县城或者紫禁城呢?和附近城呢,共享文件。这里边的共享在底层是怎么实现的呢? 难道呢?要把相关的数据结构全部拷贝一份?大可不必,因为我们知道 c 元里边有指针,万能的指针让一切轻松达成。那最后呢,让我们做一个总结吧, 晋城和县城呢?晋城呢?像鸡肋县城呢?像派生类县城呢?青于狼而胜于狼,也可能大不如狼。换一个更通俗的例子,晋城呢,像你的主管,有业务,有人手,有地盘,请向 于管理。而县城呢,他向下面的员工是真正干活的尸体。那看到这里,你是不是觉得自己就是那个县城呢?

大家好,欢迎大家继续来到你的学习之路基础篇。我们前面讲过这个进程,他是动态的,他在不同的时刻呢,有不同的状态,我们使用这个 ps 命令可以输出这个进程在某一个时刻的这个状态的快照, 那么随着这个时间的推移,状态他可能会改变,哎,最典型的就是说进程,在不同的时间点上,他对 cpu 和内存的消耗可能是不一样的,有的进程可能会新建,有的进程还会退出,我们在温度下有一个任务管理器, 那么你这个下面呢,我们也有一个类似的工具,就是我们今天要讲的踏板命令。踏板命令除了这个实时输出动态的这个进程信息啊,还有包括这个,嗯,硬件的负载信息,他还可以 按照这个使用的情况排序,最典型的就比如按照 cpu 或者内存的资源,他的使用率由高到低进行排序,我们一眼呢就可以看出哪个进程消耗了最多的硬件资源。那么这里说一下。首先踏板他是一个交互式的命令, 呃,交互式的命令呢,就是意味着这个命令直接执行之后,他不会马上退出,而是一直显示在这个界面,直到我们用 ctrl 加 c 或者用 q 指令退出。 那么套房命令,呃,正常情况下我们什么都不接,可以直接说出这样一个界面,这个界面分两个部分, 上面一个部分是一个系统的概况,那么下面一个部分呢,是这个进程的状态, 那么这个啊,跟我们刚才说的就是他默认情况下会实时刷新,呃,默认是没两秒钟刷新一次这个状态,好了,我们这里看一下这个输出的一个详细信息,这个是很有必要解析一下的,这里拿一个 真实的机器来给大家看一下啊。我们这里第一行啊,第一个板块的第一行, 首先它是显示的这个当前系统的一个时间,还有就是从上一次启动到现在运行了多少时间, 当前登录的用户数,然后是这个平均负载,这个平均负载是计算的这个系统从在过去的一分钟,然后五分钟,然后十五分钟 内的平均负载,他比较客观的反馈最近一段时间这个系统的负载情况。 第二行显示了这个进程的任务汇总数,然后呃多少在运行态,然后多少是在呃睡眠状态。第三行是一个 cpu 的汇总 啊,他有很多分项,其实我们一般情况下只需要了解几个比较大的,比如说第一个他这个是 uz 占用的这个 cpu, 然后第二个是 system 系统占用的 cpu, 第三个是 nice, 他是优先级比较低的进程占用的 cpu。 然后第四个 idol, 他其实是一个空闲的 cpu 状态,然后第五个位特, 第六个是啊硬中断,第六个是硬中断哈的,我要 interruption 和 software interruption, 然后最后一个是系统等待时间,那么相对来说后面几个都比较次要。然后第四行它是一个内存使用的汇总, 他还是以 k b 为单位,那么我们这里可以看到当前的总内存量,空闲的内存量, 柚子的以使用的内存量,以及这个 buff 和 kitty。 这里可能要解释一下, 八分就是缓冲区,是我们一般将内存资料写入磁盘的时候,这系统为了提高效率,会把内存中的这个小块的写入攒起来,等到一定的条件之后一次性写入,那么这样写的效率会更高。而开启呢? 呃,则是反方向的,就是我们从硬盘里面读取的数据会在内存里保留一段时间,如果是高频读取的话,那么第二次开始呢?他从内存的缓存里面直接去读取,而不用再到这个硬盘里面去读, 因为内存的速度是远远高于硬盘的,这样也是为了提高效率,那么系统在正常重启或者关机的时候,是会把这块先行处理掉, 但是如果是在异常关机的情况下,那么可能会发生这个缓冲器数据没来得及写入示范的情况,这样就导致一个数据的丢失。 那么最后一个这个第五行,他是一个十万本交换分区,这个交换空间,我们现在因为这个物理内存配置都 比较高,所以有很多的机器或者有很多的场景下都是建议关闭的,所以我这里也没有开起来啊。但如果真是在使用这个十万亩的情况下,我们需要关注这个 us 的这个数字,如果是 很高的情况下,或者说这个数值变化很快的情况下,我们可能要考虑这个是不是。呃,内存已经使用的差不多了。双普这个最后一行,他其实是 memory 上面这一行的一个补充,那么他是 available memory。 呃,我们 available memory 实际上可能要比 free memory 诶数字要大一点,这个主要是因为 free memory 是当前完全没有占用的一个完全空闲的一个内存。呃, available memory 是系统可能呃除了这个 free memory 之外还可以回收的 一些内存空间。然后这第二块我们来看看这个啊,美音列,那么前面的这个 pid 和优者分别是晋城号和用户名,这个我们之前在 ps 命令里面已经接触过了, 然后这里有个 pr 和和 ni, 他们都是用来表示这个呃进程的优先级的,我们当系统资源出现这个争抢的时候呢,系统会按照这个进程的优先级来分配资源。 pr 是我们说的这个叫动态优先级,它的曲子范围比较大,是零到一百三十九, 那么这个恩爱是我们的 nice 值,我们还可以把它叫做静态优选级,它是可以手动通过 nice 命令来调整的,我们这个取值范围是 负二十到十九,一般情况下为零。那么这里的 pr 优先级和这个 nice 这两个呢,他们的数值都是越小代表优先级越高,比较容易记混或者方便记忆呢, 我们可以这样来说,比如,比如说一个人他的 nice 值越低,就是不 nice 不好,那么不好的人呢,其实一般是喜欢跟别人增强资源的 哎,所以就可以表示成为 nice 值越低就越容易抢到资源,那么也就是说优先级越高, 这个 rt 呢?这个进程呢,它代表这个属于比较高的优先级,我们可以把它理解为他会忽略这边的 nice 值,而直接就是比较高的一个优先级。那么这边有 vrtis 和 h s h r 三块,那么都是代表这个内存使用情况,那么分别是啊, virtual 虚拟内存 和 resident 常住内存以下的共享内存他们的简称,那么这个 s 它代表当前的一个状态, 哎,也就是我们前面 ps 输出的有有睡眠状态以及有运行状态,然后这里的 cpu 和内存的使用率, 那么这两个也是我们在 ps 命令里面比较重要的两个指标,哎,后边的也是一样,那么 time 还是占用 cpu 的时间,那么 comend 是他的这个执行命令。好了,说完了这些呢,我们来看看,既然他是一个交货式的 这个界面,那么他还能够接受一些指令啊,这边指令呢,其实有很多啊,我们列出的这个比较常用的几个, 首先两个大写的,一个是 m, 一个一个是 p, 哎, m 表示 memory 的首字母,这个 p 表示 processor 的首字母,哎,这个顾名思义呢,就分别是按照这个内存的使用率 大小进行排序,然后按照这个 processor 啊 cpu 的占用率大小来排序。什么情况下,我们看到他确实是以这个 cpu 呃大小从高到低来排序的,那我们输入一个大写的 m, 那我们看到瞬间呢,这个内存使用率高的就站到前面了,是我的麦塞口, 那么大写的 p 啊, cpu 站在前面的排过来了。 那么第三个命令呢,是他可以用一个小写的 b 用在高量显示运行中的进程,我们也顺便看一下这个 z, 他可以改变这个显示的颜色,那么这个大家了解一下,可能在寻找这个进程的时候比较有用。 ok, 我们看到凡是运行态的,而这个状态的都会被高亮显示, 然后是 g 来看到他以一种啊红色的字体来进行显示, 然后自己还原,然后这个情况下我们要退出,我们就小写的 q, 那么就退出了 啊,我们还有一些常用的选项,这是在执行 top 命令的时候,哎,就跟其他的命令一样,一起组合使用的 top 杠 c 是显示近程的绝对路径,那我们这里的 coman 的,其实我们只知道他的名字, 哎,我们有时候可能想看看他具体的路径是哪里的,那我们肯定要 top 杠 c, ok, 那么这个时候他会显示一个啊,比较长的一个路径, 还有就是默认的这个刷新频率是两秒一次啊,我们用 top 杠 d 可以变更这个刷新率,后面加上这个我们需要刷新的这个秒数,那比如正常情况下,我们的这个 windows 的资源管理器,他的这个刷新频率其实是一秒一次,我们也可以模拟一下 top 杠 d, 那么这个时候他就会变成一秒刷一次。 那么最后一个比较常用的选项呢,就是 pop 杠 u, 然后后边接上一个用户的名称,可以显示这个指定的用户的进程,那么其他的不相干的用户就不显示了。 比如我这里除了 rut 之外,我还比较关心的就是我运行外保服务器的这个用户, 也就是 www, 那我们可以看到我的外部服务器三 w 这个用户有运行的有 httbd 和这个 php 的这个建成按 q 推出。好了,我们关于这个套方面的基本功能的介绍呢,呃,就到这里, 哎,我们说这个,其实熟悉这个 top 命令的各项输出信息,对系统用为工作来说呢,相对是比较重要的, 那么对他进行练习和整理哎,并输出成为笔记,可以去加深一个理解和记忆。嗯, 特别是我们这边讲到了这个每一个细分的输出的这个信息代表什么意思, 我觉得这些呢和这个 top 面的常用啊,交互命令和他的常用选项来比是更重要的。 所以希望大家在视频之后呢也可以自己啊整理一下啊。今天的内容就到这里,谢谢大家观看。

linux 系统负载高通常是因为系统运行的进程数过多,导致系统资源像 cpu 呀硬盘还有内存不足,然后导致系统响应特别慢或者没有响应。以下是一些可能导致零零系统负载高的原因以及降低系统负载的方法。 oh boy。