通俗的来说进程是运行起来的程序。唯一标示进程的是进程描述符(PID),在linux内核中是通过task_struck和task_list来定义和管理进程的。
进程和程序区别
1.程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。
2.程序和进程无一一对应关系。一个程序可以由多个时程公用;另一一方面,一个进程在活动中有可顺序地执行若干个程序
父子进程的关系
1.子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程
2.在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。
3.父进程终止子进程自然终止。
进程管理的作用
其实进程就跟window的任务管理器差不多
- 查看服务器健康状态 「Top命令」
- 查看系统中的所有进程 「PS命令」
- 杀死进程 「Kill功能」
前台进程和后台进程
前台进程
在shell提示处理打入命令后,创建一个子进程,运行命令,Shell等待命令退出,然后返回到对用户给出提示符。这条命令与Shell异步运行,即在前台运行,用户在它完成之前不能执行别一个命令 很简单,我们在执行这个查找命令时,无法进行其它操作,这个查找就属于前台进程
后台进程
在Shell提示处打入命令,若后随一个&,Shell创建子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与Shell同步运行,即在后台运行。”后台进程必须是非交互式的”
再来看这个命令就变成了后台进程,我们用同样的条件进行查找,把查找记过放到hzh/test/init.find这个文件中。不影响我们前台其它的操作。
查看用户信息 w[用户名]

