进程简介
大家都知道,系统是通过进程来完成工作的,每一个进程都有一个独立的进程号,系统通过调用进程号来调度操控进程.
系统的原始进程是init ,init的PID总是1
一个进程可以产生另一个进程,除了init以外,所有的进程都有父进程
大家可以使用pstree 命令看看系统的进程树型结构,pstree可以用来以树状的方式表现进程的父子关系.
image
init 是第一级的,Linux系统上所有运行的东西都可以称之为一个进程。每个用户任务、每个系统管理守护进程,都可以称之为进程。Linux用分时管理方法使所有的任务共同分享系统资源.分时,也就是时间片。
进程状态分为:创建态-就绪态-行动态-结束。
然而我们的系统能够多任务的主要原因就是时间片。一个进程,比如说TELNET的进程,一个进程,比如说TELNET的进程,然后TELNET这个进程就进入就绪态,等待时间片。当CPU分给他的时间片的时间到了的话,他就开始运行,进入运行态.当时间片用玩以后,他就进入阻塞态,然后进入就绪态,等下次CPU分配的时间片。然后又进入运行态.当这个程序运行完了以后,就进入结束态。这就是简单的进程状态流程。
linux的进程树是这样的:KERNEL-0号进程-1号进程(INIT)-子进程
现在我们先不说理论了,我们来看进程
查询进程
查询进程的指令:
ps  [option]
一般我们使用这几个参数
1,不带参数
image
2,l 长列表
image
等下我们来介绍长列表里的含义
3, aux 查看系统所有的进程
image
下面我们讲这个长列表的含义
image
第一个F,image 表示这个进程的标志FLAG,4表示用户为超级用户
第二个S,image 表示这个进程的状态STAT,STAT有这几种状态
ps显示中的STAT,可以为:
R:正在运行。
S:进程睡眠中,通常可以因事件发生而被唤醒。
T:进程已停止。
D:进程睡眠中,除非发生指定事件,否则不会被唤醒。
Z:僵尸进程,例如未能被父进程回收的子进程。通常是一个系统bug或非法操作。
< :高优先级进程。
N:低优先级进程。
UIDimage 这个就是使用者识别码 (ID),当 UID 是0 时,代表这个账号是系统管理员!
PID image 这个进程的ID
PPIDimage 为父进程的ID
Cimage CPU使用的资源百分比
PRI  image PRIORITY(优先级)的缩写,等下我们会详细介绍这个参数
NI image NICE值等下我们也会详细介绍
ADDRimage 这个是核心功能,指出该进程在内存的哪一部分,如果是运行的进程,一般是 - ,-是个标志
SZimage 用掉的内存大小
WCHANimage 当前进程是否正在运行,若为- 表示正在运行,若为 WAIT 就是等待
TTYimage 登陆者使用的终端
TIMEimage 用掉的CPU时间
CMDimage 所执行的命令(也就是用什么命令产生的这个进程)
好了,大家记忆下,这个很重要
下面我们说说 PRI和NI 的关系
当同时有几个进程处于就绪态,CPU会先运行哪个呢?
这就是我们的PRI 优先级所存在的意义了
有个计算公式大家了解下
P(pri)=P(cpu)/2+P(user)+P(nice)+ZERO
其中我们需要注意的就是 P(nice),应为只有这个值是动态的,其他都是静态的,当nice 的值变了,相当与PRI的值也就变了.
下面我们来看看NICE是否会影响进程的优先及,和怎么设置NICE值
以 TOP命令来实验。TOP命令就是常用的动态系统监视工具 
image
然后用HOT KEY :ctrl + z,把这个命令放后台执行,放后台,这个进程虽然暂停了,但是他还在。
image
用ps可以查看
image
用ps -l查看下。他的PRI 是75,NI 是0
image
在说一下,PRI的值越小,他的优先级越高,同理,由刚才公式,大家应该能想到NICE值越小 PRI优先级也就越高了。
NICE 值的范围  -20 到 19 
当NICE为什么的时候,这个进程的优先及相对最高?这个问题很简单耶,-20
我们使用nice -(-NICE或者NICE)  命令,来设置某个命令的优先级别
nice -5 top这个命令就是设置NICE 为5
image
image
nice --5 top这个命令就是设置NICE为-5
image
image
我们来用ps -l看看设置后的效果,这就是相同的命令不同的PRI 
image
我们还可以用renice NICE值  PID号,来改变一个进程的优先级
这个NICE值前面就不用加 - 了,大家看看有什么变化
image
 
