进程的管理

1.进程的管理:

1)查进程:ps,top,pgrep,pstree

进程是程序运行后产生,需要消耗cpu和内存,分为子进程和父进程,子进程向父进程申请或提交资源。

ps:静态查看进程信息。

常用组合:ps  aux  ##aux前不能有“-”

案例:

ps  aux 

RSS:物理内存,不包括swap,单位KB

VSZ:swap虚拟内存的使用

STAT:S休眠,R运行,Z僵尸,s父进程,l多线程,<高优先级,N低优先级,+前台进程

ps  aux  |wc -l  ##统计进程数量


top:动态管理进程

案例:

top  ##运行,推出使用q

load average:(cpu的平均负载,即cpu队列长度,表示cpu的繁忙程度)1  5  15分钟平均队列长度

zombie:僵尸进程数量

%id:cpu空闲值

buffers:主要硬盘I/O消耗内存,cache进程性能消耗缓存。

两者都是RAM中的数据。简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。

buffer是由各种进程分配的,被用在如输入队列等方面,一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存。

cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提供系统性能。

使用技巧:

杀死进程:k-->pid-->9/15-->回车  (9强制杀死,15正常杀死)

h显示帮助,m安装内存使用排序

cat /dev/zero >/dev/null&  ##增加cpu load使用top查看


pgrep:根据条件查看进程,一般配合pkill使用

案例:

useradd u01

echo 123123 |passwd --stdin u01

使用u01登陆执行:

cat /dev/zero >/dev/null 

切换到root:

pgrep  -l -U u01  ##查看u01用户的所有进程

pkill -9 -U u01  ##杀死u01所有进程

passwd -l u01  ##锁定u01


pstree:树状结构查看进程信息

pstree  -aup  ##a显示详细信息,u显示用户,p进程号


2)启动进程:增

方式:手动和调度启动

a.手动启动

rpm -ivh /mnt/Packages/gpm-1tab

/etc/init.d/gpm  start  ##手动启动服务

top  杀死进程,查看效果

b.手动启动的前后台启动

ping 127.0.0.1  ##前台

ping 127.0.0.1 &  ##后台运行

c.前后台切换

jobs  -l   ##查看后台进程

fg  任务号  ##将后的进程调度到前台

bg  任务号  ##将后台停止的进程运行

ctrl+Z  ##将前台进程暂停并调度后台

案例:

vi  /etc/sysconfig/network-scripts/ifcfg-eth0  ##修改mac地址和系统一致

按下ctrl+z,输入命令:ip  a  查看mac,

fg  ##调出修改,反复操作直到修改正确

jobs -l 


3)杀死进程:删kill,killall,pkill

kill:按照进程号杀死

killall:按照进程名杀死

案例:

jobs -l  ##查看进程号

kill -9  进程号  ##强制杀死

pstree  -aup  ##查看进程名称

killall -9  sshd  ##把所有的sshd进程都杀死,造成误伤,无法远程登录

推荐使用kill -9更安全

/etc/init.d/sshd  restart   ##解决误伤sshd问题,或者reboot重启解决


计划任务

时间的管理,一次性计划任务,周期计划任务

1.时间的管理:

date:用于查看和修改时间和日期

1)查看时间:

语法:date  +%格式

案例:

date  +%F   ##使用年-月-日的形式显示时间

date  +%s   ##从1970.1.1开始到现在的总时间,单位是秒

date  +%H:%M   ##显示小时:分钟,通常和%F配合使用

date  --date="next days"  +%F  ##显示下一天的时间

date  --date="last days"  +%F  ##显示上一天,days可以换为weeks

date  --date="3 days ago"   ##3天前

date  --date="3 days"    ##3天后

2)修改时间:

语法:date MMDDhhmmccyy.ss  ##月份日期小时分钟年.秒

案例:

date  --help  |less -->q退出

date  021220102016.33  


2.一次性计划任务:at

1)了解at:

rpm -qf $(which  at)   ##查看属于哪个软件包

rpm -ql at  ##查看at程序安装的所有软件

/etc/--->配置文件

/bin/或者/usr/sbin/-->命令

/etc/rc.d/init.d/  -->启动脚本

/usr/share/doc/ -->帮助和说明文档

/var/spool/程序名称  -->数据文件目录

at的相关文档介绍:

/etc/at.deny   ##设置拒绝用户使用at命令的配置文件

/etc/rc.d/init.d/atd   ##atd的服务启动脚本,服务必须开启at计划任务才会执行

/usr/bin/at   ##主要命令

/usr/bin/atq  ##计划任务查询命令

/usr/bin/atrm   ##删除计划任务的命令

/usr/share/doc/at-3.1.10/timespec   ##at的时间设置

/usr/share/man/man1/at.1.gz  ##man手册的文件,man1表示系统工具,man5表示配置文件案例,man8管理工具,如man1  man  1  at  ##查看其帮助

/var/spool/at/spool  ##本地存放计划任务的数据文件

2)at计划任务的设置:

at  12:30

at>shutdown -s -t 0

ctrl+D提交

atq   查看

atrm  任务号  ## 删除


2.周期性的计划任务:crond

1)了解crond

软件:crontabs提供系统计划任务内容,cronie主程序负责计划任务的提供。

常用文件:

/etc/cron.deny   ##存放被禁止使用crond计划任务的用户

/etc/init.d/crond  ##启动服务脚本,服务默认设置为开机启动,经常检查是否被修改:chkconfig --list crond

/usr/bin/crontab  ##计划任务设置命令

/var/spool/cron   ##存放最生效计划任务的目录,每个的计划任务被存为一个单独的文件。

/etc/crontab  ##环境配置文件

2)计划任务的设置

语法:

时间  命令

分  时  日   月   周    绝对路径的命令操作

1)时间的表示:

时间表示都以正常表示为准,如周(0-6;0=7周日)

特殊的时间表示:

*  :表示任意时间,可用用在除分钟为的其他区域

- :表连续的时间

/  :表示频率,如*/3放在日位置,表示每个3天

,  :表示不连续时间,1,3,5


案例:

每周六的晚上02:30更新系统:

crontab -e 

按i

30  02  * * 6   /usr/bin/yum  update

:wq

crontab -l  ##查看是否成功

ls  /var/spool/cron/root  ##验证文件


每个季度1号01:30备份系统关键配置:

crontab -e 

30 01 1 */3 * /bin/tar  -Jcf  /opt/sys-bak-$(date +%F).tar.xz  /boot  /etc  /usr/local/

:wq

cat /var/spool/cron/root  ##查看验证

补充:

1、禁用u01用户使用crontab:

vi  /etc/cron

u01

:wq

验证:

su - u01 

crontab -e  ##提示拒绝使用


2.去交互式编写计划任务:每天晚上10:30邮件通知管理员端口监听状态

echo "30 22 * * *  /bin/netstat -utpln |/bin/mail -s "check hostname" 1732647099@qq.com" >>/var/spool/cron/root

crontab -l