进程管理的作用是判断服务器健康状态,查看或杀死进程
ps aux #查看系统中所有进程,使用BSD操作系统格式
ps -le #查看系统中所有进程,使用linux标准命令格式
-a #显示终端所有进程,除了会话引线
-u #显示进程的归属用户及内存的使用情况
-x #显示没有控制终端的进程
-l #长格式显示
-e #显示所有进程
%MEM #该进程占用物理内存的百分比
%VSZ #该进程占用虚拟内存的大小
%RSS #该进程占用实际物理内存的大小
tty1-6 #本地终端
tty7 #图形界面
pts/0-65536 #远程登录
STAT: s包含子进程, +后台运行
COMMAD #产生此进程的命令名
pstree [选项]: -p:显示进程的PID,-u:显示进程的所属用户
top [选项] #查看系统状态
-d #秒数:指定top命令每隔几秒输出
-b #使用批处理模式输出
-n #次数:指定top命令执行的次数
top 交互模式下
P:以CPU使用率排序
M:以内存使用率排序
N: 以PID排序
top常用命令 top -b -n 1 >/root/top.log #将top的返回结果以批处理的模式输出到top.log一次
buffer 缓冲 加速了数据写入,cache 缓存 加速了数据的读取
kill -l #linux有64个进程信号
kill -HUP 1523 #1523是apache的进程号,重启apache但不是踢掉正在使用apache的用户
pkill [选项][信号] 进程名 #按照进程名终止进程
-t 终端号:按照终端号剔除用户 #pkill -9 -t pts/1 剔除pts/1终端
w #查看本机已经登录的用户
ps -le
#PRI和NI都表示进程优先级,用户只能修改NI的值,不能修改PRI
#NI的值的范围是-20到19,root用户才能设定NI为负值,一般用户只能设置正值
nice [选项] 命令 #给新执行的命令赋予NI值,但是不能修改已经存在进程的NI值,nice -n -5 service httpd start
renice [优先级] PID #renice命令是修改已经存在进程的NI值的命令,例如renice -10 2125
jobs [-l] #查看后台的工作,-l 显示进程的PID
tar -zcf etc.tar.gz & # 把命令放入后台
top #按下ctrl+z快捷键,放在后台暂停
fg %工作号 #把后台暂停的工作恢复到前台进行
bg %工作号 #把后台暂停的工作恢复到后台执行
后台命令脱离登录终端执行的方法
1.把命令放入后台,只能在当前登录终端执行,一旦退出或关闭终端,前台程序就会终止,使用nohup 命令可以使后台命令脱离终端执行,
例如nohup + 命令, 把命令放入后台
2.使用系统定时任务,让系统在指定的时间执行某个后台命令
3.把需要后台执行的命令加入/etc/rc.local文件
vmstat [刷新延时 刷新次数] #命令监控系统资源
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 350004 60148 486420 0 0 3 2 26 23 0 0 100 0 0
r:等待运行的进程数,b:不可被唤醒的进程数,r或b越大表示系统越繁忙
system:系统信息字段
in #每秒被终端的进程次数
cs #每秒中进行的事件切换次数。
CPU: cpu信息字段
id #空闲CPU的百分比,idle
wa #等待I/O所消耗的CPU百分比
sy #内核进程消耗CPU运算时间的百分比
us #非内核进程消耗CPU运算时间的百分比
free [-b | -k | -m | -g] #显示内存状态
cat /proc/cpuinfo #CPU信息
uname -a :查看系统所有相关信息,-r 查看内核版本, -s 查看内核名称
file /bin/ls #借助外部命令的操作位数查看系统位数
dmesg #检查硬件信息,dmseg | grep CPU
uptime #查看当前时间,负载
lsb_release -a #查看发行版本,centOS
lsof #列出进程打开或使用的文件信息
-c 进程名 #列出进程名打开的文件,lsof -c httpd
| more #查询系统所有进程调用的文件,lsof | more
-u #查询某用户的进程调用的文件,lsof -u root
lsof /sbin/init #查询某个文件被哪个进程调用
lsof -p pid #查询pid进程调用的文件
chkconfig --list | grep atd at服务是否安装;serveice atd restart at服务的启动
如果系统中有/etc/at.allow 文件,那么只有写入/etc/at.allow文件中的用户才可以使用at 命令,/etc/at.deny 文件会被忽略;如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny文件的用户不能使用at命令;如果系统中两个文件都不存在那么只有root 可以使用at 命令。
at [选项] 时间, 选项 -m:当at工作完成后,无论是否有命令输出,都用email通知执行at命令的用户;-c 工作号:显示该at 工作的实际内容。时间格式:HH:MM,HH:MM YYYY-MM-DD例如02:30 2013-07-25,HH:MM[am | pm] [month] [date] 例如02:30 July 25,HH:MM[am | pm] + [minutes | hours | days | weeks] ,例如now + 5 minutes。
at now +2 minutes
#在两分钟之后执行hello.sh脚本
at> /root/hello.sh >> /root/hello.log
atq #查询当前服务器上的at工作
atrm [工作号] #删除指定at任务
at 02:00 2013-07-26
#在指定的时间重启
at> /bin/sync
at> /sbin/shutdown -r now
service crond restart #启动crond服务
chkconfig crond on #检查cron 服务是否开启
当系统中有/etc/cron.allow文件时,只有写入此文件的用户可以使用crontab命令,没有写入的用户不能使用crontab命令。同样如果由此文件,/etc/cron.deny文件会被忽略,/etc/cron.allow文件的优先级更高。当系统中只有/etc/cron.deny文件时,写入此文件的用户不能使用crontab命令,没有写入文件的用户可以使用crontab命令。
crontab [选项]
选项:
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
crontab -e
#crontab编辑界面,打开vim编辑工作,格式: * * * * *执行的任务
第一个“×”:一小时当中的第几分钟,范围0-59
第二个“*”:一天当中的第几个小时,范围0-23
第三个“*”:一月当中的第几天,范围1-31
第四个“*”:一年当中的第几个月,1-12
第五个“*”:一周当中的周几,0-7
#特殊符号
* 表示任意时间
,代表不连续的时间,比如“0 8,12,16 * * * 命令”,代表每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围,比如“0 5 * * 1-6 命令”,代表周一到周六的凌晨5点执行命令
*/n 代表每个多久执行一次,比如“*/10 * * * * 命令”,代表每个10分钟就执行一次命令
举例
45 22 * * * 命令 ,每天的22点45分执行
0 0 1,15 * 1 命令,表示每逢每个月的1号和15号或每逢周一执行,而不是每个月的1号和15且这天必须是周一执行;不建议这样设置,1号和15号和周一都是天为单位的,避免混淆。
5 5 * * 2 /sbin/shutdown -r now #每周二的5点5分重启
crontab -l #查看已有定时命令
crontab -r #清楚定时命令
系统的crontab设置
crontab -e 是绑定到每个用户执行的命令;有些定时任务需要系统执行,这时就需要编辑/etc/crontab 配置文件
[root@localhost ~]# vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- 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
# | | | | |
# * * * * * user-name command to be executed