1. 基础概念

  • 可执行的二进制文件就是程序
  • 执行程序的时候因触发事件而获取的ID,称为PID
  • 在登入并执行bash时,系统依据登录者的UID/GID给登录者一个PID/GPID/SID等
  • 启动程序时,根据启动这个程序的使用者和相关属性关系,给这个PID一组有效的全线设定。每个程序都有三组权限,每组都具有r/w/r的权限,所以:不同的用户身份执行某个程序时,系统给予的权限也都不同。
  • 子程序与父程序:我们登录系统后,会取得一个bash shell的PID,我们可以用bash提供的接口去执行另一个程序,那些另外执行的程序也会获得一个PID,这个PID就是子程序,而在我们的bash环境,就称为父程序。
  • 常驻在内存的程序有哪些:
  • ls、touch、rm等执行完就退出内存了
  • 系统或者网络服务crond atd,syslog,Apache,named,vsftpd等是常驻内存的。

2. 作业管理

  • 登录系统取得bash shell之后,在单一终端界面下,同时管理多个作业。
  • 要进行bash的作业管理,需要注意到的限制是
  • 程序必须是shell的子程序
  • 程序不能等待terminal/shell的输入

2.1 &:

  • 直接将命令放到后台中“执行”的&:
  • 前台:用户可以控制的作业就是前台错也
  • 后台:在内存可以自行运行的作业,用户无法直接控制他,除非用bg/fg等指令来将该作业调用出来
  • 如果前台运行的话,程序在结束之前不能进行其他的操作
  • 程序在后台运行则可以同时进行其他命令比如:ls等

    tar -zcf etc.tar.gz /etc >log.txt 2>&1 &

2.2 [ctrl] -z:

  • 把程序从前台暂停到后台,

2.3 jobs:

jobs  #等效于jobs -s
jobs -l #还会小时进程号
jobs -r #显示正在运行的

2.4 fg:



fg %+ #默认调用+的作业

fg %%

fg %1 #执行作业号为1的作业

2.5 bg:

  • 让后台暂停的作业在后台内存中运行

    find /-perm -4000

    然后暂停它

    jobs

    bg %之前暂停作业的作业号

2.6 kill:

  • 使用kill -l

  • 使用kill -9 进程号或者作业号,对应的.swp文件不会删除

  • 使用kill -15 进程号或者作业号,对应的.swp文件不会删除

    kill -9 %3

3. 进程管理

  • 为什么进程管理这么重要
  • 如果linux系统很繁忙,当整个系统资源快被耗尽的时候,我们应该找出最耗系统的那个进程,然后删除该进程或者降低它的执行权限,让系统恢复正常
  • 如果某个程序僵死,导致程序一直在内存当中,我们应该将其找到并杀死
  • 如果系统中同时又五六项作业在运行,但是其中有一项作业非常重要,那么,如何让这项重要的工作被最优先执行呢

3.1 进程的观察ps、top、pstree:

  • ps静态的查看进程
  • top动态的查看进程
  • pstree来查阅程序之间的关系

  • F是标志的意思,4表示root用户
  • S是state状态的意思,S表示sleeping,R表示running,T表示停止的意思,Z表示zombie僵死了。
  • PPID是进程的副进程
  • C所占的cpu的百分比
  • PRI是priority优先级的意思
  • NI是nice谦让值的意思
  • ADDR进程所在的位置,如果在运行就显示-号
  • SZ表示进程所占用的内存大小
  • WATCH表示运行的状态,-号代表正在运行,wait代表正在等待
  • TTY代表登录状态,
  • CMD,是command的缩写
  • VSZ,虚拟内存占用大小
  • RSS,所占用内存页数
ps aux | head

ps -axjf  #显示树状结构
ps -lA | cat -n
ps -aux | cat -n
ps -le | cat -n

  • load average 分别表示1分钟,5分钟,15分钟的负载
  • Men、Swap:物理、虚拟内存使用
  • Cpu:us、sy、ni、id、wa、hi、si、st分别为用户占用、系统占用、nice占用、id空闲占用、wa等待输入输出占用、hi硬件中断占用、si软中断占用

3.2 killall:

service httpd start
kill -9 'ps aux| grep httpd| grep -v 'grep'| awk '{print $2}''#用kill命令杀死httpd挺麻烦的。
killall -9 httpd

3.3 系统资源的观察:free、uname、dmesg、sar:

3.4 netstat、:

netstat | nl
netstat | head

3.5 进程的执行顺序、:

