1.Shell命令的执行和进程
   Shell 命令可以是内部或者外部命令。
   内部(内置)命令(internal (built-in) command)的代码本身就是shell进程的一部分。LINUX shell中的一些内部命令如.alias、bg、cd 、continue、echo 、exec 、exit 、fg 、jobs 、pwd 、set 、shift 、test 、time 、umask 、unset和wait。
   外部命令是(external command)命令代码以文件的形式出现的称为;文件内容可以是二进制代码或者shell脚本。通常使用的一些外部命令如grep、more 、cat 、mkdir 、rmdir 、ls 、sort 、ftp 、telnet 、lp和ps 。
    shell先后使用fork和exec系统调用来执行一个外部二进制命令。 
2.fork和exec
  系统先用fork复制一个与父进程相同的暂存进程,这个进程与父进程的唯一区别是PID。然后暂存进程以exec方式加载实际要执行的程序。
3.进程有关命令

ps命令用来查看系统中运行的进程的各种属性

top命令:实时监视CPU的活动状态。该命令显示系统中CPU密集型任务的状态并且允许你交互地控制这些进程。 
kill命令:终止指定PID的进程
4.作业管理
前台foreground执行:
当键入命令并敲<Enter>后,
•shell执行命令
•在当前命令执行结束即shell返回前,你不能执行任何命令。
需要运行一个要花费很长时间才能完成的LINUX命令(或者任一这样的程序),当命令执行时,你无法做其它工作。
后台background执行命令
 LINUX可以在执行命令的同时做其他工作
 
❖在命令后面加上一个“与”操作符号(&),使该命令在后台操作。

find / -name foo –print > foo.paths 2> /dev/null &

[1] 23467

   括号中shell返回的数字是该进程的作业号(job number);另外一个数字是进程PID。
   find 命令的作业号是1,其PID为23467。
   作业是一个不运行于前台的进程,并且只能在关联的终端上访问。这样的进程通常在后台执行或者成为被挂起的进程。
 

fg命令可以使后台进程转到前台

使用<Ctrl-Z>挂起一个前台进程。

使用bg命令把被挂起的进程转到后台。
使用jobs命令显示所有挂起的(停止的)和后台进程的作业号,确定哪一个是当前的进程。 
命令suspend 可以挂起当前shell进程 
 
❖终止后台进程可用两种方法中的一种:
     •使用kill命令
     •先使用fg命令把进程转向前台,然后按<Ctrl-C>。
  kill命令的主要目的是向进程发送信号(也称为软中断)。
  进程接收到信号后,可以采取以下三种行为之一:
     •接受内核规定的默认动作
     •忽略该信号
     •截获该信号并且执行用户定义的动作 
kill命令
   kill [-signal_number]proc-list
   kill -l
 
 常用的信号号码: 1  挂断
                         9  强制终止
                         15  终止进程
 
  为了终止一个忽略15号信号或者其它信号的进程,需要使用9号信号,即强制终止信号

进程号0可以指代所有在当前登录期间创建的进程。因此 kill –9 0命令可以终止所有登录时产生的进程(即,当前会话中的所有进程),这样,你自己就不得不退出系统

 
❖Linux内核中的文件机制
     Linux文件共享方法

      ❖通过副本共享:

复制需要共享的文件并分发到组内每个成员

      ❖通过同一用户名登录共享:

共用一个账号登录系统。

      ❖为共享文件设立适当的访问权限:

把所有要共享的文件放到一个成员帐号下,设置组成员具有读写和执行的权限

      ❖为团队成员建立一个用户组

建立一个新用户组只包括项目组的所有成员,每个用户用自己的账号登录,为自己的文                件设立适当的访问权限,使得它们可以被组中的其他成员访问。

       ❖通过文件链接共享, Linux两类链接:

硬链接(hard link)

软(符号)链接(Soft/symbolic link)

❖硬链接和符号链接
硬链接是一个指向文件索引节点的指针

ln命令用来建立硬链接和符号链接。

语法:

ln [options] existing-file new-file

ln [options] existing-file-list directory

常用选项:

-f  强迫建立链接

-n  如果“new-file”已存在,不创建链接。

-s 建立一个符号链接而不是硬链接

-d 建立目录的硬链接

例:

$ ln Chapter3 Chapter3.hard

 
❖硬链接的特点
•不可跨越文件系统
•只有超级用户才可以建立目录硬链接
•不占用空间(极少)
 
❖   系统为共享的用户创建一个link类型的新文件,将这新文件登记在该用户共享目录项中,这个link型文件包含连接文件的路径名。该类文件在用ls命令长列表显示时,文件类型为l。

当用户要访问共享文件且要读link型新文件时,操作系统根据link文件类型性质将文件内容作为路径名去访问真正的共享文件。

 
❖符号链接的特点
• 可跨越文件系统,甚至跨越网络(NFS)
•  如果链接指向的文件从一个目录移动到另一个目录,就无法通过符号链接访问它
•  占有少量空间,存inode的信息

