linux 入门笔记

2017-01-10 10:02:14来源:oschina作者:悠悠的白云人点击

Linux


1 基础知识
1.1 操作系统原理

计算机由运算器,控制器,存储器,输入设备,输出设备组成。指令和数据存放在存储器中,输入设备可以输入指令,断电时,可以将存储器中数据保存在输出设备。控制器从存储器中读取指令和数据,交给运算器cpu(有寄存器,存临时数据)计算,结果保存在存储器中。


RAM:随机访问存储器。


ROM:只读存储器,加电自检,要从中取数据,检查鼠标,键盘,网卡等设备是否正常。


CPU:通过一个控制芯片(中断控制器),芯片上连有线与鼠标,键盘,该芯片告诉cpu是哪个设备发生了中断。


北桥距cpu近,它是高速总线处理器,负责cpu与内存交流,快速实现数据交换。南桥是低速总线处理器,负责cpu与键盘,鼠标,显示器等设备交流。南桥通过北桥把信息传给cpu。


现在计算机北桥不与内存相连了,cpu直接与内存发生数据交换,北桥只负责连接南桥。显卡可能直接做在北桥上。


100万人访问你的web服务器硬盘数据,硬盘处理不过来。在北桥连接固态硬盘,提高i/o,


cpu主频设备,快速完成数据输入次数。


cpu的缓存(寄存器,一级,二级,三级),级别最小,速度越快,缓存解决cpu主频速度与内存运行速度不匹配。


电路只有1和0两种状态(正,负电),计算机通过电路来进行计算,当然采用二进制是最好的。


机器语言:只能理解二进制。写二进制代码太难。


微码(汇编语言,每个设备都支持)à编译器(转换) 称为低级语言


高级语言 java


在不同厂商开发的CPU上面,有一个API接口设备,来适应各种代码。叫做库,或者虚拟机,虚拟一个环境,让代码不用关心CPU微码。


1.2 硬件架构

ARM:英国公司设计,由三星,高通生产硬件。 手机使用


X86: 32位平台,(32车道)


X64 (64车道)


安腾 (惠普卖给了inter)


alpha (惠普生产)


UltraSparc


power(IBM) 主频超过4GHz, 1Hz 表示每秒一次,单位时间内完成振动的次数。


Powerpc 苹果 ios 是unix


OS:


windows


linux 里那克思


Unix


HP-UX 惠普


Solaris sun公司


AIX ibm


SCO UNIX


Unixware


OS/2


批处理:多个作业依次放在磁带上进行处理。CPU运行太快,造成读作业到内存时一直空闲。


多任务系统


内存一段,读一个程序,另一个程序无法读。CPU一个,执行一个程序就不能执行别一个,怎么多任务呢?


CPU切分成 slice 时间片,不断交替。


memory 分段机制,


进程:保存现场。


内核(kernel)本身就负责管理硬件资源,并且将硬件资源虚拟成其他样子,提供给上层所需要的应用程序。通过系统调用,操作硬件程序。


作用:将系统调用封装起来形成库,给上层应用程序调用。我们就不用写一些很底层的代码了。


必须有一种机制将内核与应用程序隔离开来,保证系统稳定。cpu中心环。


shell(GUI图形界面,命令行CLI),将用户的操作翻译成内核理解的命令。


GUI接口:用户点击


CLI接口:


命令提示符:prompt bash(shell)


#:root


$:普通用户


内核功能:进程管理,内存管理,文件系统,网络功能,硬件驱动,安全机制


批处理系统:


1.3 linux基本原则:

1,由目的单一的小程序组成,组合小程序完成复杂任务。


2,一切皆文件


3,尽量避免捕获用户接口


4,配置文件保存为纯文本格式


命令格式:


命令 选项 参数


长选项:-- (通常不能组合)


短选项:-


多个选项可能组合-a -b = -ab


参数:命令作用对象


linux严格区分大小写


虚拟终端(terminal):ctrl+Alt+f1-f6 ctrl+Alt+F7回到图形界面

GUI图形界面有三种:


Gnome: C


KDE:C++


XFace


CLI:


bash


csh


zsh


ksh


tcsh


切换用户:


su: switch user


#su [-l] 用户名


#passwd


密码复杂性规则


dll dynamic link library


.so shared object

1.4 常用命令
1.4.1 ls –l 长格式:

文件类型:


-:普通文件


d:目录文件


b:块设备文件(block)


c:字符设备文件(character)


l:符号链接文件(symbolic link file)


p:命令管道文件(pipe)


s:套接字文件(socket)


文件权限 9位,每三位一组


文件硬链接次数


文件的属主(owner)


文件的属组(group)


文件大小(单位是字节)


日间戳(timestamp):最近一次被修改的时间


访问:access


修改:modify 文件内容发生了改变


改变:change,metadata 元数据

-h:作单位转换


-a:显示隐藏文件,包括. ..


-A: 显示隐藏文件,不包括. ..


-r:逆序显示


-R:递归显示


-d:显示目录自身属性


-i:index node inode 显示文件对应数字编号

cd change directory 切换目录


家目录,用户有所有权限 cd 不加参数


cd ~username: 进入指定用户的家目录


cd – :在当前目录和上一次目录来回切换


命令类型:


内置命令(shell内置)


外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件。


type:显示指定属于哪种类型

date命令看到系统时间,


hwclock 看到硬件时间 -w 把系统时间同步到硬件时间 –s读取硬件时钟到系统时间

1.4.2 获得命令的使用帮助

内部命令:


help command


外部命令:


command –help


命令手册:


man command


分章节,


1,用户命令(/bin /usr/bin /usr/local/bin)


2,系统调用


3,库调用


4,特殊文件(设备文件)


5,文件格式(配置文件的语法) passwd


6,游戏


7,杂项 miscellaneous


8,管理命令(/sbin /usr/sbin /usr/local/sbin) 管理员才可以用


如:man 5 shadow


< > 必选 [ ] 可选项 … 可以出现多次 | 多选一 { }分组


翻屏:


向后翻一页:空格


向前翻一页:b


向后翻一行:enter(回车)


向前翻一行:k


查找:


/keyword 回车 :自前向后


?keyword 回车:自后向前


n:下一个


N:前一个


q 退出

在线文档:


info 命令 命令历史


文档:/usr/share/doc

cal: calendar 简写


whatis command 显示命令出现在哪些章节


cut :


-d 指定字段分隔符,默认是空格


-b 以字节分隔


-c 以字符分隔


-f 指定要显示的字段 –f1,3 -f1-3


who|cut -c 3-5,8


文本排序:


sort 默认按ascii 码表排序


-n 按数值大小排序


-r 降序排序


-t 字段分隔符


-k3 指定哪个字段开始


-u 相同内容只显示一次


-f 不区分大小写


uniq 相邻相同的行只显示一次


-d 只显示重复的行


-c 会显示某行重复次数



文本统计:


wc 统计文件里面有多少单词,多少行,多少字符。


-l :仅列出行;


-w :仅列出多少字(英文单字);统计单词出现次数

-m :多少字符;print the character counts


-c : print the byte counts

字符处理命令: tr 转换或删除字符


tr ab AB


tr –d a 删除字符a


1.5 根文件系统

/boot : 系统启动的相关文件,如内核,initrd,以及grub(bootloader)


/dev :设备文件


块设备:随机设备,随机访问,数据块访问


字符设备:线性访问,按字符为单位


设备号:主设备号(major)和次设备号(minor)


/etc : 配置文件


/home:用户的家目录,默认用户下跟用户同名目录


/root :管理员的家目录


/lib :库文件和内核模块文件(/lib/modules)


静态库: .a 只属于一个文件


动态库: .dll .so (share object) 内存中公用


/media:挂载点目录,移动设备


/mnt : 挂载点目录,额外临时文件系统


/opt: 可选的目录


/proc :伪文件系统,内核映射文件 (关机后是空的)


/sys : 伪文件系统,跟硬件设备相关的属性映射文件


/tmp:临时文件


/var : 可变化的文件


/bin :可执行文件,用户命令


/sbin:管理命令


/usr : universal shared read-only 全局共享只读文件


/usr/bin


/usr/sbin


/usr/lib


/usr/local 第三方软件


/usr/local/bin


/usr/local/sbin


/usr/local/lib


命名规则:


1, 长度不能超过250个字符


2, 不能使用/当文件名


3, 严格区分大小写

#tree 查看目录树

cp -a 备份,归档

发行版:Fedora , RedHat(cenos), Suse , Debian ( Ubuntu, Mint) ,Gentoo ,LFS(linux from scratch)


1.6 bash及其备份

shell:外壳,


GUI : gnome,kde ,xfce


CLI :sh , csh , ksh(付费才能用) , bash , tcsh zsh


进程:在每个进程看来,只有当前进程和内核


进程是程序的实例


shell 有子shell

命令行编辑:


Ctrl+a 跳转到行首


Ctrl+e 跳转到行尾


Ctrl+u 删除光标至命令行首


Ctrl+k 删除光标至命令行尾


Ctrl+l 清屏


history –c 清空命令历史


-d 500 删除第500个命令历史


-d 500 10 从500个开始,数10个删除


-w 保存命令历史到文件中


环境变量:


PATH:命令搜索路径


HISTSIZE:命令历史大小


SHELL :用于保存当前的默认shell


命令历史的使用技巧:


!n 执行命令历史中第n条命令


!-n 倒数第几条命令


!!执行上一条命令


!字符串: 执行最近一次匹配字符串的命令


!$ : 引用上一个命令的最后一个参数 ,或者ESC松开 按. 或者ALT+.

命令别名:


alias cls = clear 在shell中定义的别名只在当前的生命周期中有效,为当前shell进程


unalias 命令别名 撤消命令别名


/命令 不使用命令别名

命令替换:


$() 将字符串替换成命令结果,或者使用`pwd` 一对反引号


bash支持的引号:


` ` : 命令替换


“”: 弱引用,可以实现变量替换


‘ ‘: 强引用,不完成变量替换

文件名通配:


*: 匹配任意长度任意字符


?:匹配任意单个字符


[ ]: 匹配指定范围内的单个字符 [abc] [a-m] [0-9] [a-zA-Z]


[^]:匹配指定范围之外的任意单个字符


[:space:] 空白字符集合


[:punct:] 标点符号


[:lower:] 小写字母


[:upper:] 大写字母


[:alpha:] 大小写字母


[:digit:] 数字


[:alnum:] 数字和在小写字母

1.7 etc下文件说明
1.7.1 /etc/password 字段说明

account :登录名


password: 密码 用x表示,真正密码存在/etc/shadow下面


UID:用户id标识,系统会将用户名转换成uid去识别,因为系统识别数字比较快


GID: 基本组id


comment: 用户注释信息


HOME DIR :家目录


shell : 用户默认shell

/etc/group 显示所有组信息,最后一个参数userlist 是用户列表 (表示这个组是这些用户的附加组)


/etc/passwd 这里面显示的组是基本组。


/etc/shells 系统所有安全shell

1.7.2 /etc/shadow 说明

account:登录名


encrypted password: 加密的密码


最后一次更改密码的日期:0 有特殊意思,表示用户应该在下次登录系统时更改密码。空字段表示密码年龄功能被禁用。


密码的最小年龄:用户一次更改密码之后,要等多长时间才再次被允许更改密码,空字段或 0 表示没有最小密码年龄。


最大密码年龄:最大密码年龄是指,这写天之后,用户必须更改密码。


密码警告时间段:密码过期之前,提前警告用户的的天数(请参考上边的密码的最大年龄)。空字段或者 0 表示没有密码警告期。


密码禁用期:


账户过期日期


保留字段

1.8 用户,组,权限

.so结尾共享对象,库是二进制程序,但是不能独立执行,必须要被其他程序调用才行。同时也叫共享库。

这里的组相当于角色,权限的集合。


1.8.1 文件:

r:可读,可以使用cat命令查看文件。


w:可写,可以编辑或者删除文件。


x:可执行,在命令提示符下,当作命令提交给内核运行。

从左到右第一组rwx: 用户的权限


第二组rwx: 用户组的权限


第三组rwx:其他不属于用户组的用户的权限

进程的权限就是调用的用户的权限,它进访问哪些资源,取决于文件的访问权限。称为进程的安全上下文


1.8.2 目录:

r:可以对此目录用ls 列出所有文件


w:可以在此目录下,创建文件


x:可以使用cd进入此目录,也可以使用ls –l 查看内部文件的详细信息。

用户:UID /etc/password 相当于数据库


组:GID /etc/group


影子口令 :


用户 /etc/shadow


组 /etc/gshadow

1.8.3 用户类别

管理员: id为0


普通用户 1-65535


系统用户 1-499 进程需要用户权限才能运行某些程序,没有登录权限


一般用户 500-60000

用户组类别:


管理员组:


普通组:


系统组:


一般组:

用户组类别:


基本组,每一个用户都有一个默认组,创建用户时指定。


私有组, 创建用户时,如果没有为其指定所属的组,系统自动为其创建一个与用户名同名的组


附加组,额外组,默认组以外的其他 组

*进程能能够访问哪些文件,取决于进程所属用户的权限(调用进程用户的权限)。


通过用户的权限 与文件的权限依次比较(所属主用户,用户组,其他用户)


如果用户是文件的属主用户,采用第一组rwx,如果用户具有用户组角色,则采用第二组rwx,否则采用第三组rwx


1.8.4 加密方法

对称加密:加密和解密都使用同一个密码


公钥加密:每个密码都成对出现,一个为私钥,一个为公钥 (用钥匙解密)


单向加密:散列密码


1, 雪崩效应 只改了一个字符,加密后结果全变了


2, 定长输出


md5 message Digest (信息摘要 128位定长输出)


sha1 (160位定长输出)

which 命令,查看命令存放目录

用户管理:


useradd 用户名 添加用户 (默认指定/etc/default 下useradd文件属性)


-r 是添加系统用户,通常不能登录系统,没有家目录


groupadd 组名 添加用户组


usermod , passwd ,chsh , chfn , finger id userdel

userdel 默认不删除用户家目录 (要加-r才行)


usermod –a –G 不使用-a 会覆盖之前的附加组


pwck 检查账号完整性


chage 改变用户密码的过期信息

组管理:


groupadd groupdel groupmod gpasswd


newgrp 登录设置重新设置基本组 可以exit

权限管理:


chown chmod chgrp


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台