• Linux内核之进程和文件共享


    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的信息
  • 相关阅读:
    jq封装的tab切换
    jquery高级函数
    jquery一些基本函数
    javascript中的事件冒泡和事件捕获
    prototype数组方法的实现
    瀑布流布局
    flex弹性布局
    js鼠标点击版tab切换
    js拖拽效果
    js根据className获取元素封装
  • 原文地址:https://www.cnblogs.com/zqlmmd/p/5522068.html
Copyright © 2020-2023  润新知