前情回顾:昨天简单地介绍了一下如何使用vi编辑器,例如命令模式和插入模式的切换,以及一些简单命令的讲解。

—————————————————————————直接就开始吧—————————————————————————

  第六章:作业控制和进程管理

  这一个章节呢,我们会介绍启动和停止进程、如何向正在运行的程序发送信号、查看正在运行的进程上的信息、shell作业控制等内容。

  第一节:进程

  一句话概括:进程(process)是一个正在运行的程序的实例。

  操作系统在启动时创建init进程,它是所有进程的父进程,进程ID是1.在启动其他程序时,即启动子进程,系统会为每个进程分配一个惟一的进程标识符,叫做PID。

  我们可以先通过echo命令看看shell的PID是多少——

  通常情况下,进程ID是按从小到大的顺序依次分配的。当进程停止时,可以重复使用以前用过的PID。通常,PID的取值范围从1到32768.

  第二节:查看进程

  通过运行ps(process status)命令可以方便地查看用户所拥有的进程。不带任何参数的ps命令,将会显示用户所拥有的进程,而这些进程是与一个终端相关联的。使用这条命令,可以查看是哪个进程耗尽了内存或过多地占用了CPU。

  

  在前面示例中,输出并没有显示有关进程状态的信息。要使ps输出这项额外的信息,可以使用u参数——

  

  根据以上显示的信息,我们可以得知正在运行进程的用户、进程ID、进程占用CPU的百分比、实际内存的百分比、以千字节为单位的虚拟内存的大小、所有的物理内存的大小、所连接的终端、状态、进程开始时间、进程使用CPU的总时间和命令名。

  第三节:停止进程

  有几种不同的方法可以结束进程。通常情况下,从基于控制台的命令界面发送CTRL+C按键(默认的中断字符)将退出命令。但是有时候进程会捕获或忽略中断字符。

  用于结束进程的标准工具是kill。从技术角度来讲,kill命令并没有杀死一个命令,只是向进程发送一个特殊的信号(信号用于进程间的简单通信)。

  要使用kill命令,只需要将进程ID作为命令行参数。例如要kill掉shell进程,就可以输入命令:

  kill 1952

  进程树将子进程和它的父进程放在一起,显示了不同进程之间的衍生关系。需要注意的是,每个子进程只存在一个父进程,但是每个父进程可以用多个子进程。例如下图:

  由于屏幕尺寸的缘故,使用pstree命令,只能截取一部分。不过我们还是能清楚地看出,init是所有进程的父进程。

  第四节:shell的威力

  本节内容参考《程序员修炼之道》。

  其实基本所有的计算机学生在上大学之前都没有接触过Unix,都是在用Windows系统。对于在GUI界面和集成开发环境(IDE)上成长起来的程序员,似乎觉得,学习shell没有任何的必要,事实上,真的是这样的么?

  对于操纵文本文件的程序员,工作台就是命令shell。在shell提示下,我们可以调用我们的全套工具,并使用管道、以这些工具原来的开发者从未想过的方式把它们组合在一起。在shell下,我们可以启动应用、调试器、浏览器、编辑器以及各种实用程序。我们可以搜索文件、查询系统状态、过滤输出。通过对shell进行编程,我们可以构建复杂的宏命令,用来完成经常需要将进行的各种活动。

  如果我们只是实用GUI完成所有的工作,或许会错过了环境的某些能力。我们将没有办法使得那些常见的任务自动化,或是利用各种可用工具的全部力量。GUI的好处就是所见即所得,但缺点则是所见即全部所得,因为GUI环境通常受限于它们的设计者想要提供的能力。

  我们可以举个例子,说明一下shell的威力——

找出修改日期比你的Makefile的修改日期更近的全部.c文件。

Shell  finde .-name'*.c'-newer Makefile -print

GUI  打开资源管理器,转到正确的目录,点击Makefile,记下修改时间。然后调出“工具/查找”,在指定文件处输入*.c。选择“日期”选项卡,在第一 个日期字段中输入我们记下的Makefile的日期。然后点击“确定”。

  去熟悉shell,会发现我们的效率会提高得很快。如果花足够多的时间去研究shell,会发现,我们根本离不开它。

——————————————————————倒数第三天————————————————————————

  不知不觉,已经要结束了。

1.给自己承诺的三十天,就要在本周日结束了。时间过得真快!

2.这一系列的博客,主要是记录我复习的过程,其实分享价值并不高。在下一个系列,我会好好精心准备一些内容。

3.谢谢每个鼓励我的朋友,没有你们,我坚持不到现在。

渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(5)的更多相关文章

  1. 渣渣小本求职复习之路每天一博客系列——数据库基础(MySQL)(5)

    前情回顾:昨天学习了MySQL中索引的设计与使用,还了解了一些常见的SQL注入攻击的手段以及防范方法,一般来说,在面试的时候如果不是要求比较高,基本就够用了. 今天碰见一个拿了TP-LINK的offe ...

  2. 渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(5)

    前情回顾:一篇短短的博客明显不能满足TCP和UDP这两个饥渴的汉子,而且还被应用协议占了一小半的篇幅.在昨天结束之后,相信大家都基本对TCP/IP协议栈的轮廓有一个大概的印象了,能够对整体有所把握. ...

  3. 渣渣小本求职复习之路每天一博客系列——Java基础(9)

    ———————————————————————今天不闲聊————————————————————————————— 第十一章:线程 第四节:synchronized与同步 首先,我们来看一段代码: p ...

  4. 用RecyclerView做一个小清新的Gallery效果 - Ryan Lee的博客

    一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...

  5. 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 百篇博客分析OpenHarmony源码 | v54.01

    百篇博客系列篇.本篇为: v54.xx 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 51.c.h.o 下图是一个可执行文件编译,链接的过程. 本篇将通过一个完整的小工程来阐述E ...

  6. 重回程序员之路。重写博客。我的ecshop小京东二开问题汇总与解决方案。

    问题1:混合支付(余额支付+在线支付)不跟更新订单状态问题. 解决方案:http://bbs.ecshop.com/viewthread.php?tid=156761&highlight= i ...

  7. 2019基于Hexo快速搭建个人博客,打造一个炫酷博客(1)-奥怪的小栈

    本文转载于:奥怪的小栈 这篇文章告诉你如何在2019快速上手搭建一个像我一样的博客:基于HEXO+Github搭建.并完成SEO优化,打造一个炫酷博客. 本站基于HEXO+Github搭建.所以你需要 ...

  8. 博客与微信小程序的同步

    在此之前,先说说自己最近的打算,才购买了阿里云的服务器,想做一个网站和图床网盘之类的方便自己使用. 考虑到小程序,又打算将自己的博客内容放到小程序中.从零开发实属困难,应该还要一段时间才能完成. 目前 ...

  9. 使用小书匠及markdown here编辑博客和微信公众号

    1. 使用小书匠连接Evernote并发布笔记到博客园 1.1 小书匠初探 我平时的信息收集的主要方法是采用Pocket+Evernote. 简单来说: 如果访问到非常有用,而且是必须要立刻记录的内容 ...

随机推荐

  1. Loadrunner监控Linux的17个指标

    这17个指标根据需要设置吧,指标设置的越多,对服务器真实值影响越大,所以要秉承按需而设的原则.   1.Average load:Average number of processes simulta ...

  2. Hibernate中的HQL查询与缓存机制

    HQL:完全面向对象查询 SQL的执行顺序: 1.From 2.Where 过滤基础数据 where与having的区别:1.顺序不同 2.where过滤基础数据 3. 过滤聚合函数 3.Group ...

  3. 《CODE》读后笔记——第14~20章

    14.反馈与触发器 振荡器不需要人的干涉即可自主且不断地实现断开和闭合.所有计算机都靠某种振荡器来使其他部件同步工作. 当两个开关都断开时,电路有两个稳定状态,这样的一个电路称为触发器.触发器具有记忆 ...

  4. win10 EFI装ubuntu14.04双系统 及初始配置

    这次第二次装ubuntu系统了,第一次是在win7下安装的,到了win10,由于用了efi,跟win7的安装方法不太相同,相同点有: 1.仍然可以用u盘启动,我用的是UltroISO这个软件. 2.装 ...

  5. nio加强服务端并发

    究了一下Android推送,方式很多,比如用框架或者用第三方服务,在此并不讨论个中优劣.抱着学习的态度,本人不太喜欢用一些现成的东西,所以自己动手实现了一套简单的推送机制.使用TCP长连接,完成服务器 ...

  6. 上传App Store成功后,无法构建版本解决方法

    最近iOS10出来了,Xcode也跟着升级到了8,想着App做个更新,于是修改好了代码打算上传新包,无奈总是发现构建不了新版本.这种情况是因为苹果更重视用户的隐私,知道原因就能想到对策了,就是在pli ...

  7. Freemarker常用指令使用范例

    我的開發環境 框架:           springmvc+freemarker 開發工具:    springsource-tool-suite-2.9.0 JDK版本:    1.6.0_29 ...

  8. GCD in Swfit 3.0

    这里包括了Queue, Group, Barrier, Semaphore等内容.基本上常用的GCD对象和方法在Swift3.0的改变都囊括其中. 代码在这里:https://github.com/f ...

  9. 黑马程序员-循环引用问题和weak

    使用weak reference(弱引用)来避免retain cycle 对一个对象发送retain消息会创建对这个对象的强引用(strong reference).如果两个对象都有一个强引用指向对方 ...

  10. SAS零散知识总结

    1,变量名命名规范:以字母或者下划线开始,可包含字母.下划线.数字,且不超过32个字符: 2,INFILE用于读取外部数据文件,一般于FILENAME(和LIBNAME用户一致,但路径要精确到文件名( ...