一 Linux系统简介与安装
1 发展简介
MIT, GC公司 => 国防部/大学使用 => UNIX缓慢, C语言重写
2 linux主要发行版本
3 发展历史
- 1991芬兰大学生李纳斯和其他爱好者共同开发,linux是开源软件,源码开放的UNIX
linux内核+自主开发=>自定义linux: 发行版本
- 发行版本两大阵营
RedHat Debian
4 unix和linux的关系
Linux 是一个类似 Unix 的操作系统,Unix 要早于 Linux,Linux 的初衷就是要替代 UNIX,并在功能和用户体验上进行优化,所以 Linux 模仿了 UNIX(但并没有抄袭 UNIX 的源码),使得 Linux 在外观和交互上与 UNIX 非常类似。 来源于 http://c.biancheng.net/view/707.html
5 软件的开源
什么开源软件? https://zhuanlan.zhihu.com/p/27501070
- 使用的自由 免费使用
- 研究的自由 能够获取到软件的源码
- 散步和改良的自由 自由传播 改良和销售
LAMP技术架构 LINUX Apache Mysql PHP
6 linux的应用领域
6.1 基于linux的企业服务器
谷歌 腾讯qq门户网站 大型软件公司的服务器, 都是linux系统的服务器
6.2 嵌入式应用
安卓系统 苹果ios 底层也是linux系统, 机顶盒, 只能终端…
6.3 linux在电影娱乐行业
电影娱乐行业的图像图形处理软件, 也有很多是linux开发, 运行在linux系统上
7 关于linux的学习方法
- 关于命令行
window是偏应用, 侧重客户, linux是面向专业人员,同时由于类似windows的GUI界面比较消耗系统资源 ,而且安装的东西越多,系统越不安全, 所以出于种种考虑, linux为命令行界面操作- 关于问题
自行先查找问题的答案, 多想想不同一个解决思路和解决方案, 然后记录下来, 实在没有办法解决, 可以找一位能够帮助你的人请教 询问, 可以将自己思考问题的思路和方式让对方指出, 对你自己好, 对别人来说看到你这么爱学, 也乐于帮助你, 而不是自己发现问题就问别人, 当别人是百度百科- 忘掉windows的思维方式
盘符, 界面….- 学习目标, 学习, 练习, 检验, 达到目标
8 linux安装
8.1VMWARE安装使用
(1) VMWare
VMware是一个虚拟PC的软件,可以在现有的操作系统上虚拟出一个新的硬件环境,相当于模拟出一台新的PC ,以此来实现在一台机器上真正同时运行两个独立的操作系统 。 VMware官方网站 http://www.vmware.com
(2) 特点
VMware主要特点: 不需要分区或重新开机就能在同一台,PC上使用两种以上的操作系统 本机系统可以与虚拟机系统网络通信 可以设定并且随时修改虚拟机操作系统的硬件环境
(3) 安装
建议的VMware配置 CPU:建议主频为1GHz以上 内存:建议1GB以上 硬盘:建议分区空闲空间8GB以上 过程: 参考网上 关于克隆和快照, 快速恢复linux某个状态, 防止系统崩溃, 但这只是vmware提供的功能, 真实的linux服务器没有该操作, 需要注意
8.2 系统分区
(1) 磁盘分区
磁盘分区是使用分区编辑器(partition editor)在磁盘上划分几个逻辑部分。碟片一旦划分成数个分区(Partition),不同类的目录与文件可以存储进不同的分区。
主分区:最多只能有4个。 扩展分区: 最多只能有1个。 主分区加扩展分区最多有4个。 不能写入数据,只能包含逻辑分区 逻辑分区
(2) 格式化
:::tips 格式化(高级格式化)又称逻辑格式化,它是指根据用户选定的文件系统(如FAT16、FAT32、NTFS、EXT2、EXT3、EXT4等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。 :::
(3) 硬件设备文件名
:::tips
一切皆文件
硬件 设备文件名
IDE硬盘 /dev/hd[a-d]
SCSI/SATA/USB硬盘 /dev/sd[a-p]
光驱 /dev/cdrom或/dev/hdc
软盘 /dev/fd[0-1]
打印机(25针) /dev/lp[0-2]
打印机(USB) /dev/usb/lp[0-15]
鼠标 /dev/mouse
:::
(4) 挂载
:::tips
4、挂载
必须分区
/(根分区)
swap分区 (交换分区,内存2倍,不超过2GB)
推荐分区
/boot(启动分区,200MB)
:::
(5) linux文件系统结构为一个文件树
(6) 总结
:::tips
分区: 把大硬盘分为小的逻辑分区
格式化: 写入文件系统
分区设备文件名: 给每个分区定义设备文件名
挂载: 给每个分区分配挂载点
:::
8.3 Linux安装
:::tips
/root/install.log:存储了安装在系统中的软件包及其版本信息
/root/install.log.syslog:存储了安装过程中留下的事件记录
/root/anaconda-ks.cfg:以Kickstart配置文件的格式记录安装过程中设置的选项信息, 当我们需要安装大量服务器时, 我们 只需要自定义一台的安装过程, 其他待安装通过该台服务器的kickstart就能够实现自动安装
:::
8.4 远程linux连接
(1) 远程连接之网络
:::tips
- 桥接模式
虚拟机和宿主机(你的电脑平级,ip网段一样) 真实网卡, 但是由于虚拟机会分配一个ip,在少人的局域网可以玩, 但是多人情况下会出现ip冲突的情况 - NAT模式
虚拟机在宿主机之下, 也就是虚拟机需要通过宿主机才能与外部网络通信, 不会占用ip网段 -
(2) 远程连接工具
(3) linux注意点
:::tips
严格区分大小写
- 一切皆文件: 包括我们的硬盘, 声卡….都是文件形式存在
- linux文件没有拓展名这种形式
- Linux中所有的存储设备都必须挂载以后才能使用, 例如u盘, 硬盘, 光盘…
- windows中的程序不能直接在linux中安装和执行
- linux只能重启, 不允许关机, 同时重启之前先关闭重要服务
- 服务器高峰期不要执行高负载命令(大数据扫描….)
- 密码定期更新 合理分配权限
- 重要数据 文件 定期备份
-
9 linux文件目录
二 Linux的常用命令
1 文件处理
:::tips
ls -aldh /etc 显示文件列表信息
-a 所有 -l列表形式 -h文件大小 -d具体目录属性- mkdir -p 创建目录文件夹
-p 递归创建 - cd . 或 .. 目录切换
- pwd 当前所在目录
- rmdir 删除非空目录
- cp -rp 要复制的目录/文件 目标目录文件
-r 复制目录 -d保持文件属性 - mv 源文件/目录 目标文件/目录 剪切/更名
- rm -rf 文件/目录 删除文件或目录
-r 递归 -f 强制删除 - touch 文件名 创建一个文件
- cat(tac) -n 文件 查看某个文件内容
-n 行号 - more 文件名 分行分页查看文件内容
f/空格 翻页 enter 换行 q/Q 退出浏览 - less 文件名 分行分页查看文件内容
pageUp键往回看 /关键字 查找, 然后n查看下一个关键字 - head -n 行数 文件名 查看前n行文件
-n+行数 -n 18: 前18行 - tail -nf 行数 文件名 查看后面几行
-f 动态输出文件内容变化 - ln -s 原文件 目标文件
-s 软链接 只是一条线, 软链接改变 ,源文件不北边 全权限
-d 硬链接 链接类似源文件的copy, 但又不止仅限copy, 硬链接内容改变, 源文件内容改变 :::2 权限管理
- chmod 修改文件权限
chmod [{ugoa}{+-=}{rwx}] 文件名和目录
chmod u=rwx g=wx o=r /list list目录, 所有用户rwx, 组用户 wx, 所属o
chmod 777/750/051/.. 文件/目录名 每个数字表示rwx权限的和 r 4 w2 x1
chmod -R 777 文件/目录名 递归修改文件夹文件权限
- chmod 修改文件权限
对file有rwx 能够对文件内容进行读写删除
对directory有rwx权限, 能够对文件夹中的文件或文件夹进行读写删除, 注意
- chown 更改文件的所有者
chown [username] [directoryname]
useradd [username] 添加用户- chgrp 更改文件的所有组
chgrp [groupname] [directoryname]
groupadd [groupname]
文件创建者默认为文件的所有者- umask 修改创建文件时文件的默认权限 少点更改
umask -S 查看创建文件时默认的权限
默认创建的文件都没有x(可执行)权限
3 文件搜索
- find 文件搜索
find [搜索范围] [匹配条件]
find /etc -name [searchbyname] 精确匹配
find / -name filename 模糊匹配
find / -name filename??? filename开头的文件
find / -iname fileNAME 不区分大小写查找
find /etc -size +/-/n 文件大小>/</= n 的文件
find /home -user/-group username 查找文件所有者/所有组是usename的所有文件
find /etc -cmin/-amin/-mmin 5 查找五分钟内被修改过文件属性/访问时间/文件内容的
find /etc -size +10000 -a/-o -size -f/-d etc下文件>10000 且 为file/directory的文件(夹)- locate 文件搜索 <快速>
locate [filename] locate资料库搜索文件名
updatedb 更新locate资料库 -> temp目录下文件无法搜索
locate -i [filename] 忽略大小写搜索文件- which linux原生命令所在位置
which cp/rm cp命令在哪/别名- whereis 命令所在位置, 命令帮助文档所在的位置
whereis rm/useradd rm/userad命令所在的位置/帮助文档所在位置- grep 文件内容搜索
grep [keyword] [filename] keyword在file的第几行
grep -v ^# /etc/inittab 去掉#所在行
4 帮助命令
- man 帮助命令
man ls 查看ls命令的帮助文档
man services 查看配置文件相关信息- —help 命令简略帮助
- help / info
5 用户管理
- useradd 用户添加
useradd [username] 增加一个用户- passwd 更改用户密码
passwd [username] 更改某个用户的用户名, 如果是修改自己密码,usename不用添加- who 查看登录本服务器的所有用户(简略)
- w 查看登录本服务器的所有用户(详细)
- uptime 查看服务器负载情况 1/5/15分钟
6 压缩解压
- gzip 文件压缩 只能压缩文件, 不能压缩目录, 压缩后原文件消失gunzip 文件解压缩**
.zip .gz .rar- tar 打包
tar -cvzf [压缩后的文件名] [被压缩文件/目录]
-c 打包 -v 显示详细信息 -f 指定文件名 -z 打包同时压缩
tar -zxvf [解压缩的tar.gz文件]
-z 解压缩- zip 打包
zip -r [压缩后的文件名] [待压缩文件/目录] 原文件保留, 可压缩 目录
unzip [文件名]- bzip2 打包
bzip2 -k [文件] -k保留原文件 高压缩比
tar -cjf [压缩后的文件名] [被压缩文件] bzip2能够和tar共同使用
7 网络命令
- write [user] [message] 给在线的用户发信息 ctrl+d结束消息编辑, 然后发送
- wall [message] 给所有在线用户发信息, 不用+username
- ping [ip] 网络是否ping通
- ifconfig 查看当前网络/网卡状态
- mail [user] 给离线/在线用户发送信息/邮件
mail 接收邮件- last 所有用户登录的日志信息
lastlog -u [userid] 用户最后一次登录- traceroute [ip/domain-name] 到某个ip/域名的具体链路
- netstat [-t/-u/-l/-r/-n] 网络信息相关
-t tcp协议 -u udp协议 -l: 监听 -r:路由 -n:ip/端口 -a:所有
netstat -an 查询所有端口信息- setup 网络配置
service network restart- mount 文件挂载点
mount [-t 文件系统] 设备名 文件名 挂载点
unmout 文件取消挂载
8 关机重启
- shutdown [-chr] [时间] 定时关机
-c 取消 -h 关机 -r 重启
halt poweroff init 0- reboot 重启
init 6- 运行级别
0 关机
1 单用户 ->最简单模式/安全模式
2 不完全, 不含NFS服务
3 完全多用户
4 未分配
5 图形界面
6 重启
runlevel 查看系统运行级别- logout 退出登录
9 文本编辑器Vim
linux下的全文本编辑器, 用于建立, 编辑, 查看文本文件, 没有菜单, 只有命令
- 编辑模式 set nu: 显示行号 set nonu 取消行号
- gg 到第一行 GG 到最后一行
- nG 到第几行 :n 第n行
- $ 到行首 0 到行尾
9.1 Vim工作模式
9.2 文本插入
9.3 文本删除
9.4 复制剪切
9.5 替换和取消
9.6 搜索和搜索替换
9.7 保存和退出
9.8 vim使用技巧
三 Linux软件包管理
1 简介
- 源码包: c语言, java语言…高级语言, 计算机无法直接识别
脚本安装包
优点
1.1 可以修改源码 1.2 软件包编译安装, 系统效率更高 1.3 卸载/删除更加方便
缺点
安装步骤较多, 容易出现拼写错误 编译时间较长,安装二进制安装时间长 如果报错, 解决问题难度较高- 二进制包(RPM 系统默认安装包)
编译后的源码包, 也就是0101等计算机能够直接识别的软件包
优点
安装 卸载简单 安装速度快
缺点:
无法修改源码, 查看源码 依赖性强(依赖其他软件
2 npm包管理—-rpm命令管理
2.1 npm包命名规则
包名: httpd
包全面: 全部名字
2.2 RPM包依赖性
- 树形依赖
- 环形依赖
- 模块依赖 www.rpmfind.net
2.3 RPM安装 升级和卸载
- rpm -ivh 包全名 安装
i install v 安装详细信息 h进度条 —nodeps 不检查依赖性- rpm -Uvh 包名 升级
- rpm -e 包名 卸载
2.4 RPM查询
- rpm -qa 包名 查询所有已安装
- rpm -qi 包名 查询所有安装的信息
- rpm -qip 包名 查询未安装的信息
- rpm -ql 包名 rpm包安装路径
- rpm -qf 系统文件名 查询系统文件属于哪个包
- rpm -qR 包名 查询软件包依赖关系
2.5 RPM校验
- rpm -V 包名 RPM包校验
3 npm包管理—-yum在线管理
解决rpm命令管理方式的手动下载依赖的问题
yum和rpm都是一种管理方式, 而不是rpm包或者yum包, 一个是管理方式, 一个是被管理的对象
3.1 网络配置和网络yum源
- 网络配置,能连通外网
- 配置iyum源
3.2 yum命令
- yum list 网络yum源
- yum search 包名 查询包名(关键字)
- yum -y install 包名 yum方式安装npm包 -y 自动安装
- yum -y update 包名 升级所有包(不写包名, 会更新所有npm包,同时会更新linux内核,这个操作可能会导致服务器
内核无法使用,慎用)- yum -y remove 包名 npm包卸载,自动卸载依赖,当一个npm包被许多npm包依赖,这个操作会导致某个文件被删除
所有的npm安装的软件都不能使用,慎用软件组
- yum grouplist 查看软件组列表
- yum groupinstall 安装软件组名
- yum groupremove 移除组
3.3 光盘yum源配置
网络yum源慢, 光盘作为yum源不需要网络
4 源码包管理
4.1 源码包和npm包的区别
- 概念不同
- 路径不同: npm默认安装位置 源码包手动指定(/usr/local/软件名
4.2 源码包安装
- 源码包保存: /usr/local/src 源码包安装路径: /usr/local/
- 下载源码包, 解压缩, 进入解压后的源码包
INTALL目录: 软件安装说明- ./configure 软件配置和环境检查, 定义需要的功能( 安装路径…各种配置) 生成Makefile文件
- make 编译
make clear(如果安装出错, 执行clear)- make install 安装
5 脚本安装包和软件安装包
- 脚本安装包: 自动安装过程+安装的软件
- Webmin: 图形化管理界面管理linux资源(DNS 文件共享…)
四 Linux用户和用户组管理
- 用户管理
linux安全性的要求, 合理的用户合理的权限合理的文件访问/操作权限, linux中主要是通过用户配置文件来查看和修改用户信息
1 用户配置文件
1.1 用户信息文件 /etc/passwd
- linux系统用户的详细信息, 包括用户名, 密码标识, uid(权限 0:超管, 系统用户: 不能删,否则系统
崩溃, ..其他用户)
家目录: 普通用户: /home/用户名 超管: /root- 初始组和附加组
初始组: 用户被创建时就归属的组
附加组: 用户可以加入初始组以外的其他许多组- 关于Shell
linux的命令解释器
1.2 用户影子文件 /etc/shadow
- 保存用户的密码, 所有人对其都是 0 权限, 内容:
字段1: 用户名
字段2 加密后的密码: SHA512密码 感叹号!!/星号*: 禁止登录
…..- 禁止将影子文件外传
1.3 组信息文件 /etc/group
- 组名
- 组密码标识(组密码/etc/gshadow
- 组管理员用户名
- 组中的附加用户
1.4 组密码文件 /etc/gshadow
2 用户管理相关文件
- 家目录
普通用户 /home/用户名 权限700
超级用户 /root 权限550
普通用户转变为管理员 -> 加入管理员组- 用户邮箱
目录 /var/spool/mail/用户名/- 用户模板目录
目录 /etc/skl 一些添加用户的默认配置, 例如新建用户默认在其默认目录 添加的东西
3 用户管理命令
3.1 useradd
3.2 passwd
- 普通用户 passwd
- 超级用户 passwd 待改密码的用户名
3.3 usermod 和 chage
3.4 userdel 和 del
4 用户组管理命令
4.1 添加
4.2 修改
4.3 删除
4.4 组用户添加/删除
五 Linux权限管理
1 ACL权限
1.1 简介
忽略传统的普通用户 超级管理员 以及用户组等概念, 单独为某个文件/文件夹给单独一个人设置对应的rwx权限, 更加灵活
1.2 ACL的查看和设置
- getfacle 选项 文件名 查看
- setfacl 选项 文件名 设置
1.3 最大有效权限和ACL的删除
1.4 默认ACL权限和递归ACL权限
2 文件特殊权限
2.1 SetUID
2.2 SetGID
2.3 Sticky BIT
3 文件系统属性chattr权限
4 系统命令sudo权限
超级管理员授予系统某个用户某个命令的执行权限