目录
2.2ps -elf命令(使用长格式,完整的显示系统内所有进程信息)
一.进程 VS 线程
1.1 程序和进程的关系
程序
保存在硬盘、光盘等介质中的可执行代码和数据
文件中静态保存的代码
进程
在CPU及内存中运行的程序代码
动态执行的代码
父、子进程
1.2 线程
线程是操作系统能够进行运算调度的最小单位。
它被包含在进程之中,是进程中的实际运作单位。
一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
二、查看进程
2.1ps aux命令(查看所有进程统计信息)
查看进程数量:(ps aux | wc -l)-1,需要减去一个标题;ps auxh | wc -l
aux
选项以及各列解释
z:僵尸进程含义
一个进程结束了,但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程,因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由init来接管它,成为它的父进程,子进程退出后init会回收其占用的相关资源。但是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。
2.2ps -elf命令(使用长格式,完整的显示系统内所有进程信息)
各列解释
注:谦让度和优先级是一对相反的概念,优先级高的进程会更早被处理,高谦让度意味着低优先级,允许用户设置谦让度。
三、查看进程信息
3.1TOP动态查看进程信息
进程信息区各列解释:
top常用命令:
***总结:
1.哪些命令能够查看load average:top、w、uptime
2.load average的值在上面情况下可认为是异常的:平均负载长时间高于CPU数量的70%时
3.load average平均负载高时可能是CPU密集型进程(大量使用cpu)导致,也可能是I/0繁忙(读写频繁)导致。
3.2系统查看命令总结
3.3pgrep查看进程信息
3.4pstree查看进程树
四、进程的启动方式
4.1手工启动
前台启动:
用户输入命令,直接执行程序
后台启动:
在命令行尾加入“&”符号。默认情况下通过追加 &后台运行的进程会随着终端的关闭而自动退出,
可在命令开头位置添加 nohup(格式为nohup 命令&),可实现后台运行的进程不会随着终端的关闭而自动退出
4.2调度启动
使用at命令,设置一次性计划任务
使用crontab命令,设置周期性计划任务
4.3进程的前后台调度
Ctrl+Z组合键:将当前进程挂起,即调入后台并停止执行;
jobs命令:jobs -l 查看挂起调度到后台的进程列表和序号
fg命令:fg <序号> 将后台进程恢复到前台运行,可指定任务序号;
4.4终止进程的运行kill
Ctrl + C组合键:中断正在执行的命令;
kill、killall命令
kill用于终止指定PID号的进程
killall用于终止指定名称相关的所有进程
kill -9选项用于强制终止
补充:
我们经常会用到kill命令去杀死一个进程,但是有时会出现kill不成功的现象,这时就要用到kill -9。
之所以这两个命令会有区别是因为所发送的信号(signal)是不同的。默认情况下kill命令的参数为-15。
kill -15代表的信号为SIGTERM,这是告诉进程你需要被关闭,请自行停止运行并退出;
而kill -9代表的信号是SIGKILL,表示进程被终止,需要立即退出;
因此kill -9表示强制杀死该进程,这个信号不能被捕获也不能被忽略。
kill -3可以打印进程各个线程的堆栈信息,kill -3pid 后文件的保存路径为:/proc/${pid}/cwd,文件名为:antBuilderOutput.log
总结:如果是让进程自己执行退出离场程序就使用 kill 命令,这样进程可以自己执行一些清理动作然后退出。如果进程卡死,你需要记录当时的事故现场,那么应该用kill-3 来记录事故现场的信息然后退出。如果你什么也不需要,就是要杀死一个进程那么就是用 kill -9 命令,很暴力的杀死它。
4.5根据特定条件终止相应的进程pkil
常用命令选项
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
五、计划任务管理
5.1at命令
一次性计划任务
使用at命令设置的任务只在指定时间点执行一次,若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间;
5.2计划任务管理crontab
按照预先设置的时间周期(分 时 日 月 周)重复执行用户指定的命令操作(绝对路径的命令或者脚本)。
属于周期性计划任务。
主要设置文件。
全局配置文件,位于文件:/etc/crontab
系统默认的设置,位于目录:/etc/cron.*/
用户定义的设置,位于文件:/var/spool/cron/用户名
命令操作:
编辑计划任务:crontab -e [-u 用户名]
查看计划任务: crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]
注;-u缺省时默认是针对当前用户
在使用 crontab前注意:crond的服务是否打开
5.2.1 crontab 的使用方法
crontab 类似vim编辑器一样打开一个配置文件,向配置文件中写入周期任务。但是写周期任务,需要对使用周期时间进行理解和掌握
时间数值的特殊表示方法
* 表示该范围内的任意时间
,表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
实例
1.11月12号 上午8点到10点的第30分钟执行1s -1 /root
30 8-10 12 11 * 1s -1 /root
2.每个月的8号9点半执行1s -1 /root
30 9 8 * * 1s -1 /root
3.每个月每隔5天的凌晨一刻执行1s -1 /root
15 0 */5 * * 1s -1 /root
4.每个月每隔5天的早上八点和晚上八点每隔5分钟执行ls -1 /root
*/5 8,20 */5 * * ls -1 /root
5.每隔两个月的工作日的朝九晚五期间的第30分钟执行ls -1 /root
30 9-17 * */2 1-5 ls -1 /root
实操
输入crontab -e进入编辑页面