操作系统发展史
Unix
- 1970年,美国贝尔实验室的Ken Thompson,以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母),并且他用B语言写了第一个UNIX操作系统。
- 因为B语言的跨平台性较差,为了能够在其他电脑上也能够运行这个Unix操作系统Dennis Ritchie和Ken Thompson从B语言的基础上准备研究一个更好的语言
- 1972年,美国贝尔实验室的Dennis Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
- 1973年初,C语言的主体完成。Thompson和Ritchie迫不及待地开始用它完全重写了现在大名鼎鼎的Unix操作系统。
Minix
- 意为小型UNIX(mini-UNIX)
Linux
- 创始人Torvalds
发展史
- Unix(只针对大型主机或服务器)
- BSD
- FreeBSD
- Sun Solaris
- IBM AIX
- AT&T System V
- Minix
- Linux(适用于x86的个人计算机)
- Ubuntu
- Redhat
- SUSE
- Fedora
- Linux(适用于x86的个人计算机)
- Minix
- BSD
Linux不同版本以及应用领域
1. Linux内核及发行版介绍
Linux内核版本
内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。
Linux内核版本
- 稳定版:具有工业级强度,可以广泛的应用和部署。新的稳定版相对于较旧的只是修正一些bug或加入一些新的驱动。
- 开发板:由于要试验各种解决方案,所以变化很快。
Linux发行版本
- Linux发行版(也被叫做GNU/Linux发行版)通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件。
- Linux Mint
- Debian
- Ubuntu
- openSUSE
- Redhat
- Fedora
- Manjaro
- Mageia
- CentOS
- Arch
- Elementary
2. 应用领域
个人桌面领域的应用
- 典型代表:Ubuntu、Fedora、openSUSE
服务器领域
- 典型代表
- RedHat公司的AS系列
- 完全开源的debian系列
- suse EnterPrise 11系列等
嵌入式领域(如智能家居)
- 主要应用:机顶盒、数字电视、网络电视、程控交换机、手机、PDA等都是其应用领域,得到了摩托罗拉、三星、NEC、Google等公司的大力推广
文件和目录
类Unix系统的目录结构
Ubuntu没有盘符这个概念,只有一个根目录 “/”,所有文件都在它下面
/
- /bin
- /sbin
- /usr
- bin
- local
- include
- lib
- /lib
- …
## Linux目录
- /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
- /bin:/usr/bin:可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
- /boot:放置Linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub
- /dev:存放Linux系统下的设备文件,访问该目录下的某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom/mnt
- /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etx/X11、/etc/sysconfig、/etc/xinetd.d
- /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~edu表示用户edu的家目录。
- /lib:/usr/lib:/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
- /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
- /mnt:/media:光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载。
- /opt:给主机额外安装软件所摆放的目录。
- /proc:此目录的数据都在内存中,如系统核心、外部设备、网络状态,由于数据都存放在内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
- /root:系统管理员root家目录。
- /sbin:/usr/sbin:/usr/local/sbin:防止系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能“查看”而不能设置和使用。
- /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可防止在此目录下。
- /srv:服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
- /usr:应用程序存放目录,/usr/bin存放应用程序,/usr/share存放共享数据,/usr/lib存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc:系统说明文件存放目录。/usr/share/man:程序说明文件存放目录。
- /var:放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log,/var/log/message:所有登录文件存放目录,/var/spool/mail:邮件存放目录,/var/run:程序或服务启动后,其PID存放在该目录下 。
用户目录
相对路径和绝对路径
绝对路径
从 / 目录开始描述的路径为绝对路径,如:
cd /home ls /usr
相对路径
从当前位置开始描述的路径为相对路径,如:
cd ../../ ls abc/def
. 和 ..
- 每个目录都有. 和 ..
- . 表示当前目录
- .. 表示上一级目录,即父目录
- 根目录下的. 和 ..都表示当前目录
访问权限
- 读权限(r)
- 写权限(w)
- 可执行权限(x)
Linux命令
1. 命令使用方法
Linux命令的格式:
command [-options] [parameter1] ...
command:命令名,相应功能的英文单词或单词的缩写
[options]:选项,可用来对命令进行控制,也可以省略
[parameter1]:传给命令的参数,可以是零个、一个或多个
2. 查看帮助文档
- --help
- 一般是Linux命令自带的帮助信息
- man(manual)
- man是Linux提供的一个手册,包含了绝大部分的命令、函数使用说明。
- man中各个section意义如下:
- Standard commands(标准命令)
- System calls(系统调用,如open、write)
- Library functions(库函数,如printf、fopen)
- Special devices(设备文件的说明,/dev下各种设备)
- File formats(文件格式,如passwd)
- Games and toys(游戏和娱乐)
- Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII码、environ全局变量)
- Administrative Commands(管理员命令,如ifconfig)
3. 自动补全
- 在敲出命令的前几个字母的同时,按下tab键,系统会自动帮我们补全命令
4. 历史命令
- 当系统执行过一些命令后,可按上下键翻看以前的命令,history将执行过的命令列举出来
文件、磁盘管理
文件管理
1. 查看文件信息:ls
- ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令。
- Linux文件或者目录名称最长可以有265个字符,. 代表当前目录,.. 代表上一级目录,以 . 开头的文件为隐藏文件,需要用 -a 参数才能显示。
- ls常用参数:
- -a:显示指定目录下所有子目录与文件,包括隐藏文件
- -l:以列表方式显示文件的详细信息
- -h:配合-l以人性化的方式显示文件大小
2. 输出重定向命令:>
3. 分屏显示:more
4. 管道:|
- 一个命令的输出可以通过管道作为另一个命令的输入。
5. 清屏:clear
6. 切换工作目录:cd
- cd ~ :切换到当前用户的家目录(/home/用户目录)
- cd - :切换到上次所在的目录
7. 显示当前路径:pwd
8. 创建目录:mkdir
9. 删除目录:rmdir
10.删除文件:rm
- rm -i:以进行交互式方式执行
- rm -f:强制删除,忽略不存在的文件,无需提示
- rm -r:递归的删除目录下的内容,删除文件夹时必须加此参数
11. 建立链接文件:ln
Linux链接文件类似于Windows下的快捷方式
链接文件分为软链接和硬链接:
- 软链接:软链接不占用磁盘空间,源文件删除则软链接失效。
- 硬链接:硬链接只能链接普通文件,不能链接目录。
使用格式:
ln 源文件 链接文件 ln -s 源文件 链接文件
- -s 为创建软链接,不加 -s 则创建硬链接
12. 查看或者合并文件内容:cat
13. 文本搜索:grep
Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。
一般格式为:
grep [-选项] '搜索内容串'文件名
常用选项说明:
- -v:显示不包含匹配文本的所有行(相当于求反)
- -n:显示匹配行及行号
- -i:忽略大小写
grep搜索内容串可以是正则表达式
14. 查找文件:find
- find命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属性的文件。
15. 拷贝文件:cp
16. 移动文件/重命名: mv
- 移动文件:mv 文件名 移动目录
- 使用方法:mv 原文件名 新文件名
17. 归档管理:tar
- 计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。
- tar 使用格式:tar [参数] 打包文件名 文件
- tar 命令很特殊,其参数前面可以使用 ”-“,也可以不使用
- 常用参数:
- -c:生成档案文件,创建打包文件
- -v:列出归档解档的详细过程,显示进度
- -f:指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
- -t:列出档案中包含的文件
- -x:解开档案文件
- 注意:除了f需要放在参数的最后,其他参数的顺序任意
18. 文件压缩解压:gzip
tar与gzip命令结合使用实现文件打包、压缩。tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz
gzip使用格式:
gzip [选项] 被压缩文件
常用选项:
- -d:解压
- -r:压缩所有子目录
也可使用 tar -zcvf ... 与 tar -zxvf ... 进行打包压缩与解压解包
19. 文件压缩解压:bzip2
- tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。
- tar只负责打包文件,但不压缩,用bzip2压缩tar打包后的文件,其扩展名为xxxx.tar.gz2
- 在tar命令中增加一个选项(-j)可以调用bzip2实现一个压缩的功能,实行先打包后压缩的过程
- 压缩用法:tar jcvf 压缩包包名 文件 ...
- 解压用法:tar jxvf 压缩包包名
20. 文件压缩解压:zip、unzip
- 通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip
- 压缩文件:zip [-r] 目标文件 源文件
- 解压文件:unzip -d 解压后目录文件 压缩文件
21. 查看命令位置:which
系统管理
1. 查看当前日历:cal
2. 显示或设置时间:date
3. 查看进程信息:ps
- 进程是一个具有一定独立功能的程序,它是操作系统动态执行的基本单元。
- ps命令可以查看进程的详细状况
- 常用选项(选项可以不加”-“)
- -a:显示终端上的所有进程,包括其他用户的进程
- -u:显示进程的详细状态
- -x:显示没有控制终端的进程
- -w:显示加宽,以便显示更多信息
- -r:只显示正在运行的进程
4. 动态显示进程:top
- top命令用来动态显示运行中的进程。top命令能够在运行后,在指定的时间间隔更新显示信息。可以使用top命令时加上-d来指定显示信息更新的时间间隔。
5. 终止进程:kill
- 结束进程:kill PID,有些进程不能直接杀死,使用kill -9 PID进行强制结束。
6. 关机重启:reboot、shutdown、init
7. 检测磁盘空间:df
- df命令用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节点和磁盘块的使用情况。
- 参数选项:
- -a:显示所有文件系统的磁盘使用情况
- -m:以1024字节为单位显示
- -t:显示各指定文件系统的磁盘空间使用情况
- -T:显示文件系统
8. 检测目录所占磁盘空间:du
- du命令用于统计目录或我呢见所占磁盘空间的大小,使用命令的执行结果与df类似,du更侧重于磁盘的使用状况。
- 使用格式:du [选项] 目录或文件名
- -a:递归显示指定目录中各文件和子目录中文件占用的数据块
- -s:显示指定文件或目录占用的数据块
- -b:以字节为单位显示磁盘占用情况
- -l:计算所有文件大小,对硬链接文件计算多次
9. 查看或配置网卡信息:ifconfig
10. 测试远程主机连通性:ping
用户、权限管理
1. 查看当前用户:whoami
2. 查看登录用户:who
3. 远程登陆:ssh
- ssh 用户名@ip地址
4. 添加用户账号:useradd
- 在Unix/Linux中添加用户账号可以使用adduser或useradd命令,因为adduser命令是指向useradd命令的一个链接,因此,这两个命令使用格式完全一样。
- 使用格式:useradd [参数] 新建用户账号
- -d:指定用户登录系统时的主目录,如果不使用该参数,系统自动在/home目录下建立与用户名同名目录为主目录
- -m:自动建立目录
- -g:指定组名称
5. 设置用户密码:passwd
6. 删除用户:userdel
- 同时删除用户目录:userdel -r 用户名
7. 切换用户:su
8. 查看有哪些用户组
- 方法一:cat /etc/group
- 方法二:groupmod + 三次Tab键
9. 添加、删除组账号:groupadd、groupdel
- groupadd 新建的组账号
- groupdel 删除的组账号
- cat /etc/group 查看用户组
10. 修改用户所在组:usermod
- usermod -g 用户组 用户名
- -g为修改用户默认组,-a -G为追加
11. 查看用户在哪些组:groups
12. 为创建的普通用户添加sudo权限
新创建的用户,默认不能sudo,需要进行下面的操作:
sudo usermod -a -G adm 用户名 sudo usermod -a -G sudo 用户名
13. usermod -g 与 -G 的区别
- -g:用来指定这个用户默认的用户组
- -G:一般配合 -a 来完成向用户添加其他组
14. 修改文件权限:chmod
- chmod:修改文件权限有两种格式:字母法与数字法
- 字母法:chmod u/g/o/a +/-/= rwx 文件
- u:user 表示该文件的所有者
- g:group 表示与该文件的所有者属于同一组(group)者,即用户组
- o:other 表示其他以外的人
- a:all 表示这三者皆是
- +:增加权限
- -:撤销权限
- =:设定权限
- r:可读
- w:可写
- x:可执行
- 数字法:“rwx” 这些权限也可以用数字来代替
- r:读取权限,数字代号为 4
- w:写入权限:数字代号为 2
- x:执行权限,数字代号为 1
- -:不具任何权限,数字代号为 0
15. 修改文件所有者:chown
- 使用方法:chown 用户名 文件或目录名
16. 修改文件所属组:chgrp
- 使用方法:chgrp 用户组名 文件或目录名
17. 远程拷贝:scp
- 远程上传:scp 上传文件名 用户名@ip地址:上传的服务器路径
- 远程下载:scp 用户名@IP地址:文件路径 下载的本地路径
- 上传/下载目录时,需要在scp后增加 -r 参数