进程的查看:ps命令和top命令以及pstree命令
ps命令
ps aux 显示所有进程[一般配合grep使用]
例如:
ps aux | grep httpd 查看Apache进程
ps aux | grep nginx 查看nginx进程
ps -le 显示所有进程(显示进程优先级)
PS命令的输出:
内容 |
作用 |
USER |
该进程是由哪个用户产生的 |
PID |
进程的ID号 |
%CPU |
该进程占用CPU的百分比(占用越高越耗费资源) |
%MEM |
该进程占用物理内存的百分比(占用越高越耗费资源) |
VSZ |
该进程占用虚拟内存的大小(单位:KB) |
RSS |
该进程占用真实内存的大小(单位:KB) |
TTY |
该进程是在哪个终端运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6本地字符界面终端,tty7图形终端。 |
pts/0-255 |
代表虚拟终端。 |
top [选项]
例如:top -b -n 1 > top.log 定向输出到top.log文件中,可以看到更多的信息
top 命令:[在top命令的交互模式可以执行的命令]
?或h |
显示交互模式的帮助 |
P |
以CPU使用率排序,默认为此项。 |
M |
以内存使用率排序 |
N |
以PID排序 |
q |
退出top |
解释:top命令如下5行的含义,客官请看下面的表格
1.任务队列信息:
内容 | 含义 |
top - 21:03:58 |
系统时间 |
3:48 |
系统运行时长 |
2 users |
当前登录用户个数 |
load average 0.00, 0.00, 0.00 |
系统在之前1分钟,5分钟,15分钟的平均负载。一般小于1小时,负载小。如果大于1,系统已经超出负荷[重点] |
2.进程信息状态:
内容 | 含义 |
Tasks: 92 total |
系统中的进程总数 |
1 running |
正在运行的进程数 |
91 sleeping |
休眠的进程 |
0 stopped |
正在停止的进程 |
0 zombie |
僵尸进程,如果不是0,需要手工检查僵尸进程[重点] |
3.CPU信息:
内容 | 含义 |
Cpu(s): 0.1%us |
用户模式占用CPU百分比 |
0.1%sy |
系统模式占用CPU百分比 |
0.0%ni |
改变过优先级的用户进程占用CPU百分比 |
99.8%id |
空闲CPU百分比[重点] |
0.0%wa |
等待输入/输出占用CPU百分比 |
0.0%hi |
硬中断请求服务占用CPU百分比 |
0.0%si |
软中断请求占用CPU百分比 |
0.0%st |
虚拟时间百分比 |
4.内存信息:
内容 | 含义 |
Mem: 1918460k total |
物理内存总量,单位KB |
733684k used |
已使用物理内存 |
1184776k free |
空闲物理内存[重点] |
62880k buffers |
作为缓冲的内存数量 |
5.交换分区(Swap)信息:
内容 | 含义 |
Swap: 2064376k total |
交换分区(虚拟内存)的总大小 |
0k used |
已使用交互分区大小 |
2064376k free |
空闲交换分区大小[重点] |
153956k cached |
作为缓存的交互分区大小 |
杀死进程[注意:不到万不得已的情况下,不要轻易杀死进程]
列出了部分信号的含义,方便使用:
信号代号 |
信号名称 |
说明 |
1 |
SIGHUP |
让进程立即关闭,重新读取配置文件后重启. |
2 |
SIGINT |
程序终止信号,终止前台进程,相当于快捷键ctrl+c. |
8 |
SIGFPE |
发生致命的算术运算错误时发出,不仅包括浮点运算错误,还包括溢出及除数为0等其它所有的算术的错误. |
9 |
SIGKILL |
立即结束程序的运行,本信号不能被阻塞、处理或忽略,一般用于强制终止进程. |
14 |
SIGALRM |
时钟定时信号,alarm函数使用该信号. |
15 |
SIGTERM |
正常结束进程的信号,kill命令默认信号.(假如进程已经发生问题,这个信号无法正常终止进程的,此时会尝试SIGKILL信号). |
18 |
SIGCONT |
让暂停的进程恢复执行,不能被阻断. |
19 |
SIGSTOP |
可以暂停前台进程,相当于快捷键ctrl+z,不能被阻断. |
例如:
killall [选项][信号]后面必须接进程名
例如:
pkill [选项][信号]后面必须接进程名
例如:
注意:用户只能修改NI的值,不能直接修改PRI的值
修改NI时的注意事项:[一般不需要修改,了解就行],如下表格所示
PRI[priority]和NI[nice]这两个值都是优先级,数字越小,代表该进程优先级越高。 |
NI值范围:-20~19 |
普通用户可调整NI范围:0~19,而且只能调整自己的进程,只能调高,不能调低 |
例如:NI为0,只能调大于0 |
root用户才能设置NI的值为负值 |
nice [优先级] PID |
nice不能修改已经存在的进程的NI的优先级 |
renice [优先级] PID
1.简介:在单个登录终端中(登录的shell中)同时管理多个工作的行为。
2.注意事项如下表格:
当前登录终端只能管理当前终端的工作,不能管理其它登录终端的工作。 |
放入后台命令必须可持续运行一段时间,便于捕捉操作这个命令。 |
放入后台命令不能和前台用户有交互或许要前台输入,否则放入后台只能暂停,不能执行。 |
3.把进程放入后台:
top命令执行
4.jobs命令使用
例如:
5.将暂停的工作恢复到前台执行
fg %工作号
参数:
6.将暂停的工作恢复到后台执行[注意:top和vi命令是不可以的]
注意:后台恢复执行的命令不能和前台有交互,否则不能恢复到后台执行。
7.后台命令脱离终端
后台命令脱离登录终端执行的方法:
1.把需要后台执行的命令加入/etc/rc.local文件中[推荐使用] |
2.使用系统定时任务,让系统在指定时间执行某个后台命令 |
3.使用nohup命令[推荐使用] |
开启两个远程终端时可以看到for.sh脚本在运行如下图:
关闭一个远程终端时也可以看到for.sh脚本在运行如下图:
首先看下buff[缓冲]和cache[缓存]区别:
buff[缓冲] | 加速数据写入硬盘 |
cache[缓存] | 加速数据从硬盘读取 |
vmstat [刷新延时,刷新次数][重点] 查看系统的健康状态
例如下图:
每个字段的含义如下表格:
process:进程信息字段 | menory:内存信息字段 | system:系统信息字段 | cpu:cpu信息字段 |
-r:等待运行的进程数,数量越大,系统越繁忙 | -swpd:虚拟内存使用情况(单位:KB) | -in:每秒中断的进程次数 | -us:非内核进程消耗cpu运算时间百分比 |
-b:不可被唤醒的进程数量,数量越大,系统越繁忙 | -free:空余内存容量(单位:KB) | -cs:每秒进行的时间切换次数。 | sy:内核进程消耗cpu运算时间百分比 |
-buff:缓冲内存容量(单位:KB) | -in和-cs这两数越大,系统与连接设备通信非常繁忙。 | -id:空闲cpu百分比[重点] | |
-cache:缓存内存容量(单位:KB) | -st:被虚拟机所盗用的cpu百分比 |
开机时内核检测信息:
例如:
查看CPU信息:dmesg | grep CPU
free命令查看内存使用状态
选项如下表格所示:
选项 | 含义 |
-b: | 以字节为单位显示 |
-k: | 以KB为单位显示,默认为此项 |
-m: | 以MB为单位显示 |
-g: | 以GB为单位显示 |
查看cpu信息如下图所示:
uptime命令
查看系统当前时间,运行时间,登录用户以及负载入下图所示:
uanme [选项]
例如:uname -a
选项如下表格:
选项 | 含义 |
a: | 查看系统所有相关信息 |
-r: | 查看系统内核版本 |
-s: | 查看内核名称 |
lsb_release命令如下图所示:
列出进程打开或使用的文件信息
选项:
命令 | 内容 |
-c字符串 | 只列出以字符串开头的进程打开的文件 |
-u用户名 | 只列出某个用户的进程打开的文件 |
-p pid | 列出某个pid进程打开的文件 |
如下表格所示:
命令 | 作用 |
lsof | more | 查询系统中所有进程调用的文件 |
lsof /sbin/init | 查询某个文件被哪个进程调用 |
lsof -c httpd | 查看httpd进程调用了哪些文件 |
lsof -u root | 按用户名查询某用户进程调用的文件 |
1.at命令 一次性定时任务
at访问机制:
如果系统中有/etc/at.allow文件,只有写入/etc/at.allow文件(白名单)中的用户可以使用at命令(/etc/at.deny文件被忽略) |
如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,写入/etc/at.deny文件(黑名单)中的用户不能使用at命令。对root无效 |
如果系统中两个文件都不存在,只有root用户可以使用at命令 |
查询是否安装: chkconfig --list | grep atd
查看atd状态:service atd status
at [选项] 时间
选项:
例如:at + now 1 minutes
1分钟后执行hello.sh脚本命令:
后面时间的几种写法举例:
写法 | 举例 |
HH:MM | 例如:04:30 |
HH:MM YYYY-MM-DD | 例如:4:30 2018-08-08 |
HH:MM[AM|PM|] [mouth] [date] | 例如:4:30 June 01 |
HH:MM[AM|PM|] [minutes|hours|days|week] | 例如:now + 5minutes 5分钟执行 |
2.cron命令 循环定时任务
crond服务管理与访问控制
访问控制:[root用户除外,毕竟是超级用户]
crontab[选项] 循环定时任务
[手工执行定时任务]
选项:
符号含义如下表所示:
符号含义 | 例子 |
“*”:代表任意时间 | 例如:第一个“*” 每分钟执行一次命令 |
“,”:代表不连续的时间 | 例如:“0,9,12,15 * * *命令” 每天的9:00,12:00,15:00都执行一次命令 |
“-":代表连续的时间范围 | 例如:“0 8 * * 1-6命令” 每周一到周六的上午8点执行命令 |
“*/n”:代表每隔多久执行一次 | 例如:“*/7 * * * *命令” 每隔7分钟执行一遍命令 |
* * * * * *执行的任务 ,"*"的含义如下表所示:
内容 | 含义 | 范围 |
第一个“*”号 | 一小时当中的第几分钟 | 0-59 |
第二个“*”号 | 一天当中的第几小时 | 0-23 |
第三个“*”号 | 一个月当中的第几天 | 1-31 |
第四个“*”号 | 一年当中的第几个月 | 1-12 |
第五个“*”号 | 一周当中的星期几 | 0-7(0和7都代表星期日) |
crontab注意事项:
1.六个选项都不能为空,必须填写。不确定则用“*”代替。 |
2.最小时效为分钟,最大时效是月。 |
3.定义时,最好不要把日期和星期放在一条定时任务中执行,容易混淆。 |
4.定时任务中,不管事直接写命令,还是在脚本中写命令,最好都是绝对路径。 |
系统的crontab设置:
执行系统定时任务的方法
系统定时任务
进入到cron.daily目录: 存放脚本
通过 cd/var/log 可以看到一些旧的日志文件:
3.anacron设置
anacron作用:用来保证在系统关机的时候错过的定时任务,可以在系统开机之后执行。
anacron检测周期:
1.anacron使用一天,七天,一个月作为检测周期 |
2.在系统的/var/spool/anacron/目录中存在cron.[daily|weekly|monthly]文件,用于记录上次执行cron的时间 |
3.和当前时间作比较,如果两个时间差超过了anacron的指定时间差,证明cron任务被执行。 |
Centos 6.x的区别:
1.在老的centos版本中, /etc/cron.[daily|weekly|monthly]这些目录会被cron调用,也会被anacron调用,容易重复执行 |
2.只会被anacron调用,避免重复执行 |
3.anacron不再是服务,而是系统命令 |
-anacron配置文件含义
vi /etc/anacrontab 如下图:
天数 | 强制延迟(分) | 工作名称 | 实际执行命令 |
1 | 5 | cron.daily | nice run-parts /etc/cron.daily |
7 | 25 | cron.weekly | nice run-parts /etc/cron.weekly |
@monthly | 45 | cron.monthly | nice run-parts /etc/cron.monthly |
以cron.daily工作来说明执行过程:
1.首先读取/var/spool/anacron/cron.daily中的上一次anacron执行的时间 |
2.和当前时间作比较,如果两个时间的差值超过一天,就执行cron.daily工作 |
3.执行这个工作只能在03:00-22:00之间 |
4.执行工作强制延迟时间为5分钟,再随机延迟0-45分钟 |
5.使用nice命令指定默认优先级,使用run-parts脚本执行/etc/daily目录中所有可执行文件 |
PS:写到最后,还是想说一句:把自己以前学习的又总结了一遍,感觉收获颇多,特此分享,有不足的地方也请大家指正。
原文:https://www.cnblogs.com/cnwangk/p/dy_wangk.html