八、进程管理
1、进程的概念
- 程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,他是动态概念,有一定的生命周期,是动态产生和消亡的。
- 程序和进程无一一对应关系。一个程序可以由多个进程共用;另一方面,一个进程在活动中有可顺序地执行若干个程序。
2、父进程与子进程
1、子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程。
2、在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。
3、父进程终止子进程自然终止。
3、前台进程
在shell提示处打开命令后,创建一个子进程,运行命令,shell等待命令退出,然后返回到对用户给出提示符。这条命令与shell异步运行,即在前台运行,用户在它完成之前不能执行另一个命令。
4、后台进程
在shell提示处打入命令,若后随一个&,shell创建的子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与shell同步运行,即在后台运行。后台进程必须是非交互式的。
5、进程状态
就绪:进程已经分配到资源,但因为其他进程正占用CPU,所以暂时不能运行而等待分配CPU的状态。
等待:因等待某种事件而暂时不能运行的状态。
运行:进程分配到CPU,正在处理器上运行。
6、进程管理命令
1、w命令
- load average:分别显示系统在过去1、5、15分钟内的平均负载程度。0.8以下说明负载较轻
- from:显示用户从何处登陆系统,“:0“的显示代表该用户在X Window下,打开文本模式窗口登陆的。
- IDLE:用户闲置的时间。这是一个计时器,一旦用户执行任何操作,该计时器便会被重置。
- JCPU:以终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里
- PCPU:CPU执行程序耗费的时间
- WHAT:用户正在执行的操作
查看个别用户信息:w 用户名
ps命令 查看系统中的进程。
- -a:显示所有用户的进程
- -u:显示用户名和启动时间
- -x:显示没有控制终端的进程
- -e:显示所有进程,包括没有控制终端的进程
- -l:长格式显示
- -w:宽行显示,可以使用多个w进行加宽显示
- ps --查看隶属于自己的进程
- ps –u 或ps –l --查看隶属于自己进程详细信息
- ps –le 或ps –aux --查看所有用户执行的进程详细信息
- ps –aux –sort pid --可以按照进程执行的时间、PID、UID等对进程进行排序
- ps –uU sam --查看系统中指定用户执行的进程
- ps –le | grep init --查看指定进程的信息
- USER:用户名
- PID:进程号
- %CPU:占用CPU时间和总时间的百分比
- %MEN:占用内存与系统内存总量的百分比
- TTY:进程启动的终端
- STAT:进程当前状态,S休眠状态,D不可用中断的休眠状态,R运行状态,Z僵死状态,T停止状态
- NI:进程优先级
- COMMAND:进程的命令名
pstree --查看系统中所有进程的树状信息
kill --关闭进程
- kill 进程号 --关闭进程
- kill –l ----查看kill的信号,一般使用1、9
- kill -9 进程号 --强行关闭进程
- kill –1 进程号 --重启进程
- xkill ----关闭图形程序,在命令行执行xkill,鼠标变为X图形,点击会关闭相应窗口
- killall 进程名----结束所有进程
- pgrep 服务名称 --查找服务进程号
- pkill 进程名称 --关闭进程
nice --指定程序的运行优先级
格式:nice –n command
例如:nice –5 myprogram
renice --改变一个正在运行的进程的优先级
格式:renice n pid
例如:renice –5 2343
nohup
使进程在用户推出登陆后仍旧继续执行,nohup命令将执行后的数据信息和错误信息默认存储在文件nohup.ou中
格式: nohup program &
top
作用:进程状态显示和进程控制,每5秒钟自动刷新一次(动态显示)
常用选项:直接摁d或c,启动内置命令
- d 指定刷新的时间间隔
- c 显示整个命令行而不仅仅显示命令行
- u 查看指定用户的进程
- k 终止进程
- h或? 获得帮助
- r 新设置进程优先级
- s 变刷新的时间间隔
- W 将当前设置写入~/.toprc文件中
7、计划任务
at --安排作业在某一时刻执行一次
at命令格式及参数
- at [-f 文件名] 时间
- at –d 或 at atrm 删除队列中的任务
- at –l 或 atq 查看队列中的任务
绝对计时方法
- 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
举例:指定在今天下午17:30执行某命令(假设现在时间是下午14:30,2014年1月1日)
- at 5:30pm
- at 17:30
- at now +3 hours
- at now +180 minutes
- at 17:30 14.1.1
- at 17:30 1/1/14
使用命令文件方式
- 生成文件at.script;//可以是其他名称
- 使用at命令
- at –f at.script 9:00 2/2/14
- at < at.script 9:00 2/2/14
使用at执行的命令一般存放在/var/spool/at/XXX临时文件
at配置文件,限制哪些用户可以使用at命令
- /etc/at.allow
- /etc/at.deny
如果at.allow文件存在,那么只有列在此文件中的用户才可以使用at命令;若at.allow文件不存在,则检查at.deny文件是否存在。若at.deny存在,则在此文件中列出的用户都不能使用at命令。如果两个文件都不存在,则只有超级用户可以使用at命令。如果两个文件都存在而且均为空,则所有用户都可以使用at命令。
batch --安排作业在系统负载不重时执行一次(一般情况下负载较轻指平均负载降到0.8以下)
使用方法同at
crontab --用户生成cron进程所需的crontab文件
命令格式: crontab {-l|-r|-e}
- -l 显示当前crontab
- -r 删除当前的crontab
- -e 使用编辑器编辑当前的crontab文件
举例: crontab –e 0 18 * * 1-5 /sbin/init 5 ---设置开机启动方式
crontab –e minute hour day month week commands
选项都不能为空,必须填入,不知道的值使用通配符*表示任何时间
每个时间字段都可以指定多个值,不连续的值用,间隔,连续的值用-间隔
命令应该给出绝对路径
用户必须具有运行所对应的命令或程序的权限
crontab文件建立好了以后可以到/var/spool/cron目录中确认
cron配置文件:/etc/cron.allow和/etc/cron.deny
cron --安排周期性运行的作业
进程处理方式
- standalone 独立运行
- xinted 进程托管
- atd、crond 计划任务,每隔一分钟在休眠中醒来,查看计划任务中有无可执行的计划任务,所以无法精确到秒
小知识
1、/proc目录中存放了系统所有进程相关信息,此目录不存放在硬盘中,只在内存中生成
2、cat /proc/cpuinfo --查看系统cpu信息
3、cat /proc/meminfo --内存信息
4、cat /proc/partitions --分区信息
5、linux中优先级:-20~19
6、CTRL+z ---进程挂起
7、ctrl+c ----进程终止
8、jobs ---查看被挂起的进程
9、fg --回复到前台继续运行
10、bg --回复到后台继续运行
finger –Linux finger命令的功能是查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell等信息。如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger守护进程。