Linux服务和进程管理
一, 进程管理
进程管理的三个主要任务:
n 判断服务器的健康状态
n 查看所有正在运行的进程
n 强制终止进程
1, 进程查看
1), ps aux 查看当前系统所有运行的进程(可以不加-)
-a 显示前台所有进程
-u 显示用户名
-x 显示后台进程
命令执行结果示例:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2872 1416 ? Ss 02:53 0:02 /sbin/init
u user: 用户名
u pid: 进程id.PID 1 init 系统启动的第一个进程
u %CPU cpu占用百分比
u %MEM 内存占用百分比
u VSZ 虚拟内存占用量 KB
u RSS 固定内存占有量
u tty 登录终端
tty1-7 本地终端 1-6 字符 7图形
pts/0-255
alt+F1-F7
u stat状态 S:睡眠 D:不可唤醒 R:运行 T:停止 Z:僵死 W:进入内存交换 X:死掉的进程 <:高优先级 N:低优先级 L:被锁进内存 s:含子进程 +:位于后台 l:多线程
u start 进程触发时间
u time 占用cpu时间
u command 进程本身
2, pstree -a 查看进程树
3, top 实时显示进程状态
执行结果:
top - 05:19:47 up 2:26, 1 user, load average: 0.00, 0.00,0.00
Tasks: 87 total, 1 running, 86 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1030800k total, 261228kused, 769572k free, 33620k buffers
Swap: 1023992k total, 0kused, 1023992k free, 147920k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2309 root 20 0 2552 1060 856 R 0.3 0.1 0:00.29 top
1 root 20 0 2872 1416 1200 S 0.0 0.1 0:02.33 init
执行结果说明:
Ø 第一行: 系统当前时间 系统持续时间 登录用户 1,5,15分钟之前的平均负载
Ø 第二行:进程总数
Ø 第三行:CPU占用率 %id 空闲百分比
Ø 第四行:内存使用: 总共 使用 空闲 缓存
Ø 第五行:swap使用情况
操作命令: M 内存排序
P CPU排序
q 退出
2, 终止进程
kill 信号 PID 结束单个进程
-9 强制
killall -9 进程名 结束一类进程
pkill -9 进程名
w 判断登陆用户
pkill -9 -t 终端号 把某个终端登陆的用户踢出
pkill -9 -t tty1 把本地登陆终端1登陆用户踢出
二, 服务管理
1, Linux中服务的分类
1), 系统默认安装的服务 (rpm包)
u 独立的服务
u 基于xinetd的服务,xinetd是系统超级守护进程
² xinetd服务其本身就是一个独立的服务.
² 当程序调用xinetd服务时,它先调用的事xinetd服务,让后xinetd服务在调用索要调用的服务进行相应.
² Linux系统默认是没有安装xinetd服务的,需要进行安装后才能使用.
2), 源码包安装的服务
2, 系统默认安装的服务
1), 如何区分服务的分类
chkconfig --list 查看服务的自启动状态
执行结果:
sshd 0:关闭1:关闭 2:启用3:启用4:启用 5:启用6:关闭
Linux的运行级别:0-6
0 关机
1 单用户模式
2 不完全多用户,不包含NFS服务
3 完全多用户 字符界面
4 未分配
5 图形界面
6 重启
切换系统当前的运行级别:
init 0 关机
init 5 切换到图形界面(前提图形界面已经安装)
init 3 切换到字符界面
init 6 重启
查看当前系统的运行级别:
runlevel 查询系统当前运行级别
通过配置文件修改系统的默认运行级别:
vi /etc/inittab
该文件内容如下:
id:3:initdefault:
修改其中的数字,即可修改成功.
2), 独立的服务管理
启动
第一种方式:
/etc/rc.d/init.d/服务名 start|stop | restart | status
/etc/rc.d/init.d/httpd start
第二种方式:(只支持RedHat系列的Linux)
service 服务名 start| stop | restart |status
(service命令其本质是当命令运行时直接在/etc/rc.d/init.d目录下查找相应的服务,并进行相应的操作.)
自启动
第一种方式:
chkconfig --level 2345 服务名 on|off
第二种方式:(推介)
vi /etc/rc.local (系统启动时会运行该文件)
该文件内容:
touch /var/lock/subsys/local (更新系统的开机时间)
在下一行,写入自己要启动的服务名,比如我要开机自启动httpd服务:
就加入/etc/rc.d/init.d/httpdstart
更改后文件就是:
touch /
var / lock / subsys / local / etc / rc.d / init.d / httpd start
3), ntsysv自启动管理工具
所有系统默认安装服务都可以使用ntsysv命令进行自启动管理.rpm包安装服务,自启动管理工具(只要rpm安装的,都可进行管理)
3, 源码包安装的服务
启动
/usr/local/apache2/bin/apachectl start
自启动
vi /etc/rc.local
/usr/local/apache2/bin/apachectl start
三, 计划任务
首先保证crond服务时启动的(crond默认是自启动的)
命令:crontab
编辑格式: * * * * * 命令
说明:
u 第一个*:一小时中第几分钟 0-59
u 第二个*:一天中第几个小时 0-23
u 第三个*:一个月中第几天 1-31
u 第四个*:一年第几个月 1-12
u 第五个*:一周中星期几 0-6
例:
10 * 31 * * 命令
10 * * * * 命令
5 4 * 5-10 * 命令
*/10 * * * * 命令
5 4 1,15 * * 命令 日期和星期不要同时指定,会超出预期
5 4 10 * 5 命令
*/20 4 * 5 2 命令 每隔二十分钟
查看系统定时任务
crontab -l
删除定时任务
crontab -r
注意事项:
选项都不能为空,必须填入,不知道的值使用通配符*表示任何时间
每个时间字段都可以指定多个值,不连续的值用,间隔,连续的值用-间隔
间隔固定时间执行书写为*/n格式
命令应该给出绝对路径
星期几何第几天不能同时出现
最小时间范围是分钟,最大时间范围是月
四, 查看系统启动信息
dmesg 查看系统启动信息
cat /var/log/dmesg 系统启动信息日志
dmesg | grep eth0 查看eth0信息
dmesg | grep CPU 查看cpu信息
来源: http://lib.csdn.net/article/linux/34530