Linux学习——进程学习笔记

一、进程相关常用命令

w

w

显示信息的含义:
① load average:分别显示系统在过去1,5,15分钟内的平均负载成都
② FROM:显示用户从何处登录系统,“:0”代表该用户是从X Window下打开文本模式窗口登录的
③ IDLE:用户闲置的时间。这是一个计时器,一旦用户执行任何操作,该计时器便会被重置
④ JCPU:以终端代号来区分,也就是TTY,该终端所有相关的进程执行时所消耗的CPU时间会显示在这
⑤ PCPU:CPU执行程序消耗的时间
⑥ WHAT:用户正在执行的操作

ps 查看隶属于自己的进程

-a:显示所有用户的进程
-u:显示用户名和启动时间
-x:显示没有控制终端的进程,即系统进程
-e:显示所有进程,包括没有控制终端的进程
-l:长格式显示
-w:宽行显示,可以使用多个w进行加宽显示

ps -aux
ps-aux
ps -uU practice
ps -uU
ps -l
ps -l

字段 含义
PID 进程号
PPID 父进程进程号
NI 进程优先级
TTY 进程启动的终端
STAT 进程当前状态:S-sleeping休眠,D-dormant sleep不可中断的休眠状态,R-running运行状态,Z-zombie僵死状态,T-stop停止

ps -le | grep pid 查看制定进程信息
ps -le | grep pid
pstree 查看进程树,父子关系一目了然
pstree

kill 杀死进程

kill pid
kill -l 列出 kill 的所有信号
kill -9 pid 强行关闭
kill -1 pid 重启进程
xkill 关闭图形程序,当窗口无法关闭时,可以在启动程序目录下执行xkill来强制关闭
pgrep 服务名称 查找服务进程号,会列出该服务的所有进程号
pkill 进程名称 进程名称即CMD字段所对应的信息,关闭程序

kill -l
kill-l
pgrep ssh
pgrep
pkill ssh
pkill

nice && renice优先级,范围(-20,19),值越小,优先级越高

nice :指定程序的运行优先级
格式:nice -n N command
例如:nice -n -1 vi & 将ssh的运行优先级设为-1
nice-n

renice:改变一个正在运行的程序的优先级
格式:renice n pid
例如:renice 2 31096 将pid为31096的程序的优先级改为2
renice

nohup 使进程在用户退出登录后仍旧继续执行,将执行后的数据信息和错误信息默认存储到文件~/nohup.out中

格式:nohup programe 前台执行
nohup programe & 后台执行

chmod a+x sleep50.sh
nohup ./sleep50.sh &
exit
ps -al

nohup
exit
nohup1

nohup.out文件
nohup.out

top 进程状态显示个进程控制,每5秒自动刷新一次(交互式,每次输入一个值)

d 指定刷新的时间间隔
c 显示整个命令行,而不仅仅显示命令名
u 查看指定用户的进程
k 终止执行中的进程
h or ? 获得帮助
r 重新设置进程优先级
s 改变刷新的时间间隔
W 将当前设置写入 ~/.toprc文件中

这个命令显示的是实时信息,输入交互字母(上面①-⑧中的字母)后在图中方框处继续输入要修改的值即可
top

/proc 文件夹

进程都是在内存当中的,而内存中的数据又都是写入到/proc文件夹下的,每个进程的信息都在以该进程pid命名的文件中,在这里还可以查看cpu,memory等信息
/proc

memory

进程的挂起与恢复

中止(挂起,暂停):Ctrl + Z
终止:Ctrl + C
恢复:
查看被挂起的进程 jobs
恢复到前台继续运行 fg jobNum
恢复到后台继续进行 bg jobNum

ps -l
top
Ctrl + Z
jobs
fg 1
Ctrl + Z
bg 1
ps -l

ps

fg

bg

二、计划任务

敲黑板划重点,这里很重要!!!
计划任务分为三种类型:
(1)at:一次性计划任务
(2)batch:系统负载不重时执行一次
(3)cron:周期性计划任务

接下来,挨个解释
(1)at:安排一个或多个命令在指定时间运行一次,命令要用绝对路径
1) at [-f file] 时间
这里需要注意的是时间怎么写,时间的书写方式分为 绝对计时方法相对计时方法

绝对计时方法
① midnight(00:00),noon(12:00),teatime(下午茶时间,16:00),AM,PM这些词都可以用
② hh:mm [today] 不写方括号里的的话,默认是today
③ hh:mm tomorrow
④ hh:mm 星期
⑤ hh:mm MM/DD/YY 也可以指定月/日/年

相对计时方法
① now + n minutes
② now + n hours
③ now + n days
③ now + n weeks

输入完成之后以Ctrl+d结束
(以下例子纯是为了看实际怎么敲,没有实际意义)
at1
at_2

