Linux学习笔记(6)-进程管理

来源:互联网 发布:淘宝店铺开店流程 编辑:程序博客网 时间:2024/06/06 09:55

一,程序和进程概念

程序和进程的区别

  1. 程序是静态概念,本身作为一种软件资源长期保存,而进程是程序的执行过程,他是动态概念,有自己的生命周期,是动态产生和消亡的
  2. 一个程序可以由多个进程共用,一个进程在活动中可以顺序执行若干个程序

父进程和子进程

  1. 子进程是由一个进程所产生的进程,产生这个子进程的进程为父进程
  2. Linux系统中,使用系统调用fork穿件进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境
  3. 父进程终止,子进程也会终止

前台进程和后台进程

  • 前台进程
    在Shell中输入一个命令,创建一个子进程,运行命令,Shell就会等待命令完成,这个命令与Shell异步运行,即前台运行,用户在完成这个命令之前不能执行另一个命令
  • 后台进程
    在Shell中输入一个命令,如果后面加一个后台运行符&,Shell创建子进程运行此命令,但不等待命令退出,直接返回给用户提示符界面,这条命令就会与Shell同步运行,即后台运行(后台进程必须是非交互式的)
    例如:
    find / -name init > /test/init.find &
    (查找所有带有init的放到/test/init.find文件中)

进程的状态

  • 就绪状态
    进程已经分配到资源,但因为其他进程正在占用CPU,所以暂时不能运行,处于等待分配CPU的状态
  • 等待状态
    因等待某种事件而暂时不能运行的状态
  • 运行状态
    进程分配到CPU,正在处理器上运行

状态迁移的关系如下图:
这里写图片描述

二,进程管理的相关命令

查看用户信息命令:w

使用后效果如下:
这里写图片描述

(查看某个用户信息:w 用户名)

各项参数的含义:
- JCPU
以终端代号来区分,该终端所有相关进程执行时消耗的CPU时间
- PCPU
CPU执行程序所消耗的时间
- WHAT
用户正在执行的操作
- load average
后面跟着三个数字,分别表明系统过去1,5,15分钟内的平均负载程度(一般在0.8以下认为系统负载不高)
- FROM
显示用户从从何处登陆系统,“:0”表示用户该用户从X Window下登陆的
- IDLE
用户闲置时间,这是一个计时器,一旦用户执行任何操作,该计时器都会被重置

查看系统中的进程命令:ps

常用选项:
- a:(all)显示所有用户进程
- u:显示用户名和启动时间
- x:显示没有控制终端的进程
- e:(every)显示所有进程,包括没有控制终端的进程
- l:长格式显示(显示详细信息)
- w:宽行显示,可以使用多个w进行加宽显示

当使用-l显示详细信息时,会有多个标识,如下所示:
这里写图片描述
其中标识的含义:

  • PID:进程号
  • PPID:父进程的进程号
  • TTY:进程启动的终端
  • STAT:进程当前状态
    • S:休眠状态
    • D:不可中断的休眠状态
    • R:运行状态
    • Z:僵死状态
    • T:停止
  • NI:进程优先级
  • TIME:进程自从启动以来启用CPU的总时间
  • COMMAND/CMD:进程的命令名
  • USER:用户名
  • %CPU:占用CPU时间和总时间的百分比
  • %MEM:占用内存与系统内存总量的百分比

PS命令的使用实例

  • ps:产看隶属于自己的进程
  • ps -u or -l:查看隶属于自己进程的详细信息
  • ps -le or -aux:查看所有用户执行的进程的详细信息
  • ps -aux –sort pid 按照进程执行的时间,PID,UID等对进程进行排序
  • ps -aux | grep Lily:查看Lily用户执行的进程
  • ps -uU Lily:查看Lily用户执行的进程
  • ps -le | grep init:查看指定进程信息

杀死进程命令:kill

  • 关闭进程:kill 进程号
    • kill有很多信号,可以使用kill -l全部列出来,如下两个信号最常用
    • 强制关闭:kill -9 进程号(早期版本甚至可以强制关闭init进程)
    • 重启进程:kill -1 进程号
  • 关闭图形程序:xkill
  • 关闭所有进程:killall

