您的位置:首页 > 运维架构 > Linux

linux 进程管理

2015-06-20 11:28 429 查看
Linux进程管理
序:
主要学习任务:判断服务器健康状态查看运行进程强行终止进程 进程和程序的区别 一动一静,对应关系-多对多父进程与子进程 老子管儿子,僵尸和孤儿.前台进程和后台进程
前台进程
例:ping 127.0.0.1 >>ping.result
在Shell提示处打投入命令后,创建一个子进程,运行命令,Shell等待它的
结束,然后才能返回给用户提示符。这条命令在前台运行,用户在它完成
之前不能执行另一个命令。

后台进程
例:ping 127.0.0.1 >>ping.result & 将结果保存到ping.result文件
在Shell提示处打入一个命令,若后随一个&,Shell创建子进程运行此命令,
但不等待命令退出,而是直接返回到对用户给出提示。
后台进程必须是非交互式的。
扩展:
watch -n 1 ls -l
监听某个命令执行效果,-n时间刷新频露1s

一、进程常用命令
1、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 正在做什么
2、who 简单查看登陆者信息

3、ps查看进程信息 (process status)
-a 显示终端下的进程(不含其他用户)
-u 显示用户和启动时间
-x 表示没有控制终端的进程
-e 显示所有进程,包括没有控制终端的进程
-l 长格式显示

应用实例
ps 显示当前用户自己的进程
ps-l 查看隶属于自己的进程详细信息
ps uU 用户名  查看系统中指定用户执行的进程
ps -le 或 aux 查看所有用户执行的进程详细信息 用得很多 aux可以查看到apache进程是哪个用户
通常结合grep使用 如 ps -le | grep httpd 查看apache进程是否启动
/etc/rc.d/init.d/httpd status 通过启动脚本,也能查看进程是否已启动
ps -le --sortpid 可按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 进程本身

4、kill 杀死一个进程
为什么要杀死进程?
该进程占用了过多的CPU时间

该进程锁住的一个终端,使其它前台进程无法运行

运行时间过长,但没有预期的效果

产生了过多的到屏幕或磁盘文件输出 例如find / -name "*"

无法正常退出

关闭进程 kill 进程号(PID) apache的httpd有很多个,我们关闭了父进程,子进程将自动关闭 或调用/etc/rc.d/init.d/httpd stopkill的信号 kill -l可以列出kill -9 进程号 (强行关闭) kill -1 进程号 (重启进程)
也可以调用/etc/rc.d/init.d/httpd restart重启apache进程
关闭图形程序 xkill 鼠标按哪儿,将关闭哪儿 点右键取消
结束所有同名进程 killall -9进程名称 (如killall httpd)

5、以p开头的命令
pgrep httpd 查看httpd进程的所有pid重启apache进程:kill -1 `pgrep httpd`pkill httpd 直接关闭httpd进程,不用查pid了pkill -9 -t 终端号 踢出登录用户
6、优先级命令
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就是优先级
7、前后台进程操作
一个符号:
把进程放到后台运行在后面加 & 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[序号] 恢复到后台继续运行 若不加序号,则默认将命令作用于+修饰的进程
8、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 退出
hor ? 帮助信息

9、free –m 查看内存状态

10、查看proc文件下信息
ls/proc
该目录存放的是进程信息,数字是以pid为目录名,信息存放在目录中
cat/proc/cpuinfo 查看cpu信息
cat/proc/meminfo 内存信息
cat/proc/partitions 分区信息

三、进程分类
1、分类

standalone 独立运行
xinetd 进程托管
atd、crond 计划任务

standalone 独立运行
如apache、mysql的服务,启动后,进程会一直在系统中,
占用CPU和内存资源,等待或处理客户端的请求
占用系统资源多,但响应速度快

xinetd 进程托管 (需要独立安装yum -y install xinetd)
有些服务,用得很少,没必要独立运行例如telnet服务
ls /etc/xinetd.d 查看这个目录中有很多脚本
服务不启动,由xinetd监听这个端口,有客户端访问,则启动进程,等服务完成后,结束进程
响应速度慢一点,但减少了系统资源占用

atd、crond 计划任务
每隔一分钟,从休眠中醒来一次,所以,计划任务不能精确到秒。

2、管理
#chkconfig --list 运行级别:0-6 0 关机 1 单用户模式 2 不完全多用户,不包含NFS服务 3 完全多用户 字符界面 4 未分配 5 图形界面 6 重启 init 0关机 init5 startx init 3 init 6重启 runlevel 查询系统当前运行级别 vi /etc/inittab id:3:initdefault: 定义系统默认运行级别 列出在每一种运行级别下服务是启动还是关闭chkconfig --list | grep atd 查看计划任务服务
3、启动服务

RPM包安装的服务:

service 服务名 start|stop|restart|status
例service network start
能被service命令识别是因为,在/etc/rc.d/init.d/下有服务执行脚本
/etc/rc.d/init.d/服务名 start|stop|restart|status
例/etc/rc.d/init.d/httpd 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 进程管理