linux 基础12-程序与资源管理的更多相关文章

  1. linux基础之程序包管理(rpm,yum)

    一.rpm 安装:rpm { -i | --install } [ install-options ] PACKAGE_FILE... -v: 显示安装时的详细信息 -vv: 显示许多难以阅读的调试信 ...

  2. Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...

  3. 【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer ...

  4. 后端程序员必备的 Linux 基础知识

    1. 从认识操作系统开始 正式开始 Linux 之前,简单花一点点篇幅科普一下操作系统相关的内容. 1.1. 操作系统简介 我通过以下四点介绍什么是操作系统: 操作系统(Operating Syste ...

  5. Linux 系统常用命令汇总(四) 程序和资源管理

    程序和资源管理 分类 命令 选项 注解 背景管理 & command+& 将任务放到后台进行 ctrl+z 暂停任务 fg [%number] 讲后台程序推到前台来,number表示进 ...

  6. 【程序与资源】linux程序与资源管理

    程序与资源管理:ps.top.free.sar.kill.uname ①ps语法: [root @test /root ]# ps -aux 参数说明: a   :选择所有的程序列出 u   :所有使 ...

  7. 【linux基础】使用命令行编译运行c++程序

    前言 在linux系统运行程序,小鹅知道的有3种编译方式,一种是直接命令行编译,一种是使用Cmake,一种是使用脚本文件(*.sh).本文介绍的是使用命令行编译. 使用过程 注意不同系统的编译器版本可 ...

  8. Linux随笔-鸟哥Linux基础篇学习总结(全)

    Linux随笔-鸟哥Linux基础篇学习总结(全) 修改Linux系统语系:LANG-en_US,如果我们想让系统默认的语系变成英文的话我们可以修改系统配置文件:/etc/sysconfig/i18n ...

  9. 大数据每日干货第四天(linux基础之一目录结构与常用命令)

           为了和qq空间同步,也写的第四天,前面几天明天会发布,本来打算把每天学的东西记录下来,通过朋友给的建议要发的话稍微系统化下,从大数据需要的linux基础,到离线数据分析包括hadoop. ...

随机推荐

  1. rdd的元素打印

    在集群上运行spark程序时,rdd的操作都在worker机上,因此输出rdd的元素将在worker机的标准输出上进行,驱动节点上不会运行,故直接才程序中写如下代码 rdd.foreach(print ...

  2. nginx+mysql双主搭建

    说明:mysql双主架构经过测试在生产环境中使用没有问题,但是还是建议使用读写分离, Mysql主主同步环境部署: centos 7.4 三台云主机:mysql1 :10.1.1.142 mysql2 ...

  3. PostgreSQL学习笔记——窗口函数

    在学习窗口函数之前,我们新建一个Product表并往其中插入一些数据: drop table if exists Product; create table Product ( product_id ...

  4. [CareerCup] Single Valid Tree

    https://www.careercup.com/question?id=5103530547347456 Given a list of nodes, each with a left child ...

  5. 第二十三章 多项目集中权限管理及分布式会话——《跟我学Shiro》

    二十三章 多项目集中权限管理及分布式会话——<跟我学Shiro> 博客分类: 跟我学Shiro 跟我学Shiro  目录贴:跟我学Shiro目录贴 在做一些企业内部项目时或一些互联网后台时 ...

  6. 【C# 开发技巧】 Application.DoEvents( ) 使用笔记

    该方法可以处理当前队列的消息,比如一个for循环 5000次 向TextBox中追加文本,那肯定会假死一会儿的. 此时便可使用Application.DoEvents()来处理队列的信息. 简单说下使 ...

  7. qt qml中的Tabview使用心得

    彩云之南的天是如此湛蓝,天上落下的水是如此清澈. 最近在qt5.5下使用TabView,如下. 1) currentIndex变量很好用,其对应当前被显示的tab,其值变化时还会触发onCurrent ...

  8. Linux(CentOS 7)下安装postgres

    事情背景:需要在Linux上安装postgres数据库,但安装目录想直接指定,所以想通过源码编译安装pg 首先下载源码安装包.源码下载地址:https://github.com/postgres/po ...

  9. 1186: 零起点学算法93——改革春风吹满地(C)

    一.题目 http://acm.wust.edu.cn/problem.php?id=1186&soj=0 二.分析 多组输入,'0'结束: 顶点的个数在3至100之间: 一定顺序输入坐标: ...

  10. SAS学习笔记33 格式修饰符

    冒号(:)格式修饰符 从非空格开始读取变量所对应的数据,直到满足以下任何一种情况 遇到下一个空格列 对应变量所定义的长度已经读满 数据行结束 &格式修饰符 修饰所读取为字符型的列数据中含有一个 ...