控制进程
Kill
语法:kill  [-signal]  PID
向进程传送一个特定的讯号
默认为15(终结)
kill -l:列出所有可以由kill传递的讯号
image
比如关闭TOP的进程
image
这种就属于进程比较顽强的,直接杀是杀不死。我们就需要加个SIGNAL ,-9 的意思就是强制中断 
Kill -9 top
image
Killall命令杀死同一进程组内的所有进程。其允许指定要终止的进程的名称,而非PID。
比如:killall named
lsof -i:端口号 能查出使用这个端口的进程
image
image
用DNS这个进程吧,FTP的进程不明显,现在有两个进程属于DNS的。我们用killall 来杀死他们
image
killall 服务名字,就可以杀死和这个服务相关的所有进程.
进程的优先级
进程的优先级,用nice值来表示
nice:以一个不同的nice值来运行指令
nice –(num/-num) command
renice:改变一个运行进程的nice值
renice num/-num pid
前台和后台
默认情况下,一个命令执行后,此指令将独占shell,并拒绝其他输入。我们称之为前台进程。反之,则称为后台进程(在进程的后面加上&符号就可将此命令产生的进程放入后台执行)。
对每一个控制台,都允许多个后台进程。
对前台/后台进程的控制与调度,被称为任务控制。
如果是前台的进程,我们还可以使用ctrl+c来中断,top进程的事实监视工具,是个前台进程,独占终端。我们要结束这样的进程,就可以使用ctrl+c
image
ctrl+c 是中断
ctrl+z是放入后台执行
我告诉大家一个窍门吧,我们在用VIM 编辑一个配置文件的时候,比如:ifcfg-eth0
image
这样他就独占终端了,在图形界面下这个都没什么,在开一个终端就行了
image
在CLI模式下麻烦了,这种情况下就是独占终端了,意思就是这个终端不能在做其他的工作
你想要同时执行其他命令,有两种方法:可以是关闭这个文件或者用 ctrl+FX(FX X指的就是1-6哈)切换到其他终端来执行命令。
但是关闭文件后我们执行了命令要继续编辑这个文件,就需要从新打开这个文件,很麻烦。切换终端就更麻烦了
所以我们就需要使用ctrl+z 把独占终端的程度放后台执行。系统会提示你一个进程放在后台了,并且暂停了
image
我们可以使用jobs来查看后台有几个进程。
image
然后使用 #fg  后台进程号,来把这个进程拉回前台 ,默认的是第一个,所以可以不用加进程号
image
这样,我们就可以接着刚才的文件继续编辑
image
这个技巧就是一个HOTKEY ,2个命令:
ctrl+z 把独占终端的进程放后台去执行
jobs 查看后台的进程 (自己知道有哪些进程就不用查看)
fg   把后台的拉回前台 
一个热键两个命令就可以实现这个技巧
工作
jobs:列出系统当前的后台进程
image
fg:将后台进程拉回前台
image
bg:激活后台暂停的进程
image
PROC目录
/proc目录是一个虚拟的文件系统,包含了来自正在运行着的核心的信息,这个目录里面的文件是不占用磁盘空间的,他是存放在内存条里滴,也就是包括系统当前的内核,进程。都在这个里面,我们先进入这个目录,看看这个目录里面有什么东西.
image
这些数字代表什么东西?PID也就是进程号
我们以前不是讲过么,init的进程号是1,这就1号进程的内容了
image
/proc/kcore 这个文件是当前运行内核的一个镜像
用户可以通过cat /proc/下的文件,来获得系统的信息
这些信息包括系统硬件、网络设置、内存使用,及其他一些东西
/proc下常用的文件给大家介绍下:
/proc/interrupts:IRQ设置
image
/proc/cpuinfo:CPU信息
image
这个CPU信息很有意思,我们来看下 ,对硬件有研究的会员应该一眼就能看出门道吧
/proc/meminfo:系统内存使用状况
image
这就是内存的使用信息。free 之类的工具都是调用的这些数据,你在这看最直接,而且信息很全面.
/proc/ioports:输入输出设置
image 
/proc/dma:DMA设置
image 
/proc/loadavg:系统负载平均值
image 
/proc/uptime:系统运行时间与空闲时间
2个数字的意义,第一个数值代表系统总的启动时间,第二个数值则代表系统空闲的时间,都是用秒来表示的。
image
94.866%的时间都是空闲的。几乎没干活,HOHO
/proc/version:Linux核心版本、创建主机、创建时间等
image 
以下是常用的目录:
/proc/scsi:scsi设备信息
image 
/proc/ide:ide设备信息
image 
/proc/sys:核心配置参数
/proc/sys目录下的文件,允许系统管理员更动,这些变动会直接影响当前核心
image
/proc/<PID>:进程的信息 
这个内容都比较全,但是也不容易懂 ,一般用户查看的时候还是用工具比较好
下面我们说说临时禁PING,cd 到sys 当前系统的目录下
image
里面就是系统的一些状态信息了。我们关注网络方面的,给大家看看这里文件什么样子,要想对这里面的问题动大手术,我能力可能就不够了,还要修炼一下哈。
我们关注IPV4
image
这些就是IPV4 的一些设置和功能
image
比较常用的两个:
icmp_echo_ignore_all 禁PING用的
ip_forward 转发数据用的
以后做iptables和代理服务器的时候ip_forward一定要设置为转发状态
我们用 cat 命令来查看这两个文件的内容
image
内容是0,感觉有点象注册表。介绍下0和1的意思:
0,代表禁止这个功能,也就是允许ping
1,代表允许这个功能,也就是禁止ping
我现在用我的XP PING我的LINUX
image
下面我们让他PING不通,就是把0改成1
image
现在我们再PING下看看哈,不通了哈
image
现在已经PING不通了,修改PROC目录的文件是马上生效的。切记
我们在用自己PING自己,连自己PING自己都不行了,但是PING我的XP还是可以的
image
我们再看看XP能不能使用LINUX的服务,我们用TELNET做实验,是可以的 
 
