程序是一个静态的概念,最为软件资源长期存在于硬盘中。
进程是一个动态的概念,是程序的执行过程。
程序与进程没有一一对应的关系。
进程与程序也没有一一对应关系。
|
父子进程关系:
系统使用fork创建进程,子进程由父进程产生。
父进程终止,子进程自然终止。
如果父进程终止,子进程归属于root(1)进程所有。
|
前台进程:
命令与shell异步运行,即前台运行,用户在其完成前不能执行另一命令。
~~~~~~~~~~~~~~~~~~~~~
后台进程:
命令与shell同步运行,后台进程必须是非交互式的。
|
进程状态的细化分类:
用户态运行:在CPU上执行用户代码。
核心态运行:在CPU上执行核心代码。
在内存就绪:具备运行条件,等待调度程序为它分配CPU。
在内存睡眠:因等待某事件发生,而在内存中排队等待。
在外存就绪:就绪进程被交换到外存上继续处于就绪态。
在外存睡眠:就绪进程被交换到外存上继续等待。
在内存暂停:因调用stop程序而进入跟踪暂停状态,等待其父进程发送命令。
在外存暂停:处于跟踪暂停态的进程被交换到外存上。
创建态:新进程正在被创建,但尚未完成的中间态。
终止态:进程终止自己。
|
w
|
查看当前登陆的用户状态。
|
显示项JCPU |
显示该终端所有相关进程执行消耗的CPU时间。
|
PCPU
|
CPU执行程序消耗的时间。
|
WHAT |
用户正在执行的操作。
|
load average
|
显示当前系统平均负载程度。显示过去1、5、15分钟的平均值 |
FROM
|
显示用户从何处登陆。:0表示从Xwindow登陆。
|
IDLE
|
用户闲置时间。
|
ps
|
进程管理命令
|
-a
|
显示所有用户进程 |
-u
|
显示用户名和启动时间
|
-x
|
显示没有控制终端的进程
|
-l
|
长格式显示,即显示详细信息 |
-w
|
宽行显示,可以使用多个w进行加宽显示
|
-e
|
显示所有进程,包括没有控制终端的进程
|
pstree
|
查看系统中进程信息,以树状显示。 |
显示选项的含义
|
|
PID
|
进程号
|
PPID
|
父进程进程号
|
TTY
|
进程启动的终端
|
STAT
|
进程当前状态
|
S
|
休眠状态
|
D
|
不可中断的休眠状态
|
R
|
运行状态
|
Z
|
僵死状态
|
T
|
停止状态 |
NI
|
进程优先级 |
TIME
|
进程自启动以来占用CPU的总时间
|
COMMAND/CMD |
进程的命令名
|
USER |
用户名
|
%CPU
|
占用CPU时间和总时间的百分比 |
%MEM
|
占用内存与系统内存总量的百分比。
|
kill
|
杀死进程。 |
kill PID
|
关闭进程,关闭父进程可以直接导致其子进程关闭
|
kill -9 PID
|
强制关闭
|
kill -1 PID
|
重启进程
|
xkill
|
关闭图形进程 |
killall
|
关闭进程同名的进程 |
pgrep 服务名
|
查找服务进程号
|
pkill 进程名
|
关闭进程
|
nice
|
指定程序的运行优先级
|
nice -n 程序名(PID)
|
renice
|
改变一个正在运行的程序的优先级 |
renice -n 程序名(PID)
|
|
优先级的范围为(-20,19)
|
优先级的缺省为0
|
no hup program &
|
当用户退出时继续执行
|
CTRL+Z
|
进程挂起 |
CTRL+C
|
终止进程
|
fg
|
恢复到前台继续执行
|
bg
|
恢复到后台继续执行 |
jobs
|
查看被挂起的进程 |
top
|
相当于进程管理器,会动态刷新 |
|
下面指令是在top运行后键入的
|
d
|
指定刷新间隔,默认是3秒钟更新
|
c
|
显示整个命令行而不是仅仅显示命令名
|
u
|
查看指定用户的进程
|
k
|
终止执行中的进程
|
h or ?
|
获得帮助 |
r
|
重新设置进程优先级
|
s
|
改变刷新时间间隔
|
W
|
将当前设置写入~/.toprc文件中
|
|
计划任务命令
|
at
|
安排作业在某一时刻执行一次
|
batch
|
安排作业在系统负载不重时执行一次 |
cron
|
安排周期性运行的作业
|
at [-f 文件名] 时间
|
|
at -d or atrm
|
删除队列中的任务
|
at -l or atq
|
查看队列中的任务
|
at的时间表示法
|
绝对计时方法: midnight noon teatime hh:mm[today] hh:mm tomorrow hh:mm week hh:mm MM/DD/YY |
相对计时方法: now +n minutes now +n hours now +n days |
crontab
|
命令格式
|
crontab{-l|-r|-e}
|
|
-l
|
显示当前的crontab
|
-r
|
删除当前的crontab
|
-e
|
使用编辑器编辑当前的crontab文件
|
crontab -e
|
分钟 小时 天 月 星期 命令/脚本
|
Minute 一天中的哪一分钟【0~59】
|
hour 一天中的哪个小时【0~23】
|
day-of-month 一月中的哪一天【1~31】
|
month-of-year 一年中的哪个月【1~12】
|
day-of-week 一周中的哪一天【0~6】
|
以每天凌晨4点的计划任务举例
|
0 4 * * * 命令,不知道不清楚用*表示
|
逗号用来分隔不连续的值,-用来连接连续的值
|
*/2每隔两分钟,命令建议使用绝对路径
|
使用which 命令名查看命令的绝对路径
|