改变进程优先级命令:nice和renice

  • nice
    • 启动程序时指定程序运行的优先级
    • 格式: nice -n command
    • 例如: nice -5 someprogram
    • 注释: 优先级(n)的范围(-20, 19),值越小,优先级越大
  • renice

    • 改变一个正在运行的进程的优先级
    • 格式: renice n pid
    • 例如: renice -5 777

    具体的例子:
    正常启动httpd,其优先级为0,如下图:
    这里写图片描述
    关闭httpd,使用nice命令打开,则优先级为-5,如图
    这里写图片描述
    再用renice命令改变优先级为-10,如下图
    这里写图片描述

使进程在用户退出后仍然执行的命令 : nohup

  • 使用该命令让用户退出登录后仍然执行(区别于后台运行符&), nohup默认将执行后的数据信息和错误信息存放在nohup.out文件中
  • 使用格式:
    • nohup program &
  • 例子:
    • nohup find / -name init* > /root/find.out &

进程的中止(挂起)和终止操作

挂起: Ctrl + Z
终止: Ctrl + C

查看被挂起的进程命令: jobs
直接输入jobs就行

进程状态显示命令: top

  • 显示进程状态,5秒更新一次,比ps好用…
    效果如下图:
    这里写图片描述

  • 常用选项(输入top之后,在top显示出来的界面输入d,q等命令)

    • d : 改变刷新时间
    • q : 退出
    • c : 显示整个命令,而不是仅仅显示命令名(可以查看具体在做什么操作)
    • u : 查看某个用户的进程信息
    • h : 查看帮助

三,计划任务

计划任务通常可以分为一次性计划任务和周期性计划任务

一次性计划任务

在某个时刻执行一次

at命令

功能:安排一个或多个命令(脚本)在指定时间运行一次

使用格式:

at 时间

例如:
at now +1 minutes
按下回车后, 进入at的交互模式,可以输入想要执行的命令
想要结束时,可以按下Ctrl + D结束at
这样, 输入的命令会在一分钟后执行
(把/下的所有文件写入/note中)
at命令使用实例

使用at执行一个脚本(多个命令):

比如要执行一个脚本at.script
命令使用格式如下:
at -f at.script 9:00 today
或者
at < at.script 9:00 today

at命令的时间格式:

  • 绝对计时方法:

    • midnight noon teatime
    • hh:mm [today]
    • hh:mm tomorrow
    • hh:mm 星期
    • hh:mm MM/DD/YY
  • 相对计时方法:

    • now + n minutes
    • now + n hours
    • now + n days
  • 例子
    假如现在是15年8月30日下午14:30,如果想指定15:30时执行计划任务

    • at 5:30pm
    • at 17:30
    • at 17:30 today
    • at now + 3 hours
    • at now + 180 minutes
    • at 17:30 8/30/15

查看at的计划任务:

atq或者at -l

[root@localhost /]#atq
6 2015-08-30 16:09 a root

其中a表示active激活状态

另外, at在缺省状态下, 会把计划任务放在/var/spool/at/文件夹下

删除at的计划任务:

如果要删除刚才的计划任务,可以使用at -d 6
删除刚才那个序号为6的计划任务

at的配置文件

限制哪些用户可以使用at命令

  • /etc/at.allow
  • /etc/at.deny

如果at.allow文件存在,那么只有这个文件中的用户才能使用at命令
如果at.allow文件不存在,则检查at.deny是否存在,如果存在,则此文件中列出的用户都不能使用at,如果两个文件都不存在,那只有root可以使用at命令.
如果两个文件都存在且都为空,则所有用户都能使用at

batch命令

使用方法和格式和at完全一样
唯一的不同点:
使用batch的计划任务在指定时间到了后, 会检查当前系统负载, 在负载较低(低于0.8)的时候执行

周期性计划任务

crontab命令格式

使用格式:
crontab -l :显示当前的crontab
crontab -r :显示当前的crontab
crontab -e :使用编辑器编辑当前的crontab文件

0 0
原创粉丝点击