进程管理
Linux进程管理
主要任务:
判断服务器健康状态
查看运行进程
强行终止进程
进程和程序的区别
一动一静
父进程与子进程
老子管儿子,僵尸和孤儿.
前台进程和后台进程
前台进程
例:ping 127.0.0.1 >>ping.result
在Shell提示处打投入命令后,创建一个子进程,运行命令,Shell等待它的
结束,然后才能返回给用户提示符。这条命令在前台运行,用户在它完成
之前不能执行另一个命令
后台进程
例:ping 127.0.0.1 >>ping.result & 将结果保存到ping.result文件
在Shell提示处打入一个命令,若后随一个&,Shell创建子进程运行此命令,
但不等待命令退出,而是直接返回到对用户给出提示。
后台进程必须是非交互式的
常用命令
w
09:49:34 up 4 min, 2 users, load average: 0.42, 0.81, 0.38
服务器时间 开机时长 登录用户数 平均负载:1、5、15分钟(一般0.8以下,说明较轻)
USER 登录用户名
TTY 在哪登录 :0表示XWindow登录
FROM 来自哪里 :0.0 表示来自于XWindow - 表示本地命令行登录
LOGIN@ 什么时候登录的
IDLE 空闲时间
JCPU 该终端消耗的CPU时间
PCPU 正在执行程序消耗的时间
WHAT 正在做什么
ps查看进程信息 (process status)
-a 显示终端下的进程(不含其他用户)
-u 显示用户和启动时间
-x 表示没有控制终端的进程
-e 显示所有进程,包括没有控制终端的进程
-l 长格式显示
应用实例
ps 显示当前用户自己的进程
ps -l 查看隶属于自己的进程详细信息
ps -uU 用户名 查看系统中指定用户执行的进程
ps -le 或 -aux 查看所有用户执行的进程详细信息 用得很多 –aux可以查看到apache进程是哪个用户
通常结合grep使用 如 ps -le | prep httpd 查看apache进程是否启动
/etc/rc.d/init.d/httpd status 通过启动脚本,也能查看进程是否已启动
ps -le --sort pid 可按pid排序
ps –aux | grep jack 查看jack用户的进程
pstree | more 树状结构显示进程
常见选项的含义
PID 进程号 (process id) 1为init 系统第一个进程
PPID 父进程的进程号(parent process id)
TTY 启动的终端 tty1-7本地 1-6字符 7图形 pts/n远程
STAT 进程当前状态: S休眠 D不可中断的休眠 R运行 Z僵死 T停止
NI 进程优先级
TIME 进程自启动以来占用CPU的总时间
COM/COMMAND 进程的命令名
USER 用户名 (ps -uU 用户名)
%CPU 占用CPU时间和总时间的百分比
%MEM 占用内存与系统内存的百分比
start 进程触发时间
time 占用cpu时间
command 进程本身
kill 杀死一个进程
为什么要杀死进程?
- 该进程占用了过多的CPU时间
- 该进程锁住的一个终端,使其它前台进程无法运行
- 运行时间过长,但没有预期的效果
- 产生了过多的到屏幕或磁盘文件输出 例如find / -name "*"
- 无法正常退出
关闭进程 kill 进程号(PID)
apache的httpd有很多个,我们关闭了父进程,子进程将自动关闭
或调用/etc/rc.d/init.d/httpd stop
kill的信号 kill -l可以列出
kill -9 进程号 (强行关闭)
kill -1 进程号 (重启进程)
也可以调用/etc/rc.d/init.d/httpd restart重启apache进程
关闭图形程序 xkill 鼠标按哪儿,将关闭哪儿 点右键取消
结束所有同名进程 killall -9进程名称 (如killall httpd)
以p开头的命令
pgrep httpd 查看httpd进程的所有pid
重启apache进程:kill -1 `pgrep httpd`
pkill httpd 直接关闭httpd进程,不用查pid了
pkill -9 -t 终端号 提出登录用户
ls /proc
存放的是进程信息,数字是以pid为目录名,信息存放在目录中
cat /proc/cpuinfo 查看cpu信息
cat /proc/meminfo 内存信息
cat /proc/partitions 分区信息
优先级命令
nice
指定程序进行的优先级
格式nice n myprogram
例nice --5 /etc/rc.d/init.d/httpd start (默认是0,指定为-5)
ps -le | grep httpd # NI进程优先级
renice
改变一个正在进行的进程的优先级
例renice n pid
优先级取值范围为(-20,19)默认是0 值越小,权越大
ps -le 中,NI就是优先级
让进程在用户退出登录后仍旧继续执行
格式nohup program &
nohup find / -name init* > /root/find.init.20130501 &
把进程放到后台运行 在后面加 &
ping 127.0.0.1 >>/test/ping.result &
另一个终端去查看:
tail -f /test/ping.result
进程的挂起和终止
挂起 ctrl+z 暂停 # ping 127.0.0.1 然后按ctrl+z
终止 ctrl+c # ping 127.0.0.1 然后按ctrl+c
查看被挂起或在后台执行的进程
jobs
进程的恢复
fg 序号 恢复到前右继续运行
bg序号 恢复到后台继续运行
如果是ping命令,在后台运行,也会将信息输出到显示器,
但不影响我们使用其它命令,例如执行ls试试
如果在前台运行,我们无法执行其它命令,需要等这个进程结束后,才可以做别的事情
(3个命令+符号&+快捷键ctrl+z)
top命令
上面的信息,类似于w显示的信息
第一行: 系统当前时间 系统持续时间 登录用户 1,5,15分钟之前的平均负载
第二行:进程总数
第三行:CPU占用率 %id 空闲百分比
第四行:内存使用: 总共 使用 空闲 缓存
第五行:swap使用
下面类似于ps –le信息
内置命令d 然后输入5,将改为每5秒刷新一次
内置命令c 显示整个命令行,而不仅仅显示命令名 command
u 用户名 只显示某用户的信息,管理员可以查看某个用户在做什么,
k 提示输入pid 关闭进程
可以在u查看某个用户时,kill掉用户的bash进程,
将用户踢下线,提示输入 kill的信号,例如9强制关闭
r 调优先级
M 内存排序
P CPU排序
q 退出
h or ? 帮助信息
进程处理方式
standalone 独立运行
xinetd 进程托管
atd、crond 计划任务
standalone 独立运行
如apache、mysql的服务,启动后,进程会一直在系统中,
占用CPU和内存资源,等待或处理客户端的请求
占用系统资源多,但响应速度快
xinetd 进程托管
有些服务,用得很少,没必要独立运行 例如telnet服务
ls /etc/xinetd.d 查看这个目录中有很多脚本
服务不启动,由xinetd监听这个端口,有客户端访问,则启动进程,等服务完成后,结束进程
响应速度慢一点,但减少了系统资源占用
atd、crond 计划任务
每隔一分钟,从休眠中醒来一次,所以,计划任务不能精确到秒。
服务管理
#chkconfig --list
运行级别:0-6
0 关机
1 单用户模式
2 不完全多用户,不包含NFS服务
3 完全多用户 字符界面
4 未分配
5 图形界面
6 重启
init 0 关机 init 5 startx init 3
init 6 重启
runlevel 查询系统当前运行级别
vi /etc/inittab
id:3:initdefault: 定义系统默认运行级别
列出在每一种运行级别下服务是启动还是关闭
chkconfig --list | grep atd 查看计划任务服务
启动服务
RPM包安装的服务:
/etc/rc.d/init.d/服务名 start|stop|restart|status
例/etc/rc.d/init.d/httpd start
service 服务名 start|stop|restart|status
例service network start
自启动
vi /etc/rc.local ---->/etc/rc.d/rc.local
例/etc/rc.d/init.d/httpd start
ntsysv (setup中会调用此工具)
所有系统默认安装服务都可以使用ntsysv命令进行自启动管理
源码包安装的服务:
绝对路径启动
/usr/local/apache2/bin/apachectl start
自启动
vi /etc/rc.local
/usr/local/apache2/bin/apachectl start

浙公网安备 33010602011771号