如果你想取消这个功能可以把刚才的值改成0就行了或者从新启动,因为RAM是随即存储,要想实现永久的禁PING可以去我BLOG查看相关文章
系统日志
系统日志记录着系统运行中的记录信息
在服务或系统发生故障的时候,通过查询系统日志,可以帮助我们诊断。
系统日志可以预警安全问题
系统日志一般都存放在/var/log目录下
image
常用系统日志:/var/log/messages和/var/log/secure
通常的系统和服方面的信息在这个里都可以找到
/var/log/messages 日志是核心系统日志文件。
image
image 前面是日期,懂点英语的都能看出来
image 这是时间
image 是主机名字
image 然后是进程
image 就是日志信息了
它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO 错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为root,也在这里列出。如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。通常,/var/log/messages 是您在做故障诊断时首先要查看的文件。
由于系统服务都在里面,所以你直接看这个文件你可能看不懂,应为你不知道这个进程或者服务到底有什么用处 
下面我们用tail -f /var/log/messages 这个命令来看日志,加参数-f实时显示后10行的信息
 
我们来看看我的日志最后是什么?这是我们telnet登录的日志,大家能看懂吗?这个主要靠英语了,和技术性无关
下面我把NFS服务器开启,看这个会出现什么效果
这就是NFS的启动过程,NFS在LINUX下的服务名字就叫NFSD ,也产生了新的进程。还有就是NFSD的启动全过程
下面我看看我的DHCP服务器能否工作
这边日志就出现了关于DHCP的进程,如果启动失败,你也到这里看哪步出了问题了,
 
我用DHCLIENT 获取个动态地址,这就是DHCP工作原理
  
 
大家自己看看吧 
像一些特殊的服务他就有专门的日志
/var/log/xferlog,此日志用于记录所有由ftp服务汇报的讯息和报错
/var/log/secure,此日志包含了所有与系统相关的讯息,诸如登录,tcp_wrapper与xinetd服务。
/var/log/wtmp,系统的每一次登录,都会在此日志中添加记录。为了防止有人篡改,该文件为二进制文件。只能用last这一类的指令来读取。
所以不是所有的日志都可以在messages里面查看,具体要看你某个服务器的配置文件而定
/var/log/secure 安全信息
image
系统登录与网络连接的信息
这个就是与系统安全相关的日志都放这里了 
 
telnet 不上去了,谁告诉什么原因? 
 
大家还记的刚才我做了什么操作吗?我用dhclient,我自动获取了一个IP,IP地址变了
刚才我不是演示日志文件的时候,用DHCLIENT获取过IP么?
 
我们从新启动下网络
 
这样自动获取的就消失了,变成我自己以前手工配置的了
 
  
好了,进入了。
 
我们再看看安全日志,数下增加了几条日志?是2条哈,1是建立会话,2是登陆成功,就这两条
 
第二条的意思就是michael这个用户从qg07登陆到 pts/4 这个终端, 时间就是 1月16号 10点05分23秒
离开系统
好象关机是件简单的事情,但是你处理不好的话,你服务器就会瘫痪,好多服务器经常会由于关机方式不正当而造成文件丢失,甚至系统崩溃,所以做为技术员,一定要重视这个细节
重启:

reboot
shutdown -r now
init 6
建议使用前两个。第三个不建议使用

关机:
halt
shutdown -h now
poweroff
init 0
关机,系统分以下四个步骤:
1、把RAM中数据寸盘,也就是同步
2、关闭服务
3、卸载目录和分区
4、关闭根进程和关闭电源
你关闭系统,系统会自动卸载 fstab中的分区,除了你自己关电源,系统一般会帮你完成这个动作的,但是也有可能系统的关机程序会出问题,导致没有完成这些步骤。所以我们要做的就是sync 手动同步数据,把RAM的数据手动写到硬盘里去,然后再关机,比较稳当。
image
sync3次就足够了,用了命令要稍等在关机,写数据有个时间。
运行级别
系统分成7个运行级别,不过有用的是前6个,后面的7是系统保留,为LINUX发展备用的,还没有定义
0 是关闭系统
1 是单用户维护模式
2 是不带NFS的CLI界面模式
3 是功能齐全的CLI模式
4 也是没有定义的
5 是图形界面模式
6 是重新启动模式
所以 init 0可以关机,就是运行0级,init 6 就是运行6级别,可以重启动
为什么说 init 6 没有reboot启动安全呢?好象是他没有同步数据之类的操作。我们来试试看。
image
看吧,系统什么都没停下来,还有警告
image
这样系统很容易出问题,从刚才的警告我们就知道了init 6 是不安全的,在你们自己公司的服务器,千万不要这样弄。容易出事
系统重新启动,先就是挂载的FSTAB里面的分区
image
image
image
你们能看懂这个就知道系统的启动步骤。
###########################################################################################