进程的管理
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
转载于:https://blog.51cto.com/linuxlp/1773319