zoukankan      html  css  js  c++  java
  • linux 之程序管理

    一个程序的父进程可以用PPID来判断
     
    命令ps -l 可以用来观察程序相关的输出信息
     
    被关闭的程序又产生:crontab或者父进程产生的
     
    我们将常驻在系统中的程序称为:服务(daemon)
    负责系统本身所需的服务:crond,atd
    负责网络连线的服务:Apache,named,postfix,vsftpd..等,这些服务会启动一个端口负责网络监听,提供外部用户端的连线要求
     
    linux中,预设了六个文字界面登入视图,一个图形界面,可以使用Alt+F1.../F7进行切换
     
    ps -aux查看所有进程
    cp file1 file2 & 将file1复制为file2,且放置于背景中执行
     
    工作管理(job control)是用在自己的bash环境下的进行的
    前景:可以控制与下指令的环境
    背景:可以自行运作,不能通过ctrl+c终止,可使用bg/fg呼叫该工作
     
    直接将指令丢到背景中执行 "&",可以通过资料流重定向来防止背景进程的输出对前景进程的影响
    将‘目前’工作丢到背景中‘暂停’ crtl+z
     
    观察目前的背景工作状态:jobs [-lrs]
    选项与参数:
    -l  处理列出job mumber与指令串之外,通过列出pid的号码
    -r  仅列出正在背景运行(run)的工作
    -s  仅列出正在背景中暂停(stop)的工作
    输出列中的+号代表最后被放入到后台的工作,如果输入fg命令,它会拿到前景进行处理
              -号代表倒数第二个放置到背景的工作
     
    把背景进程拿到前景处理:fg %jobnumber
    让在背景暂停的任务运行:bg %jobnumber
     
    管理背景进程: kill -signal %jobnumber
    -l:L的小写,列出目前kill能够使用的讯号有哪些
    signal:代表能给予后面的工作什么样的指示,用man 7 signal可知:
    -1:重新读取参数,类似reload
    -2:代表由键盘输入,ctrl+c一样的动作
    -9:立刻强制删除一个工作
    -15:以正常的程序方式终止一项工作
    kill后面接的数字预设是PID,如果要管理bash的工作,要加上%数字了
    选项与参数: %jobnumber:jobnumber为工作号码(数字),%号可有可无
     
    刚刚说的背景进程依旧与终端机有关,如果离线了,将会被终止掉
     
    可以使用at将工作放置到系统背景,而与终端机无关
    nohup可以在离线时,让工作继续进行
    nohup [指令与参数]  在终端机前景中工作
    nohup [指令与参数]  & 在终端机背景中工作
     
     
    将某个时间点的程序运作情况取下来:ps
    参数与选项:
    -A:所有的process均显示出来,与-e具有相同的效果
    -a:不与terminal有关的所有process
    -u:有效使用者相关的process
    x :通常与a一起使用,可列出交完整资讯
    输出格式设置:
    l:较长,较详细的将该PID得资讯列出
    j:工作的格式(jobs format)
    -f:做一个更完整的输出
     
    仅观察自己bash相关程序:ps -l
    F:代表程序的权限,常见的号码有:4,表示此程序的权限为root
                                    1,表示此子程序仅进行复制(fork)而没有实际执行(exec)
    S:代表这个程序的状态,主要状态有:R,Running,运行中
                                      S,Sleep,睡眠状态
                                      D,不可被唤醒的睡眠状态,通常这支程式在等待I/O的情况
                                      T,stop,停止状态,可能是在工作控制(背景暂停)或除错(traced)状态
                                      Z,Zombie,僵尸状态,程序已经停止但无法被移除记忆体
    UID:此程序被该UID所拥有
    PID:程序的PID号码
    PPID:此程序的父程序PID号码
    C:代表CPU使用率,单位为百分比
    PRI/NI:Priority/Nice的缩写,代表此程序被CPU所执行的优先顺序,数值越小代表该程序越快被执行
    ADDR/SZ/WCHAN:ADDR是kernel function,指出该程序在记忆体的那个部分,如果是running,会显示-
                  SZ代表此程序用掉多少记忆体
                  WCHAN表示程序是否在运行中,如果是running则显示为-
    TTY:登入者的终端位置,若为远端登入则使用动态终端界面pts/n
    TIME:使用掉的cpu时间,而不是系统时间
    CMD:造成此程序的指令
     
    动态观察程序的变化:top [-d 数字] |top [-bnp]
    -d:后面直接接秒数,设置显示的更新描述,预设是5秒
    -b:以批次的方式执行top,通常会搭配资料重导向将批次的结果输出为档案
    -n:与-b搭配,需要进行几次top的输出
    -p:指定某些pid来进行监视
     
    在top执行过程中可以使用的按键指令:
    ?:显示在top当中可以输入的按键指令
    P:以CPU的使用资源排序显示
    M:以Memory的使用资源排序显示
    N:以PID来排序
    T:由该process使用的cpu时间累积(TIME+)排序
    k:给予某个PID一个讯号signal
    r:给予某个PID重新制订一个nice值
    q:离开top软体的按键
     
    top默认使用CPU的使用率作为排序的重点
    我们自己的bash PID可由$$变量取得,echo $$
     
     
    pstree [-A|U][-up]
    -A:各程序树之间的连接以ASCII字元来连接
    -U:各程序树之间的连接以万元码的字元来连接,在某些终端界面下可能会有错误
    -p:列出每个proces的PID
    -u:列出每个process所属账号名称
     

    通过给程序一个讯号(signal)告诉程序你想要她做什么

    kill -signal PID
    killall -signal 指令名称
    killall [-iIe] [command name]
    -i:interactive的意思,互动式的,若要删除时,会提示字元给使用者
    -e:exact,表示后面接的command name要一致,但整个完整的指令不能超过15个字元
    -I:指令名称(可能含参数)忽略大小写

    通过档案(或档案系统)找出正在使用该档案的程序:fuser
    fuser [-umv] [-k[i][-signal]] file/dir
    -u:除了程序的PID之外,同时列出该程序的拥有者
    -m:后面接的那个档名会主动地上提到该档案系统的最顶层,对umount不成功很有效
    -v:可以列出每个档案与程序还有指令的完整相关性
    -k:找出使用该档案/目录的PID,并试图以SIGKILL这个讯号给予该PID
    -i:必须与-k配置,在删除PID前先询问使用者意愿
    -signal:如-1,-15等,默认是SIGKILL (-9)

     
     
    查出某个程序开启或者使用的档案与装置:lsof [-aUu][+d]
    -a:多项资料需要‘同时成立’才显示结果
    -U:仅列出Unix like系统的socket档案类型
    -u:后面接username,列出该使用者相关程序所开启的档案
    +d:后面接目录,亦即找出某个目录底下已经被开启的档案
     
    找出某个正在执行的程式的PID:pidof [-sx] program_name
    -s:仅列出一个PID而不是所有的PID
    -x:同时列出该grogram name可能的PPID那个程序的PID
  • 相关阅读:
    HTTP以及TCP协议
    分布式理论
    JAVA基础面试题
    JAVA基础面试题
    vue 中百度富文本初始化内容加载失败(编辑操作某列数据时,富文本中内容偶尔会为空)
    CodeMirror的使用方法
    JSON格式化,JSON.stringify()的用法
    promise与await的用法
    服务器端node.js
    数组扁平化
  • 原文地址:https://www.cnblogs.com/xiaoxiaocaicai/p/3185329.html
Copyright © 2011-2022 走看看