进程管理和计划任务

一、进程的概念;

总结:程序是保存在硬盘中的可执行代码或数据的静态集合; 进程是cpu及内存中处于动态执行状态的计算机程序; 进程由程序运行后产生,需要消耗cpu和内存,分为父子进程,子进程向父进程申请或提交; 线程:包含在进程中的一个实体,与所在的进程共用计算机资源,(单线程(串行)、多线程(并行));

二、进程的管理:增(启动)、删(杀死或关闭)、查(显示进程)

查:查找进程 ps/top/pgrep/pstree 1.语法:ps aux ##静态查看进程 RSS:物理内存,不包括swap,单位kb VSZ:虚拟内存 STAT:进程状态,R运行、S休眠、Z僵尸、s父进程、1多线程、<高优先级、N低优先级、+前台进程 2.语法:top ##动态显示进程的列表,相当于windows下的任务管理器,q退出,h帮助,k杀死。 top交互式中的基本操作: k--输入要杀死的PID--9代表强制杀死--15代表正常杀死(windows关机时 有未关闭的程序时的提醒) 大写P按cpu使用情况进行将进程排序 q退出 3.补充知识:清除内存的缓存命令 echo 3 >/proc/sys/vm/drop_caches 4. pgrep命令 :按条件查看进程; 语法:pgrep -l 关键字 ##查看包含关键字的进程 pgrep -l -u 用户名 ##查看该用户的进程 5.pstree命令:树形显示进程列表,显示包含其子进程; 语法:pstree -aup ##查看当前系统的进程树 pstree -ap 用户名 ##查看某用户的进程树 增:启动进程 (举例:ping命令) 1.启动方式: 手动启动:手动执行命令进行开启进程; 调度启动:根据任务计划定时自动启动进程; 2.进程类型: 前台进程:在界面运行,必须等待结束后才能继续执行命令; 后台进程:不在操作界面运行。 3.前后台进程的管理: 启动前台进程: 启动后台进程:在运行命令后加上 &,将现在运行的进程放到后台运行;例:cat /dev/zero >/dev/null & 挂起前台进程到后台:ctrl z 将正在运行的前台进程调到后台并暂停; 查看后台进程:jobs -l 恢复后台进程到前台:fg 后台进程编号(并非pid) 将后台暂停的进程调到前台继续运行 删:停止进程 kill/killall/pkill 1.ctrl c ##终止前台正在运行的进程 2.kill -9 PID ##强制终止单个进程 3.killall -9 进程名 ##强制终止此进程名称的所有有关进程 4.pkill -9 -u 用户名 ##针对此用户的所有进程强制终止

三、计划任务的概念:

1.概念:实现进程调度管理,在特定的时间(时间点)完成特定的任务(命令); 作用:周期性备份、定期更新系统、完成某一个特定的任务;

四、一次性计划任务管理:at

1.一次计划任务编写流程: 启动atd服务-->at(时间:例:at 00:17 2017-11-1)-->任务(命令)-->ctrl+d(提交)-->atq(查看)-->atrm 任务编号(删除) 五、周期性计划任务的管理; 1.了解crond:周期性执行命令,由crontabs软件提供系统计划任务内容;crond提供程序或用户自定义计划任务。 2.计划任务的格式:分 时 日 月 周 要执行的命令 ##用户可以不指定,默认为root用户 3.时间的表示:所有时间为正常标准,特殊的表示以下: :表示任意时间,可用在除分钟外的其他时间 -:表示连续的时间 /:表示时间的频率,如/3表示每隔3 ,:表示不连续的时间,如1,3,5 4.设置周期性计划任务的方式: crontab -e -u 用户 -->时间 命令-->:wq --> crontab -l -->crontab -r (删除用户的所有计划任务) echo‘时间 命令’>>/var/spool/cron/用户名 --> crontab -l (查看) 5.案例: 每天早上7:50自动开启sshd服务,22点50时关闭

50 07 * * * /usr/bin/systemctl start sshd >/dev/null 2&>1

每隔5天清空一次FTP服务器公共目录/var/ftp/pub
* * */5 * * echo  ' ' >/var/ftp/pub >/dev/null 2&>1
每周六的7:30时,重新启动httpd服务
30 07 6 * * /usr/bin/systemctl restart httpd >/dev/null 2&>1
每周一、三、五的17:30时,打包备份/etc/httpd目录
30 17 * * 1,3,5 /bin/tar zcvf /tmp/httpd-$(date +%F).tar.gz /etc/httpd/  >/dev/null 2&>1