- up 5 days :距上次开机的系统运行时间
- 1user : 当前在线用户数
- load average:分别显示系统在过去1分钟、5分钟、15分钟内的平均负载情况
- USER : 用户名
- TTY: 用户登录的终端。tty代表本地,pts代表远程
- FROM:用户从何处登录(“:0″代表用户是从X window下,打开文本模式登录的)
- IDLE: 用户闲置时间。这个是个计时器,当用户输入命令,这个时间会被重置
- JCPU:以终端号来区分,该终端所有相关的进程执行时,所消耗的cpu时间会显示在这里
- PCPU:CPU执行程序消耗的时间
- WHAT:用户目前执行的命令
查看进程信息 ps
ps [选项]
- a:显示所有用户和进程
- u:显示用户名和时间
- x:显示没有控制终端的进程
- e:显示所有进程,包括没有终端的进程
- l:长格式显示
- w:宽行显示,可以使用多个w进行宽行显示
ps使用案例
ps 查看隶属于自己的进程
ps -u (ps -l) 查看隶属于自己进程的详细信息
- PID : 进程号
- PPID: 父进程的进程号
- TTY : 进程启动的终端(pts0/255 代表远程 , ? 代表由系统启动 ,tty1-tty6代表本地字符终端)
- STAT : 进程当前状态(S休眠状态, Ss包含子进程,D不可中断的休眠状态,R运行状态,Z僵死状态,T停止,+位于后台)
- NI : 进程优先级
- TIME: 进程自从启动以后启用CPU的总时间
- COMMAND/CMD:进程的命令名
- USER(UID): 表示用户的名字
- %CPU: 占用CPU时间和总时间的百分比(如果有)
- %MEM: 占用内存与系统内存总量的百分比(如果有)
- VSZ 进程占用虚拟内存大小
- Rss 占用实际内存大小
ps -le (ps -aux) 查看所有用户执行的进程的详细信息
ps -aux –sort pid 可以按照pid等信息进行排序显示
ps -uU 「用户名」 查看系统中指定用户执行的过程
ps -le | grep init 查看指定进程信息
kill终止进程
window下面,我们要结束一个进程,最简单的方式就是关闭这个程序,相应的进程也会随之结束,遇到不能关闭的情况。会打开任务管理器结果掉。那么在linux下如果做呢?我们可以使用kill命令来终止进程。
为什么要杀死进程?(跟windows的原因差不多)
* 该进程点用了过多的CPU时间
* 该进程缩住了一个终端,使其他前台进程无法运行
* 运行时间过长,但没有预期效果
* 产生了过多到屏幕或磁盘文件的输出
* 无法正常退出
kill -9 [进程号] (强行关闭)
kill -l 查看kill编号
关闭图形程序: xkill
当你在终端下输入这个命令时,你的鼠标会变成一个小叉子,你只去点你想要关闭的窗口就可以关闭了
结束所有进程: killall
查找服务进程号: pgrep [服务名称]
关闭进程: pkill [进程名称]
一个存放内存中的特殊目录/proc,其实这是一个伪目录
这个目录比较特殊,他并不在我们磁盘上,而在我们的内存当中;当前系统运行的所有进程都动态的存放在这个目录中,每个编号就是以我们当前进程PID所命令的目录名。
进程的优先级
为什么我们的电脑可以边听音乐,边聊QQ,边上网,甚至还可以同时挂几个游戏。因为我们CPU运行超快。他可以把每个程序的进程排好队,这个执行一下,那个执行一下,因为cpu执行的非常快,所以,我们并感觉不到卡顿,我们会觉得各种程序是并行运行的。
当然,进程也会分个快慢缓急的,所以要对进程分个优先级。同学们在食堂排队打饭,总理来了,这优先级多高啊。同学们纷纷让开,先给总理打。
- 优先级取值范围为(-20,19)
linux给我们提供的优先级的范围为-20到19,我们启动一个进程时,默认的优先级为0 ,-20的优先级为最大,或者说最高。当然,我们在设置的时候可以写-30,但系统默认为-20.
nice命令
指定程序的运行优先级
格式:nice -n command
例如:nice -5 command
renice 命令
改变一个正在运行的进程的优先级
格式: renice n pid
例如:renice -5 777
nohup命令可以在用户退出时继续执行某一进程
一般的命令在用户退登录后就停止执行了,nohup命令可以使进程在用户退出登录后仍旧继续执行,nohup命令将执行后的数据信息和错误信息默认存储到文件nohup.out中
格式:
nohup program &
例子:
[root@bogon cron]# nohup find / -name init* > /root/find.init &
如果我们没指定保存位置的话,系统默认会把查询的结果放到当前目录的nohup.out的文件中。我们一般不会去使用默认方式保存。
进程的挂起与恢复
当我们执行一条命令时,发现太慢或输出内容太多,最常用到的做法就是终止(ctrl+c),那么挂起呢?通俗一点就是暂停呗!^_^!!
进程中止(挂起)和终止
挂起(ctrl+z)
终止(ctrl+c)
进程的恢复:
恢复到前台继续运行(fg)
恢复到后台继续运行(bg)
查看被挂起的进程(jobs)
通过top命令查看进程
它比ps显示的信息更详细。而且是动态的噢,信息每三秒会变动一次哦!
信息的头5行包涵了我们需要了解的系统的健康状态
top - 00:38:08 up 6 days, 5:52, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 68 total, 2 running, 66 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1016396 total, 129184 free, 376052 used, 511160 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 472688 avail Mem
这个是我服务器上的状态,给大家分析一下这些头信息
- 当前时间 , 运行时间 , 用户数 , 系统过去1分钟,5分钟,15分钟的系统负载情况
- Taks : 系统总进程数 , 2个正运行, 66 个处在睡眠 , 0 个终止 , 0 个僵尸进程 ( 没有正确终止 )
- Cpu信息(百分比表示) : us用户占用, sy系统占用, 改变过优先级的用户进程占用的CPU, id :CPU空闲比 , wa等待输入输出占用 , hi硬中断占用 , si软中断 , st虚拟时间百分比
- 4\5行 : 总量 , 空闲量, 使用量, 缓存量
一般着重看CPU空闲和过去系统负载请况
- d : 指定刷新的时间间隔
- c : 显示整个命令而不仅仅显示命令名
- u : 查看指定用户的进程
- k : 终止执行中的进程
- h or ? 获得帮助
- r: 重新设定进程优先级
- s: 改变刷新的时间间隔
- W: 将当前设置写入~/.toprc文件中
查看进程树
pstree [选项]
- -p 显示进程的ID
- -u 显示所属用户
Linux定时任务
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业
查看服务状态 systemctl status crond
一般Linux都安装了此服务
cron在3个地方查找配置文件:
/var/spool/cron/存放的是每个用户包括root的crontab任务,一般一个用户最多只有一个crontab文件。(如下命令也是编辑这个文件)/etc/crontab负责安排由系统管理员制定的维护系统以及其他任务的crontab/etc/cron.d/用来存放任何要执行的crontab文件或脚本
无论是何种配置,都需要编辑,内容格式如下:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
crontab [选项] 通过此命令可以更改我们的任务
- -e 编辑定时表
- -r 清空定时表
- -l 显示所有任务

发表评论
沙发空缺中,还不快抢~