渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(5)
前情回顾:昨天简单地介绍了一下如何使用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)的更多相关文章
- 渣渣小本求职复习之路每天一博客系列——数据库基础(MySQL)(5)
前情回顾:昨天学习了MySQL中索引的设计与使用,还了解了一些常见的SQL注入攻击的手段以及防范方法,一般来说,在面试的时候如果不是要求比较高,基本就够用了. 今天碰见一个拿了TP-LINK的offe ...
- 渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(5)
前情回顾:一篇短短的博客明显不能满足TCP和UDP这两个饥渴的汉子,而且还被应用协议占了一小半的篇幅.在昨天结束之后,相信大家都基本对TCP/IP协议栈的轮廓有一个大概的印象了,能够对整体有所把握. ...
- 渣渣小本求职复习之路每天一博客系列——Java基础(9)
———————————————————————今天不闲聊————————————————————————————— 第十一章:线程 第四节:synchronized与同步 首先,我们来看一段代码: p ...
- 用RecyclerView做一个小清新的Gallery效果 - Ryan Lee的博客
一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...
- 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 百篇博客分析OpenHarmony源码 | v54.01
百篇博客系列篇.本篇为: v54.xx 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 51.c.h.o 下图是一个可执行文件编译,链接的过程. 本篇将通过一个完整的小工程来阐述E ...
- 重回程序员之路。重写博客。我的ecshop小京东二开问题汇总与解决方案。
问题1:混合支付(余额支付+在线支付)不跟更新订单状态问题. 解决方案:http://bbs.ecshop.com/viewthread.php?tid=156761&highlight= i ...
- 2019基于Hexo快速搭建个人博客,打造一个炫酷博客(1)-奥怪的小栈
本文转载于:奥怪的小栈 这篇文章告诉你如何在2019快速上手搭建一个像我一样的博客:基于HEXO+Github搭建.并完成SEO优化,打造一个炫酷博客. 本站基于HEXO+Github搭建.所以你需要 ...
- 博客与微信小程序的同步
在此之前,先说说自己最近的打算,才购买了阿里云的服务器,想做一个网站和图床网盘之类的方便自己使用. 考虑到小程序,又打算将自己的博客内容放到小程序中.从零开发实属困难,应该还要一段时间才能完成. 目前 ...
- 使用小书匠及markdown here编辑博客和微信公众号
1. 使用小书匠连接Evernote并发布笔记到博客园 1.1 小书匠初探 我平时的信息收集的主要方法是采用Pocket+Evernote. 简单来说: 如果访问到非常有用,而且是必须要立刻记录的内容 ...
随机推荐
- jQuery操作Table tr td常用的方法
虽然现在DIV+CSS进行页的布局大行其道,但是很多地方使用table还是有很多优势,用table展示数据是比较方便的,下面汇总了jQuery操作Table tr td常用的方法,熟记这些操作技巧,下 ...
- Ubuntu下更改网卡名称
这个方法用于解决Ubuntu下更换网卡后,新网卡变更为eth1,并且源网卡的名称eth0,无法给新网卡用的情况.也可以用于为网卡更名.网 卡MAC地址改变之后,在Linux中找到网卡,新的网卡会被识别 ...
- 02-Swift初体验
Playground是什么? 从Xcode6开始出现(Swift开始出现) 翻译为:操场/游乐场 对于学习Swift基本语法非常方便 所见即所得(快速查看结果) 语法特性发生改变时,可以快速查看. S ...
- 《第一本docker书》- 第一章笔记
环境: Ubuntu 14.04.2 LTS (GNU/Linux 3.16.0-30-generic i686) 第一章: 1 Docker客户端和服务器 2 Docker镜像 添加一个文件,执行一 ...
- prism4 StockTrader RI 项目分析一些体会
StockTrader RI 代码分析也有一段时间了 刚从codeplex获取到源代码的时候,看得一头雾水,不知所云(因为之前没做过wpf的项目,看文档也静不下那心来看) 后来就想了个笨办法,模拟项目 ...
- EM最大期望化算法
最大期望算法(Expectation-maximization algorithm,又译期望最大化算法)在统计中被用于寻找,依赖于不可观察的隐性变量的概率模型中,参数的最大似然估计. 在统计计算中,最 ...
- 【Mail】Tomcat提供JNDI方式支持JavaMail(三)
流程介绍 Tomcat提供了JavaMail的支持,是通过JNDI的方式实现的,具体流程是: Tomcat启动的时候,自身产生一个Session对象,放在JNDI容器中给其他项目调用,其他项目只要通过 ...
- oracle数据库下的关系(库,实例,用户,表)
一.数据库数据库顾名思义是数据的集合,而Oracle则是管理这些数据集合的软件系统,它是一个对象关系型的数据库管理系统. 二.表空间表空间是Oracle对物理数据库上相关数据的逻辑映射.一个数 ...
- Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
在eclipse里面配置tomcat时候遇到的问题: Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web mo ...
- springboot使用之一:连接生产数据库,添加连接池
项目中,难免遇到连接数据库的情形,目前来说springboot连接mybatis有两种,我这边使用的是mybatis官方提供XML方式的整合. 后面,对项目进行完善,引入了连接池,PageHelper ...