一、进程相关常用命令
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 -uU practice
ps -l
字段 | 含义 |
---|---|
PID | 进程号 |
PPID | 父进程进程号 |
NI | 进程优先级 |
TTY | 进程启动的终端 |
STAT | 进程当前状态:S-sleeping休眠,D-dormant sleep不可中断的休眠状态,R-running运行状态,Z-zombie僵死状态,T-stop停止 |
ps -le | grep pid 查看制定进程信息
pstree 查看进程树,父子关系一目了然
kill 杀死进程
① kill pid
② kill -l 列出 kill 的所有信号
③ kill -9 pid 强行关闭
④ kill -1 pid 重启进程
⑤ xkill 关闭图形程序,当窗口无法关闭时,可以在启动程序目录下执行xkill来强制关闭
⑥ pgrep 服务名称 查找服务进程号,会列出该服务的所有进程号
⑦ pkill 进程名称 进程名称即CMD字段所对应的信息,关闭程序
kill -l
pgrep ssh
pkill ssh
nice && renice优先级,范围(-20,19),值越小,优先级越高
nice :指定程序的运行优先级
格式:nice -n N command
例如:nice -n -1 vi &
将ssh的运行优先级设为-1
renice:改变一个正在运行的程序的优先级
格式:renice n pid
例如:renice 2 31096
将pid为31096的程序的优先级改为2
nohup 使进程在用户退出登录后仍旧继续执行,将执行后的数据信息和错误信息默认存储到文件~/nohup.out中
格式:nohup programe
前台执行
nohup programe &
后台执行
chmod a+x sleep50.sh
nohup ./sleep50.sh &
exit
ps -al
exit
nohup.out文件
top 进程状态显示个进程控制,每5秒自动刷新一次(交互式,每次输入一个值)
① d 指定刷新的时间间隔
② c 显示整个命令行,而不仅仅显示命令名
③ u 查看指定用户的进程
④ k 终止执行中的进程
⑤ h or ? 获得帮助
⑥ r 重新设置进程优先级
⑦ s 改变刷新的时间间隔
⑧ W 将当前设置写入 ~/.toprc文件中
这个命令显示的是实时信息,输入交互字母(上面①-⑧中的字母)后在图中方框处继续输入要修改的值即可
/proc 文件夹
进程都是在内存当中的,而内存中的数据又都是写入到/proc文件夹下的,每个进程的信息都在以该进程pid命名的文件中,在这里还可以查看cpu,memory等信息
进程的挂起与恢复
中止(挂起,暂停):Ctrl + Z
终止:Ctrl + C
恢复:
查看被挂起的进程 jobs
恢复到前台继续运行 fg jobNum
恢复到后台继续进行 bg jobNum
ps -l
top
Ctrl + Z
jobs
fg 1
Ctrl + Z
bg 1
ps -l
二、计划任务
敲黑板划重点,这里很重要!!!
计划任务分为三种类型:
(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结束
(以下例子纯是为了看实际怎么敲,没有实际意义)
at执行的结果不会打印到屏幕上,要想看一下,可以输出到文件里
2)at -l or atq 查看计划任务
3)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登录到服务器:运行结果如下:
这里计划任务中时间格式如下:
分钟 小时 天 月 星期 命令/脚本
(为什么不能指定秒呢?计划任务是每隔一分钟从休眠中醒来,检查一下是否有计划任务,有就执行,没有就继续休眠,所以不能精确到秒)
时间填写方法:把知道的具体时间填上,不知道都填*
举例:
分钟 | 小时 | 天 | 月 | 星期 | 命令/脚本 | 含义 | 备注 |
---|---|---|---|---|---|---|---|
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:计划任务,每隔一分钟从休眠中醒来,检查一下是否有计划任务,有就执行,没有就继续休眠