37 进程管理
程序:静态的概念
进程:是程序执行的过程
程序和进程不是一一对应的关系,一个程序可以有多个进程,
前台进程:输入命令,然后执行,用户在这个命令结束之前不能进行其他命令,这个进程叫做前台进程。
后台进程:输入命令,加一个后台执行符,
Find / -name init > /test/init.find&
进程状态:就绪:等待分配cpu的状态。
W查看用户的当前的信息,个别参数讲解
Jcpu 该终所有相关的进程执行时,所消耗的cpu时间
Pcpu cpu执行程序耗费的时间
What 用户正在执行的操作
查看个别用户信息:w 用户名
Load average :平均负载值。分别显示系统在过去1 、5 、15分钟内的平均负载程度,一般平均值在0.8以下就正常
FROM: 如果显示的是:0,表示该用户是从x_window下面登陆的
Idle 表示用户闲置时间
Ps 查看隶属于自己的进程(只能获得自己的最简单的进程信息)
u 或 l 查看隶属于自己进程的详细信息(得到的信息差不多)
ps aux 或le(查看所有内存中正在执行的进程信息)
ps le 可以显示父进程
killall +进程名 关闭所有进程名为你所设置的进程
pgrep httpd 列出所有有关httpd进程的进程号
列出所有与httpd有关的进程 ps aux|grep httpd
列出所有与Httpd和auto有关的进程 ps aux|egreo '(httpd|auto)'
kill –l ‘pgrep httpd’
pkill 服务名称 pkill httpd
关于优先级的命令
Nice 服务在启动的时候改变它的优先级
Nice 优先级的值越小,优先级越大取值范围-20-19
Nice --5 服务名(这里有两个-,第一个是参数,第二个是负数的意思)
在服务不停止的情况下改变优先级
Renice -5 777 将进程号为777的服务的优先级改成-5(这里不用-做参数)
Nohup 让进程在用户推出登陆后依旧可以运行
运行的挂起和恢复
进程的终止(挂起和)
终止:ctrl+c
挂起:ctrl+z 暂停
进程的恢复
恢复到前台继续运行(fg)
恢复到后台继续运行(bg)
Jobs 查看有些被暂停或是后台运行的命令
Top 进程状态显示和进程控制,
d 制定刷新时间间隔信息
c 显示整个命令行而不仅仅显示命令名
这一章主要能掌握,如何查看进程以及杀死进程就可以,ps aux是列出当前程序所有正在执行的进程,ps -l或u是列出当前用户正在执行的进程,其他的还有w列出的信息虽然也有实用价值,但效果我觉得跟ps查出的效果是一样的。
目前还不清楚如何查看当前用户正在执行的程序,当然,可以用ps aux查看所有正在执行的进程
38 计划任务
一次性计划任务 at batch
周期性计划任务 cron
绝对计时方法at 5:30pm at 17:30
相对计时方法at now + 5 minutes
也可以写一个脚本,然后导入
at -l查询系统中有哪些计划任务
定义的计划任务存放在/var/spool/at/
at -d 序号 删除计划任务
如果/etc/at.allow文件存在,那么只有列再次文件中的用户才可以使用at命令;
如果/etc/at.allow文件不存在,则检查/etc/at.deny是否存在,若存在,则在此文件中的用户都不能使用at,
如果两个文件都不存在则只有root才可以使用at命令。如果两个文件都存在而且都为空,则都可以使用at.
batch用法跟at一样,但他在运行的时候,会检测系统的负载值,如果平均值在0.8一下,会执行。如果高于0.8则不执行。
周期性计划任务 crontab
crontab -e
把知道的具体的时间写上,不知道的都写上*,就OK了
分钟 小时 天 月 星期 命令/脚本
命令一定要写绝对路径
0 4 * * * 每天凌晨4备份数据库
0 18 * * 2,5每个星期二和星期五的晚上6点钟做点什么
0 18 * 1-3 2,5 1到3月每个星期二和星期五的晚上六点钟做点什么
每隔两份中检测一下apache是否启动,如果关闭的话就启动
*/2 12-14 * 3-6,9-12 1-5 3月至6月,9月至12月的周一至周五的12点至14点每个两分钟做点什么
在/etc下面的crontab文件里面编辑你要做的操作就可以了
39 文件系统
就像windows一样,windows文件夹下存放系统核心,program file文件下默认存放第三方软件,Linux也有自己的文件系统
1 /usr/bin /bin :存放所有用户可以执行的命令
2 /usr/sbin /sbin 存放只有root可以执行的命令 比如说:关机 添加用户等等命令
3 /home 用户缺省宿主目录
4 /proc 虚拟文件系统,存放在当前内存镜像,在系统启动时自动加载生成
5 /dev 存放设备文件
6 /lib 存放共享库
7 /lost+found 存放一些系统出错的检查结果
8 /tmp 存放临时文件,是一个拥有权限的目录,粘着位,每个用户对它都有写权限的,但只能更改自己的文件
9 /etc 存放系统主要的配置文件
10 /var 包含经常发生变动的文件,如邮件 日志文件 计划任务等
11 /usr 存放所有命令 库 手册等
12 /mnt 临时文件系统的安装点,光盘 优盘
13 /boot 存放系统启动信息,存放了系统当前的内核
就像windows中习惯性的把第三方软件安装在program files文件夹中,linux 我们习惯性的把第三方软件安装在/usr/local
查看分区 df
查看文件大小 du 文件名 加-h 会显示单位 比如 du -h /etc/services
加 s 会显示目录大小 du -sh /etc
检测修复文件系统 fsck e2fsck
比如,异常断电的时候会自动检测系统 fsck -y
判断文件类型 file
/etc/fstab 默认加载的文件系统都存放在该目录下
物理分区名/卷标 挂载点 文件系统 缺省设置 是否检测 检测顺序
40 软件包管理
二进制软件包管理
RPM软件包的一个例子:
sudo_1.7.2pl_5.el5.i386.rpm
其中包括软件名(sudo),版本号(1.7.2pl),发行号(5.el5),硬件平台(i386)
(1)卸载
rpm -e sudo(软件名称,卸载的时候跟的是软件名称,安装的时候跟的是软件包名称,就是那串长的)、
如果其他软件包有依赖关系,卸载时会产生提示信息,可使用--nodeps强行卸载 rpm -e --nodeps sudo
(2)安装
rpm -ivh sudo
i install 这是安装的必备参数
v 表示安装的时候显示安装的详细信息
h hash 显示安装进度
rpm -q 查看一个软件包是否安装
rpm -q sudo
rpm -qa | grep sudo a 表示all,查找所有跟sudo相关的
rpm -V sudo 校验 修改文件内容,加密文件就会改变,比如修改文件所有者,也会显示出改变
源代码包安装
查询文件隶属的软件包 rpm -qf 文件目录
查询在系统中软件包的信息 rpm -qi 名称
查询该软件包在系统中安装了那些文件 rpm -ql sudo
其他安装选项:
rpm -ivh --excludedocs 名称
--excludedocs 将不会安装安装文件中的文档文件
--prefix 指定行安装软件的目录
linux中一般的安装文件目录不允许改变,
--test 只对安装进行测试,不进行安装,比如会不会出现什么问题,有什么依赖关系
--replacepkgs 覆盖安装
升级
rpm -Uvh 软件包名称
yum包管理好处
自动解决软件包依赖关系
方便软件包的升级
安装 yum install 名称
升级 yum check -update sudo 或者yum update sudo
卸载 yum remove sudo
yum list
备份
cp
cp -R 备份目录
-p 保留源文件所有的属性(建议使用)
-u 增量备份
tar
源代码包安装
源代码包安装原理:可以安装在任何的linux平台上,
先解压
1 配置(一般安装软件中都会有configure这样的可执行文件用来配置,是搜索系统信息的过程,生成一些Makefile文件,为后续的编译做准备) 语法:./configure --prefix=/usr/local/proftpd
2 编译 make(源代码不能用,必须要编译成可执行文件,so,make就是调用gcc编译器将源代码编译成文件的过程)
3 安装 make install(说白一点就是将编译生成的文件拷贝到指定目录下,然后生成一些文件就是安装)
卸载默认的低版本环境
脚本安装
如果不是标准的源代码包安装方式,该软件包一定会有一个说明文档,一般叫README或INSTALL,
要查看是否安装了该软件,可以有好多种方法来查找,上面就有介绍,如果是rpm安装的话,直接rpm -q mysql就可以,但如果不知道软件是由那种方式安装的怎么办呢?可以用whereis mysql也可以用find -name / mysql来查找
Debian系linux软件包管理简介