您的位置:首页 > 运维架构 > Linux

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

2015-08-30 16:41 477 查看

一,程序和进程概念

程序和进程的区别

程序是静态概念,本身作为一种软件资源长期保存,而进程是程序的执行过程,他是动态概念,有自己的生命周期,是动态产生和消亡的

一个程序可以由多个进程共用,一个进程在活动中可以顺序执行若干个程序

父进程和子进程

子进程是由一个进程所产生的进程,产生这个子进程的进程为父进程

Linux系统中,使用系统调用fork穿件进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境

父进程终止,子进程也会终止

前台进程和后台进程

前台进程

在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.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文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: