鸟哥的Linux私房菜 基础学习篇 读书笔记(三)
十四. Linux的账号与用户组虽然登录Linux主机的时候,输入的是我们的账号,但是,其实Linux主机并不会直接认识账号名称,它仅认识ID。ID就是一组号码。主机认识的是数字,账号只是为了让人们容易记忆而已。ID与账号的对应关系就在/etc/passwd中。每个登陆的用户至少会取得两个ID,一个是用户ID(User ID,简称UID),一个是用户组ID(Group ID,简称GID)。
如何登录Linux主机:当我们在主机前以telnet或者ssh登录主机时,系统会出现一个login画面让您输入账号,这时输入账号与密码后,Linux就会:
1. 先找/etc/passwd里是否有这个账号?如果没有则退出,如果有,则将该账号对应的UID与GID读出来,并将该账号的家目录与shell设置也一起读出。
2. 然后核对密码表。这时Linux会进入/etc/shadow中查找对应的账号与UID,然后核对刚才输入的密码与里面的密码是否相符?
3. 如果一切都相符,就进入shell控制阶段。
/etc/passwd这个文件的构造是这样的,每一行都代表一个账号。共分7部分内容
root:x:0:0:root:/root:/bin/bash
账号名称,密码,UID, GID,用户信息说明栏,家目录,Shell
/etc/shadow
root:$1$i9E:12959:0:999999:7:::
账号名称,密码,最近更改密码的时间,密码不可更改的天数,密码需要重新更改的天数,密码过期的宽限天数,账户失效日期,保留。
/etc/group 这个文件就是在记录GID与用户组名称的
bin:x:1:root,bin,daemon
用户组名称,用户组密码,GID,支持的额账号名称。
useradd:新增用户
passwd:更改密码
usermod:更改账号信息
userdel:删除用户
groupadd,groupmod,groupdel 用户组增加,修改,删除
su:切换用户。
who:查看登录的用户
十七. 程序的资源的管理触发任何一个事件,系统都会将它定义成为一个进程,并且给这个进程一个ID,成为PID,同时根据启动这个进程的用户与相关属性关系,给这个PID一组有效地权限设置。
直接将命令放到后台“执行”的&
tar –zpcf /tmp/etc.tar.gz /etc &
将“当前”作业放到后台“暂停”:[Ctrl]-z
观察当前后台作业状态:jobs jobs –l (+)表示默认作业
将后台作业拿到前台处理:fg fg %jobnumber
让作业在后台运行:bg
进程管理
ps –l 将当前属于自己这次登录的PID与相关信息显示出来。
ps aux 列出当前所有正在内存中的进程。
root 5881 0.0 0.3 5212 1024 pts/0 S 10:22 0:00 su
USER,PID,%CPU,%MEM,VSZ该进程使用的虚拟内存量(KB),RSS该进程占用的固定内存量(KB),TTY该进程是在哪个终端上运行,STAT:该进程的当前状态 R正在运行或可运行 S正在休眠中 T正在检测或停止 Z该进程已终止,但其父进程却无法正常终止它,造成僵尸进程状态。
造成僵尸进程的原因是,该进程应该已执行完毕,或者是因故应该终止了,但该进程的父进程却无法完整地结束该进程,而造成那个进程一直存在内存中。
top
在top执行的过程中可以使用按键命令 P按CPU的使用资源排序显示,M按内存使用资源排序,N按PID排序。
Top分为两个画面,上面的画面为整个系统的资源使用状态,有6行,显示的内容依次是:
第1行:显示系统已启动的时间、当前上线人数、系统整体负载(load)。需要注意系统的负载,3个数据分别是1、5、10分钟的平均负载。一般来说,负载值应该不会超过1,除非系统很忙。如果持续高于5的话,那么需要仔细看到底是哪个进程在影响整体系统。
第2行:显示当前观察的进程数量,需要注意最后的zombie数值,如果不是0,好好看看到底是哪个京城变成僵尸了。
第3行:显示CPU的总负载,每个项目可使用(?)查看。需要观察的是id(idle)的数值,一般来说,它应该接近100%,表示系统资源使用的很少。
第4行与第5行:表示当前物理内存与虚拟内存(Mem/Swap)的使用情况。
第6行:这是在top进程中输入命令时显示状态的地方。
top下面的画面,则是每个进程使用的资源情况。需要注意的是:
PID,USER,%CPU,%MEM
PR:Priority的简写,进程优先执行顺序,越小越早执行。
NI:Nice的简写,与Priority有关,也是越小越早执行。
TIME+:CPU使用时间的累加。
进程的删除
kill -9 PID, kill -9 %jobnumber
-9 表示强制中断一个进程的执行,如果该进程执行到一半,那么尚未完成的部分可能会产生半成品,类似vim会有.filename.swp保留下来。
-15 通过正常结束进程来终止该进程。由于是正常终止,所以会完成后续操作。不过,如果该进程已经发生问题,无法使用正常的方法终止时,输入这个信号也没有用。
系统资源的观察
free –m 显示当前系统的内存容量
Mem行显示物理内存量,Swap是虚拟内存量,total是总量,used是已用的量,free是剩余可用的量。后面的shared/buffers/cached是在易用的量中,用来进行缓冲及缓存。
Mem被用光是正常的,但需要注意swap的量。一般来说,swap最好不要使用,尤其swap最好不要使用超过20%以上,如果发现swap的用量超过20%,那么,最好还是买一个物理内存。由于Swap的性能跟物理内存差很多,而系统会使用swap,绝对是因为物理内存不足了才会这样做。
uname –a 输出系统的基本信息。
Linxu系统中,每个进程都会拥有一个优先级属性,利用该属性,让CPU判断哪个作业比较重要,哪个作业会优先执行,这使得系统资源分配得更合适。ps –l
PRI就是Priority的简写,NI是nice的简写,它们凑在一起,才产生当前的PRI值。PRI越小,表示该进程优先级越高,PRI是由系统动态产生的,不是一直固定的值。NI则是我么额外提供的一个数值,他可以影响PRI的值,他的关联性是 PRI(new) = PRI(old) + nice。Nice有正负,既然PRI越小越早执行,所以当nice值为负时,该进程就会降低PRI值,机会优先处理。
一般用户的nice值为0 - 19
root可用的nice值为-20 – 19
一般用户仅可将nice值越调越高,一般用户仅能调节属于自己的进程的优先级。
开始执行进程就立即提供一个特定的nice值:nice [-n] command nice –n -5 vi &
调整某个已经存在的PID的nice值:renice [number] PID renice 10 18852
/Proc/* 的意义
进程都是在内存中,而内存中的数据又都写入到/proc/*目录,收益我们可以直接观察/proc目录中的文件。
开机所执行的第一个进程init的