linux 笔记--while循环、函数和进程管理

while:
    break:提前退出循环
    continue:提前结束循环,而进入下一轮循环
    while :; do
           ********
    done      (死循环)

函数:function
    代码重复使用,结构化,不能单独运行,需要被调用时才可以被使用
    1.function 函数名{         2.function(){
         *********                      *********
        }                    }
return # : 自定义返回值

OS = kernel(内核) + process(进程)

应用程序 --> 进程 --> 多个线程
    多个进程只能在一个cpu上切换运行,但是多个线程可以同时在多个cpu核心上同时运行

init:是所有进程的父进程(pstree命令可以查看进程树),init负责生成其他任务的进程

进程优先级关系:0-139
    100-139:用户可控制
    0-99:内核调整

优先级高的进程:
    1.获得更多的cpu运行时间
    2.更优先获得运行的机会
nice值:
    默认为0,-20--19 与 100-139 相对应,某些进程的默认优先级,普通用户仅能调大自己的进程nice值

PID:每一个进程都有一个ID号,在/proc目录中每一组数都是一个进程,init的进程ID号永远都为1
    且进程分两类:跟终端相关的进程 和 跟终端无关的进程

ps:查看进程状态,默认显示跟终端有关的进程,参数格式有两种:
    一种是:sysV(罗马数字):参数可以不用-
    a 显示跟终端有关的进程
    u 显示用户等其他信息
    x 显示跟终端无关的进程
    另一种是:BSD
    一般常用:-elF  -ef  -eF
    ps -o 属性1(pid) 指定查看 ,常用 -axo

USER       PID     %CPU       %MEM        VSZ         RSS      TTY    STAT    START      TIME         COMMAND
    用户名     id号  cpu使用率  内存使用率  虚拟内存级  常驻内存级  终端   状态   开始时间  运行总时间  命令或可执行的文件
    进程状态:D 不可中断的睡眠     R 运行或就绪    S 可中断的睡眠       T 停止    z 僵死的进程
          < 高优先级的进程    N 低优先级的进程    + 前台进程组中的进程    l 多线性进程
          s 会话进程的首进程

pgrep命令:搜索进程且只显示进程号
pidof命令:指定进程名查id号

top命令:显示当前服务器的各种状态
    -d 指定刷新时长 (秒)
    -b 翻屏显示
    -n # 只显示几屏

top - 21:48:11 up  8:57,  4 users,  load average: 0.03, 0.02, 0.00
    Tasks: 206 total,   1 running, 205 sleeping,   0 stopped,   0 zombie
    Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Cpu1  :  0.3%us,  0.3%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:   1881040k total,  1007900k used,   873140k free,   125956k buffers
    Swap:  4095996k total,        0k used,  4095996k free,   438080k cached
    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
     1   root      20   0 19356 1524 1216 S  0.0  0.1   0:01.80  init
    注:buffers和cached显示的都是物理内存  
    
    交互命令:
        M 根据驻留内存大小进行排序
        P 根据cpu使用百分比进行排序
        T 根据累计时间排序
        l 是否显示平均负载和启动时间
        t 是否显示进程和cpu状态的相关信息
        1 显示cpu所有核心的相关信息
        m 是否显示是内存的相关信息
        c 是否显示完整的命令行信息
        q 退出  k 终止某个进程

进程间的通信: 共享内存 信号 stmaphore

进程之间发送信号控制进程:
     kill -l 显示所有可用信号
        1 SIGHUP 让一个进程不用重启,就可以重读其配置文件,并让新的配置信息生效
        2 SIGINT ctrl + c 中断一个进程
        9 SIGKILL 杀死一个进程
        15 SIGTERM 终止一个进程
    指定pid发送信号:
        信号号码:kill -15 pid
        信号名称:kill -SIGKILL pid
        信号名称简写:kill -KILL pid
        kill pid :默认为15号信号
        killall 进程名:杀死相同进程名

调整nice值:
    renice # pid 调整已经启动的进程的nice值
    renice -n # command:在启动是指定nice值

前台:占据了命令提示符
后台:启动之后,释放命令提示符后续的操作在后台完成
     command  & : 在命令执行时&符让命令直接切换到在后台运行
    前台-->后台 的切换:ctrl+z 让正在运行的命令转换到后台运行
    后台-->前台 的切换:fg # 切换后台任务到前台执行
    bg命令让暂停在后台的任务继续执行,若有多个后台任务,则bg #(命令号,可用jobs查看当前的
        后台任务,+为bg命令默认将继续操作的任务 -为bg默认第二个执行的任务)
    kill %# 结束#任务

vmstat命令:系统状态查看命令
    vmstat 1 每隔1秒刷新一次
    vmstat 1 5 每隔1秒刷新一次,共刷新5次
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
      0  0      0 868724 130380 438112    0    0     7     5   59  231  1  0 98  1  0
    procs:r队列长度 b阻塞长度
    memory:swpd交换大小 free空闲 buff缓冲 cache缓存
    swap:si内存-->交换空间 so交换空间-->内存
    io:bi磁盘-->内存 bo内存-->磁盘
    system:in中断个数 cs进程上下文切换次数
    cpu:us用户空间 sy内存空间 id空闲 wa等待 st被偷走的空间
    
uptime命令:显示的信息和top的第一行一样

注:
    /proc/meminfo  内存信息
    /proc/cpuinfo  cpu信息
    /proc/进程号/maps 该进程在内存中读取的信息

时间: 2024-12-16 15:00:21

linux 笔记--while循环、函数和进程管理的相关文章