Linux内核之进程和文件共享的更多相关文章

  1. 24小时学通Linux内核之进程

    都说这个主题不错,连我自己都觉得有点过大了,不过我想我还是得坚持下去,努力在有限的时间里学习到Linux内核的奥秘,也希望大家多指点,让我更有进步.今天讲的全是进程,这点在大二的时候就困惑了我,结果那 ...

  2. (转)Linux内核之进程和系统调用

    Linux内核之进程和系统调用 什么是系统调用 在Linux的世界里,我们经常会遇到系统调用这一术语,所谓系统调用,就是内核提供的.功能十分强大的一系列的函数.这些系统调用是在内核中实现的,再通过一定 ...

  3. Linux内核之进程地址空间

    Linux内核之进程地址空间 内核中的函数以相当直接了当的方式获得动态内存: __get_free_pages 或 alloc_pages从分区页框分配器中获得页框; kmem_cache_alloc ...

  4. 深入Linux内核架构——进程管理和调度(上)

    如果系统只有一个处理器,那么给定时刻只有一个程序可以运行.在多处理器系统中,真正并行运行的进程数目取决于物理CPU的数目.内核和处理器建立了多任务的错觉,是通过以很短的间隔在系统运行的应用程序之间不停 ...

  5. Linux内核分析——进程描述与创建

    20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验内容 ...

  6. 分析Linux内核中进程的调度(时间片轮转)-《Linux内核分析》Week2作业

    1.环境的搭建: 这个可以参考孟宁老师的github:mykernel,这里不再进行赘述.主要是就是下载Linux3.9的代码,然后安装孟宁老师编写的patch,最后进行编译. 2.代码的解读 课上的 ...

  7. linux内核数据结构--进程相关

    linux里面,有一个结构体task_struct,也叫“进程描述符”的数据结构,它包含了与进程相关的所有信息,它非常复杂,每一个字段都可能与一个功能相关,所以大部分细节不在我的研究范围之内,在这篇文 ...

  8. Linux 内核开发 - 进程空间

    1.1 虚拟内存 Linux 的系统.假设每一个任务都独立的占用内存,则实际的物理内存将非常快消耗殆尽.实际上对于前台正在执行的任务来说,所须要要的内存并不多,非常多任务基本不须要执行,也就没有必要一 ...

  9. Linux内核分析--进程创建,执行,切换

    学号:351 原创作品转载请注明出处本实验来源 https://github.com/mengning/linuxkernel/ 实验要求 从整理上理解进程创建.可执行文件的加载和进程执行进程切换,重 ...

随机推荐

  1. PHP读取CSV大文件导入数据库的示例

    对于数百万条数据量的CSV文件,文件大小可能达到数百M,如果简单读取的话很可能出现超时或者卡死的现象. 为了成功将CSV文件里的数据导入数据库,分批处理是非常必要的. 下面这个函数是读取CSV文件中指 ...

  2. MyEclipse破解方法

    Myeclipse 2014 破解补丁,首先需要先下载 Myeclipse 2014 官方安装文件,下载地址 http://www.jb51.net/softs/150886.html,然后下载此补丁 ...

  3. sqlserver2005仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'SendMealAddress'中为标识列指定显式值。

    ps = con.prepareStatement("insert into SendMealAddress values(null,?,?,?,?)"); 表有一列是自增长的标识 ...

  4. Word Amalgamation(hdoj1113)

    Word Amalgamation Problem Description In millions of newspapers across the United States there is a ...

  5. 变态最大值(nyoj)

    变态最大值 描述 Yougth讲课的时候考察了一下求三个数最大值这个问题,没想到大家掌握的这么烂,幸好在他的帮助下大家算是解决了这个问题,但是问题又来了. 他想在一组数中找一个数,这个数可以不是这组数 ...

  6. JVM的生命周期——JVM之二

    一.首先分析两个概念 JVM实例和JVM执行引擎实例 (1)JVM实例对应了一个独立运行的java程序——进程级别 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程 ...

  7. Jquery基础之ajax

    ajax是Asynchronous JavaScript and XML(异步JavaScript和XML)的简称,ajax并不是单一的技术而是利用一系列交互网页应用相关的技术形成的结合体,ajax揭 ...

  8. 你真的用上keepalive了吗

    转自http://qa.blog.163.com/blog/static/19014700220134771052763/ Keep-Alive即俗称的长连接,使客户端到服务端建立的连接持续有效,当对 ...

  9. SonarQube代码质量管理平台工具

    1.Sonar轮廓介绍 Sonar (SonarQube)是一个开源平台,用于管理源代码的质量.Sonar 不只是一个质量数据报告工具,更是代码质量管理平台.支持的语言包括:Java.PHP.C#.C ...

  10. HDOJ-1003 Max Sum(最大连续子段 动态规划)

    http://acm.hdu.edu.cn/showproblem.php?pid=1003 给出一个包含n个数字的序列{a1,a2,..,ai,..,an},-1000<=ai<=100 ...