Linux发展简史
Linux的发展经历了三个阶段:Unix ⟶ \longrightarrow ⟶ Minix ⟶ \longrightarrow ⟶ Linux :
Unix
1965年之前,电脑并不像现在一样普遍,当时的大型主机最多能提供30台终端(30个键盘、显示器),链接一台电脑。
1965年左右,贝尔实验室加入了麻省理工学院以及通用合作的计划,着手解决为了解决终端数量不够的问题,建立一套多使用者、多任务、多层次的MULTICS操作系统,想让大型主机支持300台终端,1969年前后,因Multics工程项目的目标庞大、太复杂,进展缓慢,资金短缺,贝尔实验室退出了研究。
1969年,从该项目退出的 Ken Thompson 为了让一台空闲的电脑上能够运行“星际旅行(Space Travel)”游戏,结合Multics工程的经验,使用汇编写出了Unix操作系统原型。
1970年,Ken Thompson 以B语言为基础写了一个Unix操作系统。
1972年,Thompson 和 Ritchie使用C语言完全重写了现在大名鼎鼎的Unix操作系统。
Minix
因为AT&T(通用电气)的政策改变,在Version 7 Unix推出后,将Unix源代码私有化,在大学中不再能使用Unix源代码。Andrew S.Tanenbaum(塔能鲍姆) 教授为了能在课堂上教授学生操作系统的运作细节,在不适用任何AT&T的源代码前提下,自行开发了与Unix兼容的操作系统,以小型Unix(mini-Unix)之意,称之为Minix。
Linux
因为Minix知识教学使用,因此功能并不强,1991年就读于赫尔辛基大学的Linux(林纳斯) 为了方便读写和下载大学主机上的新闻组合邮件,自己编写了磁盘驱动程序和文件系统,这些在后来成为Linux第一个内核的雏形。
Linux的内核版
内核(kernel)是系统的心脏,是运行程序和管理磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。
Linux内核版又分为稳定版和发行版,两种版本是相互关联,相互循环的。
- 稳定版: 具有工业级强度,可以广泛地应用和部署。新的稳定版本相对于交旧的知识修正一些bug或加入一些新的驱动程序;
- 开发板: 也被叫做GNU/Linux发行版,由于要实验各种解决方案,所以变化很快;
常见的 Linux发行版如下: - Ubuntu
- Redhat
- Fedora
- openSUSE
- Linux Mint
- Debian
- Manjaro
- Mageia
- CentOS
- Arch
Linux常用基本命令及使用方法
1、文本编辑
命令 | 使用方法 | 作用 |
---|---|---|
vi/vim | vi/vim 文件名 | 打开并编辑文件 |
2、网络配置
命令 | 使用方法 | 作用 |
---|---|---|
ifconfig | ifconfig | 查看当前网络ip |
ping | ping 目的主机名/主机ip | 测试主机之间网络连通性 |
3、关机重启命令
命令 | 作用 |
---|---|
sync | 将数据由内存同步到硬盘中 |
halt | 关闭系统 |
reboot | 重启 |
shutdown | 关机 |
4、文件目录类
- 显示当前目录的绝对路径 : pwd
命令 | 作用 |
---|---|
pwd | 显示呢当前工作目录的绝对路径 |
- 列出目录的内容:ls 选项 目录或者文件
选项 | 功能 |
---|---|
-a | 全部的文件,联通隐藏(开头为 . 的文件)一起列出来(该命令经常使用) |
-l | 以长数据串的形式列出来,包含文件的属性与权限等数据(经常使用) |
- 切换目录 : cd 参数
参数 | 功能 |
---|---|
cd 绝对路径 | 切换路径 |
cd 相对路径 | 切换路径 |
cd ~或者cd | 回到自己的家目录 |
cd - | 回到上一次所在的目录 |
cd . . | 回到当前目录的上一级目录 |
cd -p | 跳转到实际物理路径,而非快捷键方式路径 |
- 创建一个新目录:mkdir 选项 新目录
选项 | 功能 |
---|---|
无 | 在已有目录下创建一个文件夹 |
-p | 在已知目录下创建多层目录 |
-
删除一个空目录:rmdir 要删除的空目录
-
** 创建空文件:touch 文件名 **
-
复制文件或目录:cp 选项 文件/目录
选项 | 功能 |
---|---|
无 | 复制一个文件 |
-r | 递归复制整个文件夹 |
- 一处文件或目录 rm 选项 文件
选项 | 功能 |
---|---|
-r | 递归删除目录中所有内容 |
-f | 强制执行删除,而不是提示用于确认 |
-v | 显示指令的详细执行过程 |
- 查看文件内容 cat 选项 文件
选项 | 功能 |
---|---|
无 | 查看文件内容 |
-n | 显示所有的行号,包括空行 |
- 输出内容到控制台:echo 选项 内容
选项 | 功能 |
---|---|
无 | 输出内容到控制台 |
-e | 支持反斜线控制的字符转换 |
4、时间日期类
基本语法:date 选项 格式
选项
选项 | 功能 |
---|---|
-d<时间字符串> | 显示置顶的“时间字符串”表示的时间,而非当前时间 |
-s<日期时间> | 设置系统日期时间 |
显示的格式
格式 | 功能 |
---|---|
date | 显示当前时间 |
date + %Y | 显示当前年份 |
date + %m | 显示当前月份 |
date + %d | 显示当前是哪一天 |
date “+%Y-%m-%d %H:%M:%S” | 显示年月时分秒 |
5、用户管理命令
- 添加用户:useradd 新用户名
用法 | 功能 |
---|---|
useradd 用户名 | 添加新用户 |
useradd -g 组名 新用户名 | 添加新用户到某个组 |
-
设置用户密码 passwd 用户名
-
查看创建了哪些用户:cat /etc/passwd
-
切换用户:su 要切换的用户
用法 | 功能 |
---|---|
su 用户名 | 切换用户,但只能获得用户的执行权限,不能获得环境变量 |
su - 用户名 | 切换到用户并获得该用户的环境变量及执行权限 |
5. 修改用户:usermod -g 用户组 用户名
6、用户组管理命令
1. 新增组:groupadd 要新增的组名
2. 删除组:groupdel 要删除的组名
3. 修改组:groupmod -n 新组名 老组名
4.查看已创建的组:cat /etc/group
7、文件权限类
1. 修改权限
修改方法1 | 修改方法2 |
---|---|
chmod [{ugoa}{±=}{rwx} 文件或目录 | chmod [mode=421] 文件或目录 |
2. 改变所有者 chown 选项 最终用户 文件或目录
选项 | 功能 |
---|---|
-R | 递归操作 |
3. 改变所属组 :chgrp 最终用户组 文件或目录
8、搜索查找类
1. 查找文件或目录 : find 搜索文件夹或目录 选项
选项 | 功能 |
---|---|
-name | 按照指定的文件名查找文件 |
-user | 查找属于指定用户名的所有文件 |
-size | 按照指定的文件带下查找文件 |
2. 过滤查找:grep 及 “|”管道符 : 内容 | grep 选项 查找内容 源文件
选项 | 功能 |
---|---|
无 | 显示查找内容,不显示匹配行及行号 |
-n | 显示匹配行及行号 |
8、进程线程类
1. 基本语法:
基本语法 | 功能 |
---|---|
ps 选项 | 查看系统中所有进程 |
ps -ef | 可以查看子父进程之间的关系 |
选项说明:
选项 | 功能 |
---|---|
-a | 选择所有进程 |
-u | 显示所有用户的所有进程 |
-x | 显示没有终端的进程 |
2. 终止进程
语法 | 功能 |
---|---|
kill -9 进程号 | 通过进程号杀死进程(有-9是强迫进程立即停止) |
killall 进程名 | 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用 |
9、crond系统定时任务
1. 重启crond服务管理:service crond restart
2. 基本语法:crontab 选项
选项 | 功能 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
Linux6 和 Linux7的差异
这里介绍Centos6 和 Centos7的差别,这两个版本都有人在使用,除了个别使用差异外,它们的大部分功能都是一致的。
1、文件系统不同
Centos6.x | Centos7.x |
---|---|
EXT4( Fourth Extended filesystem) | XFS(Existing Filesystem) |
EXT4的单个文件系统容量可以达到1EB,单个文件的大小可以达到16TB | XFS默认支持的系统容量大小为8EB减去1个字节,最大支持的文件大小是9EB,最大支持的文件系统尺寸是18EB |
2、防火墙、内核版本、默认数据库不同
名称 | Centos6.x | Centos7.x |
---|---|---|
防火墙 | iptables | firewalld |
内核版本 | 2.6 | 3.10 |
默认数据库 | Mysql | MariaDB |
3、时间同步、修改时区、修改语言的命令不同
Centos6.x | Centos7.x | |
---|---|---|
时间同步 | ntpq -q | chronyc sources |
修改时区 | vim /etc/sysconfig/clock | timedatectl set-timezone Asia/Shanghai |
修改语言 | vim /etc/sysconfig/i 18n | localectl set locale LANG=zh_CH.UTF-8 |
4、修改主机名的方式不同
Centos6.x | Centos7.x |
---|---|
修改的配置文件为/etc/sysconfig/network 中的HOSTNAME(修改完后永久生效),需要重启才能生效。 | 方式一:配置文件 /etc/hostname 直接编辑 vim /etc/hostname;方式二:采用命令的方式–hostnamectl set-hostname 主机名,需要重启后才能生效。 |
5、网络服务的管理方式不同
操作行为 | Centos6.x | Centos7.x |
---|---|---|
启动服务 | service 服务名 start | systemctl start 服务名 |
停止服务 | service 服务名 stop | systemctl stop 服务名 |
查看服务状态 | service 服务名 status | systemctl status 服务名 |
重启服务 | service 服务名 restart | systemctl restart 服务名 |
设置服务的开机自启 | chkconfig 服务名 on | systemctl enable 服务名 |
设置服务的开机非自启 | chkconfig 服务名 off | systemctl disenable 服务名 |
查看所有服务的自启状态 | chkconfig --list | systemctl list-unit-files |
6、网络设置不同
名称 | Centos6.x | Centos7.x |
---|---|---|
网卡名称 | ifcfg-eth0 | ifcfg-ens33 |
网络配置的命令 | ifconfig | ip |
网络服务 | network服务 | NetworkManager服务 |
7、yum的区别
Contens6.x | Contens7.x |
---|---|
默认情况下会从国外的镜像源网站获取安装包,比较慢,如果想安装下载快的话,需要去修改CentOS6-Base.repo,使用CentOS6-Base-163.repo替换。 | 就近原则,从离得比较近的镜像源服务器获取安装包并下载安装。 |
一些Linux面试题
- 有一普通用户想在每周日凌晨零点零分定期备份 /user/backup到 /tmp 目录下,该用户应如何做?
crontab -e
0 0 * * 7 /bin/cp /user/backup /tmp
- 如何看当前 Linux 系统有几颗物理 CPU 和每颗 CPU 的核数?
cat /proc/cpuinfo | grep -c 'physical id'
cat /proc/cpuinfo | grep -c 'processor'
- 把文件 file1、file2、file3 复制到目录 dir 中
cp file1 file2 file3 dir