【读书笔记】《Linux内核设计与实现》进程管理与调度

大学跟老师做嵌入式项目,写过I2C的设备驱动,但对Linux内核的了解也仅限于此.Android系统许多导致root的漏洞都是内核中的,研究起来很有趣,但看相关的分析文章总感觉隔着一层窗户纸,不能完全理会.所以打算系统的学习一下Linux内核.买了两本书<Linux内核设计与实现(第3版)>和<深入理解Linux内核(第3版)> 0x00 一些废话 面向对象思想. Linux内核虽然是C和汇编语言写的,没有使用面向对象的语言,但里面却包含了大量面向对象的设计.比如可以把内核中的进程

Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介

Linux内核分析(四) 两天没有更新了,上次博文我们分析了linux的内存管理子系统,本来我不想对接下来的进程管理子系统.网络子系统.虚拟文件系统在这个阶段进行分析的,但是为了让大家对内核有个整体的把握,今天还是简单的介绍一下剩余的几个子系统,我们对这几个子系统的分析,只要了解其作用和部分内容即可,不必深究,等我们写上几个驱动,到时候按照驱动再来分析这几个子系统我们就清晰多了. 在http://www.cnblogs.com/wrjvszq/p/4257164.html一文我们提到过linux

Linux 内核子系统之内存与进程管理子系统

Linux 内核子系统的组成 由以上7个子系统组成. 一.内存管理子系统 职能: 1.从虚拟地址到物理地址映射的管理. 2.物理内存分配的管理. 地址映射管理 2.1虚拟地址空间分布 在Linux中使用的是虚拟地址,但是在访问硬件的时候使用的是物理地址.比如程序中用malloc函数分配的都是虚拟地址,但是硬件在使用时用的是物理地址,这其中就有一个转化关系. 它所支持的虚拟地址空间是由硬件地址总线宽度决定的,比如32位地址总线支持4GB虚拟内存. 用户空间(0-3G):用户程序. 内核空间(3-4

Linux内核分析——第三章 进程管理

第三章 进程管理 3.1 进程 1.进程就是处于执行期的程序:进程就是正在执行的程序代码的实时结果:进程是处于执行期的程序以及相关的资源的总称:进程包括代码段和其他资源. 线程:是在进程中活动的对象. 2.执行线程,简称线程,是在进程中活动的对象.每个线程都拥有一个独立的程序计数器.进程栈和一组进程寄存器. 3.内核调度的对象是线程,而不是进程.Linux对线程并不特别区分,视其为特殊的进程 4.在现代操作系统中,进程提供两种虚拟机制:虚拟处理器和虚拟内存.在线程之间可以共享虚拟内存,但每个都拥

linux基础学习第十八天之进程管理和任务计划

内容: 进程相关概念(用户空间.内核空间,进程.线程)   进程及系统相关工具(ps.top.pgrep.pidof.kill)   调整nice值(nice.renice)   作业管理(jobs.fg.bg.kill,&)   计划任务(at.crontab) 一.进程相关概念 内核的功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等 内核空间和用户空间关系: 对计算机来说,其实只有CPU和内存,其中在某一时刻内存逻辑上分为两部分(linux系统):用户空间和内核空间,每一个

Linux centos6.6 dstat htop top进程管理命令

进程管理 命令: pstree 显示:进程树 pstree–p 显示:进程树和PID ps:process state Linux运行中的内核的相关信息是通过/proc伪文件系统输出的:各进程都有一个以其PID命名的子目录,每个子目录中有许多文件存储了进程的相关状态信息.显示的是ps命令执行时,系统上当前进程状态信息的快照:所以,为静态结果. 根据进程启动时是否是通过终端上的用户接口交互式启动的,进程可分为两类: ps a 显示:终端相关的进程 ps x 显示:终端无关的进程 ps u 显示:用

Linux(RadHat)基础学习—进程管理

1.进程定义 进程(process)是一个具有一定独立功能的程序关于某个数据集合的一次运行活动.它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元. 2.进程查看 1.图形查看 gnome-system-monitor 2.命令行查看 ps命令 ps ##只显示当前teminel进程信息 x|-A ##所有进程 -d ##显示除了当前shell的所有进程 f ##显示进程从属关系 e ##显示进程调用环境工具的详细信息(系统资源调用) l ##长列表显

Linux下怎么使用任务管理器和进程管理

大家都知道在Windows下怎么使用任务管理器来管理进程,那么在linux下呢?今天简单介绍一下怎么在linux使用任务管理器管理进程,让我们的linux服务器运行的很流畅,可以使用的命令有:1.PS命令来查看静态的进程统计消息可以加的参数有:a:显示当前终端的所有进程消息,包括其他用户的进程.与"x"选项结合时可以显示系统中的 所有进程信息:u:使用以用户为主的格式显示输出进程信息:x:显示当前用户在所有终端下的进程信息:-e:显示系统中的所有进程信息:-l:使用长格式显示进程信息:

Linux笔记(十二) - 服务管理

(1)服务的分类1.rpm包默认安装的服务 a.独立的服务 b.基于xinetd服务2.源码包的服务查询已安装的服务1.rpm包安装的服务 查看服务(0-6运行级别下的)自启动状态,可以看到所有rpm包安装的服务:chkconfig --list2.源码包安装的服务 查看服务安装位置,一般是/usr/local/下rpm安装服务与源码包安装服务的区别位置不同: rpm安装在默认位置 源码包安装在指定位置,一般是/usr/local/下(1)rpm服务的管理rpm安装的位置/etc/init.d/