at_3
at执行的结果不会打印到屏幕上,要想看一下,可以输出到文件里
at+1

at_file
2)at -l or atq 查看计划任务
atq
3)at -d 序号 atrm 序号 删除计划任务
at-d

atrm

4)at 配置文件:用来限制哪些用户可以使用at命令
① /etc/at.allow
② /etc/at.deny
①存在,②不存在时,只有①里的用户才可以使用
①不存在,②存在时,只有②里的用户不可以使用
都不存在时,只有root才可以使用
都存在,且都为空时,则所有用户都可以使用

(2)batch:安排一个或多个命令在系统负载教轻时运行一次(一般情况下,负载矫情指平均负载降到0.8以下)
使用方法同at

(3)crontab:用于生成cron进程所需要的crontab文件
命令:
1)crontab -l :list,显示当前的crontab
2)crontab -r:rm,删除当前的crontab文件,如果只想编辑一条计划任务,需要编辑crontab文件,将对应条目删除
3)crontab -e:使用编辑器编辑当前的crontab文件,将命令写入crontab文件里

crontab -e   //打开文件
04 10 * * 1-5 /usr/bin/wall < /etc/issue  //写入计划任务

使用xshell登录到服务器:运行结果如下:
crontab
这里计划任务中时间格式如下:
分钟 小时 天 月 星期 命令/脚本
(为什么不能指定秒呢?计划任务是每隔一分钟从休眠中醒来,检查一下是否有计划任务,有就执行,没有就继续休眠,所以不能精确到秒)
时间填写方法把知道的具体时间填上,不知道都填*
举例

分钟 小时 星期 命令/脚本 含义 备注
0 18 * * 2,5 /sbin/shutdown -h now 每周二周五18:00执行关机操作 不连续的时间可以用”,”隔开
30 18 * 1-3 2,5 /usr/bin/wall < /etc/issue 一到三月的每周二周五18:30广播/etc/issue文件里的内容 连续的时间可以用”-“拼接
*/2 17 * * 1 /usr/bin/top 每周一17点时每隔两分钟执行一次top命令 */2代表每隔两分钟

注意
① 每一项都不能为空,必须填入
② 如果用户不需要指定其中的几项,可以使用通配符*表示任何时间
③ 每个时间字段都可以指定多个值,他们之间用逗号间隔
④ 命令要用绝对路径
⑤ 用户必须具有运行对应命令或程序的权限

三、必备基础知识

这部分记一些有关进程的基础知识

程序 vs 进程

程序: 静态概念,本身作为一种软件资源长期保存
进程: 动态概念,程序的执行过程,有一定的生命期,是动态产生和消亡的
ps:程序和进程没有一一对应的关系。一个程序可以有多个进程共用;一个进程在活动中有可能顺序执行若干个程序

父进程 和 子进程

(1)子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程
(2)Linux中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境
(3)父进程终止,子进程自然终止。若发生意外:
① 父进程终止,子进程未成功终止,则称子进程为孤儿进程
② 父进程未终止,子进程终止,父进程不知道,还会尝试与子进程联系,则此时的父进程称为僵尸进程

前台进程 和 后台进程

前台进程:
① 在shell中敲入命令后,创建一个子进程,运行命令,shell会等待命令退出之后再返回到给出提示符。
② 这条命令与shell异步运行,即在前台运行,用户在完成之前不能执行另一个命令
后台进程:
① 在shell中敲入命令后,若命令后跟随一个&,shell创建的子进程运行此命令,但不等待命令退出,而直接返回到给出提示符。
② 这条命令与shell同步运行,即在后台运行。
③ 后台进程必须是非交互式的

进程状态

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

进程状态细化
用户态运行:在CPU上执行用户代码
核心态运行:在CPU上执行核心代码
在内存就绪:具备运行条件,只等调度程序为它分配CPU
在内存睡眠:因等待某一事件的发生,而在内存中排队等待
在外存就绪:就绪进程被交换到外存上继续处于就绪状态
在外存睡眠:睡眠进程被交换到外存上继续等待
在内存暂停:因调用stop程序而进入跟踪暂停状态,等待其父进程发送命令
在外存暂停:处于跟踪暂停态的进程被交换到外存上
创建态:新进程在被创建,但尚未完毕的中间态
终止态:进程终止自己
进程状态细化

进程处理方式

(1)standalone:独立运行,一直处于启动状态,响应快
(2)xinetd:进程托管,inetd是会联网超级守护进程,xinetd是它的升级版,有请求时才启动,用完就关掉,响应慢
(3)atd、crond:计划任务,每隔一分钟从休眠中醒来,检查一下是否有计划任务,有就执行,没有就继续休眠

发布了44 篇原创文章 · 获赞 82 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/wenyun_kang/article/details/77755729