目录
Linux基础
1 初始Linux
1.1 什么是Linux
Linux系统是一套开源免费类unix的操作系统,主要用在服务器上;基于POSIX和UNIX的多用户,多任务,多线程和多cpu的操作系统;Linux继承了UNIX以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991年10月5日(这是第一次正式向外公布时间),与UNIX兼容,并在GPL条款下发布。现在,Linux产生了许多不同的Linux发行版本,但它们都使用了Linux内核。1992年,Linux与其他GUN软件结合,完全自由的GNU/Linux操作系统正式诞生,简称Linux。
Linux的基本思想有两点:①一切都是文件第二;②每个软件都有确定的用途。与Unix思想十分相近。
相关名词:
UNIX:操作系统,美国AT&T公司贝尔实验室于1969年完成的操作系统,最早由肯·汤普逊(Ken Thompson),丹尼斯·里奇(Dennis Ritchie)开发。在1971年首次对外发布,丹尼斯·里奇在1973,Unix被他用C语言重新编写。Unix前身源自于MultiCS,叫UniCS,后来改名叫Unix。
POSIX:可移植操作系统接口,IEEE(电气和电子工程师协会)为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称。
GNU:1983年理查德·马修·斯托曼(Richard Stallman)创立GNU计划。一套完全自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标(发展出一套完整的开放源代码操作系统来取代Unix),名称是GNU's Not Unix!的递归缩写。
GPL:一种GNU通用公共许可协议,为保证GNU软件可以自由的使用、复制、修改和发布,所有的GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,是一个被广泛使用的自由软件许可协议条款,保证终端用户运行、学习、分享(复制)及编辑软件之自由,GPL是自由软件和开源软件的最流行许可证。
1.2 Linux特点
(1)多用户的分时操作系统
(2)支持多数的网络协议,方便的远程管理
(3)强大的内存管理和文件管理
(4)大量免费软件的支持
(5)优良的稳定性和安全性
(6)良好的可移植性和灵活性
(7)多厂商选择
1.3 Linux内核和发行版
严格来说LInux不是一个操作系统,Linux只是一个操作系统中的内核(Linux kernel),现在所谓的Linux指的是GNU/Linux 。Linux内核官网:http://www.kernel.org/
内核:软件和硬件的通讯平台,提供系统服务,内存管理,io管理,进程管理等。
发行版:内核+接口(界面,通用软件) Linux系统。常见的有红帽企业系统(RedHat Enterprise Linux, RHEL),社区企业操作系统(CentOS),红帽用户桌面版(Fedora [Linux]),国际化组织的开源操作系统(Debian),基于Debian的桌面版(Ubuntu),国内的有国防科技大学发行麒麟kylin和中科院发行红旗RedFlag等。
1.4 虚拟机软件
通过虚拟化技术模拟出一套完整的计算机系统的软件。
常见虚拟机软件有: vmware workstation / virtual box(oracle) 等。
1.5 vmware中安装centos
下载centos: http://www.centos.org或 http://mirrors.163.com/centos/6.10/isos/x86_64/
2 Linux文件系统
2.1 分区
首先了解磁盘的组成:磁盘由盘片,机械手臂,磁头,主轴马达组成,而数据的写入主要是在盘片上面,盘片上又细分为扇区与柱面两种单位,扇区每个为512bytes那么大,其中,磁盘的第一个扇区特别重要,因为磁盘的第一个扇区记录了两个重要的信息:①主引导分区(BMR):可以安装引导加载程序的地方,有446bytes。②分区表:记录整块硬盘分区的状态,有66bytes。
什么是分区:分区是将一个硬盘驱动器分成若干个逻辑驱动器,把硬盘连续的区块当做一个独立的磁硬使用。分区表是一个硬盘分区的索引,分区的信息都会写进分区表。
分区的目的:把文件系统按类别进行区分,提高查询效率。
分区的特点:①防止数据丢失:如果系统只有一个分区,那么这个分区损坏,用户将会丢失所的有数据。②增加磁盘空间的利用率:可以用不同的区块大小来格式化分区,如果有很多1K的文件,而硬盘分区区块大小为4K,那么每存储一个文件将会浪费3K空间。这时我们需要取这些文件大小的平均值进行区块大小的划分。③数据激增到极限不会引起系统挂起:将用户数据和系统数据分开,可以避免用户数据填满整个硬盘,引起的系挂起。
硬盘分区是硬盘结合到文件体系的第一步。全新硬盘(未初始化)装系统之前,必须对其进行分区,硬盘分区初始化的格式主要包括MBR和GPT。
SCSI硬盘,是硬盘中的其中一种,性能要好于IDE硬盘,sd:表示,sda的a:表示你机器上的第一块硬盘,如果还有其他的硬盘,会显示b,一次类推。1、2、5表示:第一个分区,第二个分区,第五个分区。
IDE硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,他们是主分区或扩展分区,从5开始就是逻辑分区。
Linux的分区表通常有MBR分区表和GPT分区表。对于MBR分区表的特点(通常使用fdisk命令进行分区)。所支持的最大磁盘大小:2T。最多支持4个主分区或者是3个主分区加上一个扩展分区;对于GPT分区表的特点(使用parted命令进行分区),支持最大卷:18EB(1EB=1024TB),最多支持128个主分区,所以对于GPT的分区表来说,基本就没有什么主分区和逻辑分区的区别了。
主分区:一个硬盘最多只能有4个主分区,IDE主分区采用hdXN的格式,hdX为硬盘,N是1-4的数字,分别表示4个主分区,第一个硬盘的第一个主分区,表示为hda1,以此类推;
扩展分区:扩展分区作为特殊的主分区需要占用硬盘分区表中4个分区记录中的1个记录;
逻辑分区:逻辑分区只能建立在扩展分区中,可以建立文件系统。逻辑分区同样采用了hdXN 的格式,区别在于,逻辑分区的N是从5开始算的,第一个硬盘的第2个逻辑分区就为hda6。
在Linux中磁盘分区和目录的关系:①任何一个分区都要挂载到某个目录上,才能进行读写;②目录是逻辑上的区分,分区是物理上的区分;③ 根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区
Linux默认分区: /boot 引导文件(一般200M,存放启动的引导文件) swap: 交换分区(如果内存放不下可以先放到交换分区,一般是1.5倍内存大小) /: 根分区 |
2.2 文件系统
确定文件存储和管理方式,不同的文件系统类型,存储和查询效率不同.
Window的文件系统是NTFS,Linux中CentOS6的文件系统是ext4,CentOS7的文件系统是xfs。
Linux中以目录树形式管理文件,一切皆文件。
3 Linux目录结构
/ | 根目录,存放拥有特定功能的目录,一般不要创建文件在该目录下。 |
/bin;/sbin;/usr/bin;/usr/sbin | 可执行文件 |
/home | 普通用户的家目录,每创建一个普通用户就会在该目录下创建一个同名的目录,用于存放该用户的文件,除了root外其他用户不能访问 |
/root | root用户的家目录 |
/dev | 设备文件存储的目录 |
/etc | 存储系统配置文件的目录 |
/media;/mnt | 常用挂载点 |
/opt | 常用第三方软件的安装目录 |
/usr/share | 存储共享文件的目录 |
/usr/local | 软件安装目录 |
/var | 存放变化数据的目录 |
/var/logs | 存放日志的目录 |
4 Linux命令终端
当我们打开终端就能看到如下命令提示符:
[root@bigdata01 /]#
[当前用户@主机名称 当前所处的位置]# 管理员 $普通用户
通过PS1系统变量改变命令提示符,查看命令为echo $PS1
\u:用户名,\h:主机名,\w:工作目录,\$:用户表示,root是#,普通用户是$
更改命令为: PS1="[\t][\u@\h \W]\$ "
Linux的命令格式:命令 [命令选项] [命令参数]
命令选项格式:①短格式: -单词简写 ls -a 组合: ls -l -h -a ==> ls -alh ②长格式: --单词全拼 ls --all
Linux以回车键表示命令结束,如果linux命令需要折行输入,那么可以以\表示每行结束
5 Linux常见命令
磁盘管理 | ls, cd, du, df, mount, unmounts, fdisk |
文件管理 | mkdir, rmdir, mv, rm, cp, touch, cat, tac, echo, more, less, head, tail, file, find, rename, ln, pwd, scp, alias |
文档处理 | wc, sort, uniq, cut, sed, awk, grep, vi, diff |
用户和组 | useradd, usermod, passwd, userdel, groupadd, groupdel, chgrp, su |
文件传输 | get, put, wget |
网络通信 | telnet, nc, ifconfig, ping, netstat, ip, host |
备份压缩 | gzip, bzip2, bunzip2, tar, zip |
系统管理 | exit, kill, last, ps, top, free, pstree, reboot, halt, shutdown, sudo, who, w, whoami, whereis, which, last, whatis |
系统设置 | clear, set, unset, hwclock, time, date, |
其他 | history, hostname, nohup, service, init, rpm, ssh, cal, yum |
5.1 常用磁盘管理命令详解
cd(切换目录) | cd 目录(绝对路径/相对路径) cd .. :切换到上级目录 cd ../.. :切换到上两级目录 cd ~/cd :切换到当前用户家目录 cd - :回到上次切换的目录 |
pwd(查看当前的工作目录) | pwd :查看当前的工作目录 |
ls(查看当前目录下的所有内容) | ls [选项] [目录或文件名] 常用选项: -l :显示详细信息 -a :显示所有子目录和文件的信息,包括隐藏文件 -A :展示所有子目录和文件的信息,包含隐藏的文件(不展示.和..) -R :递归显示内容 -h: 以易读的方式展示文件大小 |
du(显示每个文件和目录的磁盘使用空间) | du [选项] [目录或文件名] 常用选项: -a:统计时包括所有的文件,而不仅仅只统计目录 -h:以更易读的字节单位(K、M等)显示信息 -s:统计每个参数所占用空间总的大小 |
df(查看磁盘使用情况) | 常用选项: -h:以更易读的字节单位(K、M等)显示信息 -T:显示分区格式 |
5.2 常用文件管理命令详解
touch(创建文件或修改文件的时间标记) | touch 文件名 |
file(查看文件类型) | file 文件名 (注意:;类型由文件内容决定,而不是根据后缀名) |
mkdir(创建目录) | mkdir [选项] [参数] 常用选项: -p 以级联方式创建(创建子目录时会将父级目录一起创建) |
cp(复制文件) | cp [选项] 源文件或目录 目标文件或目录 常用选项 -r :递归复制整个目录树 -i :需要覆盖文件或目录时提示 -f :需要覆盖文件或目录时强制覆盖 -p :保持源文件的属性不变 |
mv(移动文件) | mv [选项] 源文件或目录 目标文件或目录 常用选项: -i :需要覆盖文件或目录时提示 -f :需要覆盖文件或目录时强制覆盖 -u :目标文件不存在或源文件比目标文件新则移动 |
rm(删除文件) | rm [选项] 文件或目录 常用选项: -i :需要覆盖文件或目录时删除提示 -f :需要覆盖文件或目录时强制删除 -r :递归删除 -rf :递归强制删除 |
rmdir(删除空文件夹) | 常用选项: -p/--parents:级联删除,删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除 |
cat(查看并打印) | 常用选项: -n或--number:查看行号,由1开始对所有输出的行数编号 |
tac(倒叙打印) | tac 文件名 ;倒叙输出文件内容 |
head(查看开头若干行,默认显示10行) | 常用选项: -n<数字>:指定显示头部内容的行数 |
tail(查看结尾若干行,默认显示10行) | 常用选项: -n<数字>:指定显示尾部内容的行数 -f:始终显示文件最新追加的内容 |
more(翻页显示) | 使用方式: Space键:显示文本的下一屏内容。 Enter键:只显示文本的下一行内容。 h键:显示帮助屏,该屏上有相关的帮助信息。 b键:显示上一屏内容。 q键:退出more命令。 |
less(翻页显示) | 使用方式: 和more使用方式基本类似 按e键:向上滚动一行 按y键:向下滚动一行 G:跳到文件末尾 gg:跳到文件首行 |
echo(打印字符串或变量) | 常用选项: -n:末尾不换行 -e:处理特殊符号(字符串中,不会将其当成一般文字输出) \a 发出警告声; \b 删除前一个字符; \c 最后不加上换行符号; \f 换行但光标仍旧停留在原来的位置; \n 换行且光标移至行首; \r 光标移至行首,但不换行; \t 插入tab; \v 与\f相同; \ 插入\字符; \nnn 插入nnn(八进制)所代表的ASCII字符;
echo aa > a.txt ## 覆盖 echo bb >> a.txt ## 追加 echo ${变量名} : $PATH/$USER/$PWD... 查看变量: set |
ln(创建链接文件) | 常用选项: -s:创建软链接 ln -s 源文件 链接文件: 给文件创建软链接 |
alias(别名) | alias: 查看别名 alias lh='ll -h':设置别名 unalias lh:撤销别 |
>:重定向符号(覆盖) >>:追加 标准输出:>> 标准输入: <<
5.3 关机和重启
关机命令:halt,init 0,power off,shutdown -h now
重启命令:reboot,init 6
6 vi编辑器
6.1 vi编辑器简介
vi编辑器是类unix系统内置的文本编辑器,vim是vi的增强版本
6.2 vi编辑器的三种模式
6.3 命令模式下的命令
光标命令:
字符移动 | ↑↓←→ / hjkl |
单词移动 | w(w):单词的首字母向后移动,不忽略标点(大写W忽略标点) e(E):单词的尾字母向后移动,不忽略标点(大写E忽略标点) b(B):单词的首字母向前移动,不忽略标点(大写B忽略标点) |
逐句移动 | ( ) :移动到每句结尾标记是"." |
逐段移动 | { } :短路的标记是空行 |
移动到文档的开头或结尾 | gg:开头 G:结尾 |
移动到该行的开头或结尾 | 0:开头 $:结尾 |
基本操作:
a(A) | 小写:光标后一位插入 大写:光标所在行行尾 |
i(I) | 小写:光标前一位插入 大写:光标所在行行首 |
o(O) | 小写:光标下一行插入 大写:光标所在行插入 |
dd | 删除光标所在行(5dd表示:包含光标所在行往下删除5行) |
yy | 复制光标所在行(5dd表示:包含光标所在行往下复制5行) |
p | 黏贴 |
u | 撤销 |
6.4 底行模式下的命令
基本操作
:w | 保存 |
:q | 退出 |
:! | 强制 |
查找操作:
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:number | 跳转到指定行 |
:/key | 更加单词查找(n:跳转到下一个单词 N:跳转到上一个单词) |
:noh | 取消高亮 |
替换操作:
:开始行,结束行 s/旧字符串/新字符串/g | :1 s/aa/bb 第1行的第一个aa修改为bb :1 s/aa/bb/g 第1行的所有aa修改为bb |
:. , . +3 | 光标所在行往下3行,一共4行 |
:% | 整篇文章 |
7 网络管理
7.1 常见网络管理命令
ifconfig | 查看及管理网络接口 HWAddr:mac地址(硬件地址)硬件设备唯一标识 ip地址:逻辑地址,同一网络中不允许重复 ifconfig(centos 6):查看正在活动的网络接口状态 (centos 7: ip addr ) ifconfig -a:查看所有网络接口 |
ping | 查看连接状态 |
host | 查看域名对应ip |
netstat | 查看程序端口占用(-nltp) |
7.2 宿主机和虚拟机的三种通讯方式
桥接模式:宿主机物理网卡和虚拟机交换机之间通过虚拟网桥建立连接。虚拟机ip和物理机ip处于同一网段,虚拟机相当于网络内部一个独立的机器,网络内的其他机器可以与虚拟机互相访问,主机拔掉网线后,虚拟机无法与物理机机通过网络的方式进行通讯。
缺点:虚拟机ip和物理机ip处于同一网段,ip地址有限,不利于搭建大型集群
NAT模式:使用VMware提供的NAT和DHCP服务,虚拟机使用主机中的虚拟网卡Vmnet8作为网关,这种方式可以实现主机和虚拟机通信,虚拟机也能够访问互联网,但是互联网不能访问虚拟机。
虚拟交换机(vmnet8)和虚拟网卡(vmnet8)连接实现宿主机和物理机连接;虚拟交换机(vmnet8)和物理网卡通过NAT设备连接,实现internet访问。
手动设置虚拟机IP,ip设置与vmnet8同网段,gateway,netmask,broadcast设置与vmnet8相同,dns设置与主机相同
仅主机模式:只能进行虚拟机和主机之间的网络通信,虚拟机不能访问外部网络。
虚拟机ip设置与vmnet1同网段,gateway设置成vmnet1的ip,其余设置与vmnet1相同,dns设置与主机相同
7.3 网络配置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE | 网卡名称 |
TYPE | 配置文件接口类型,网络接口类型为Ethernet |
UUID | 32位字符串,唯一标识 |
ONBOOT | 开机是否启动(yes:开机启动 no:开机关闭) |
NM_CONTROLLED | network mamager的参数 ,是否可以由NNetwork Manager托管 |
BOOTPROTO | 设置为none禁止DHCP,设置为static启用静态IP地址,设置为dhcp开启DHCP服务 |
HWADDR | mac地址,唯一 |
IPADDR | ip地址,同一网络不能重复 |
GATEWAY | 网关 |
DNS1 | dns服务器地址 |
NAME | 网络连接的名字 |
重启网络服务命令: service network restart
7.4 主机名称
查看主机名称: hostname
修改主机名称: ①临时修改:hostname 主机名称 ②永久修改 :vi /etc/sysconfig/network
7.5 主机映射
主机名称和ip之间的映射关系
linux: /etc/hosts
windows: C:\Windows\System32\drivers\etc\hosts
7.6 防火墙
控制网络访问
防火墙的基本操作命令
service iptables start/stop/status | 防火墙开启/停止/状态 |
chkconfig --list iptables | 查看各种系统启动级别下的开机状态 |
chkconfig iptables on/off | 设置开机启动/关闭 |
修改防火墙规则命令
iptables -A INPUT -p tcp --dport 22 -j DROP | 删除 |
iptables -I INPUT -p tcp --dport 80 -j ACDCEPT | 插入一条IPNUT规则,开发80端口,I可以指定行号,默认插入到第一条 |
iptables -A INPUT -p tcp --dport 22 -j DROP | 添加一条IPNUT规则,插入到最后一条 |
8 系统启动级别
8.1 查看系统启动级别
查看启动级别命令: runlevel
配置文件对系统启动级别的描述如下:
0 | 关机(不能使用) |
1 | 单一用户 |
2 | 多用户无网络 |
3 | 完全的多用户 |
4 | 未使用,系统预留,一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。 |
5 | 图形界面 |
6 | 重启(不能使用) |
8.2 修改系统启动级别
vi /etc/inittab 对配置文件进行修改
想让系统不用图形模式登陆可将id:5:initdefault: 中的5改为3即可
9 进程管理
9.1 进程相关概念
软件:应用程序加文档;
程序:为了完成某个特定的任务,使用各种语言编写的指令集合,静态的
进程:是一次程序执行的状态,需要申请资源,对应着从代码加载,执行到执行完毕的整个过程,是一个动态的实体,有自己的生命
线程:执行任务的最小单元 ,进程进一步细化的线程,也是程序内部执行的一条路径,线程只是一个进程的不同执行路径,每个线程又对应着各自独立的生命周期,线程是进程的一个实体,是CPU调度和分派的
9.2 进程的状态
新建状态:
就绪状态::除了cpu其他资源已具备
运行状态:拿到cpu
阻塞状态: io等阻塞操作
死亡状态:
9.3 进程常见命令
(1)查看进程
ps命令用于报告当前系统的进程状态
ps 命令常用选项包括: -a显示所有用户的进程 -u显示用户名和启动时间 -x显示所有进程,包括没有控制终端的进程 -e显示所有进程,包括没有控制终端的进程,较x选项,信息更为简略 -l显示进程详细信息,按长格式显示 |
ps(查看进程状态) | ps -aux查看所有的用户进程 |
pstree(查看进程树) | pstree -p 查看进程的pid |
top(定期刷新进程状态) | |
jps(监听jvm进程的状态) |
(2)进程管理
kill pid | 根据pid杀死进程 |
kill -9 pid | 强制杀死进程 |
pkill | 根据程序名称杀死进程 |
pidof | 根据程序名称查看pid |
(3)进程调度
前台进程:阻塞命令行,前台运行
后台进程:不会阻塞命令行,后台运行。
ctrl+c | 终止前台进程 |
ctrl+z | 挂起前台进程,暂停状态可以恢复运行 |
fg | 切换到前台运行 |
bg | 切换到后台运行 |
jods | 查看后台进程作业 |
10 用户和组
10.1 什么是用户和组
用户:权限的集合
组:存储和管理用户,权限的容器
10.2 用户和组的分类
用户分类:
管理员(root用户) | 拥有所有权限,通过uid 0标记 |
系统用户 | 版本系统正常运行授权的用户,没有密码不能登录,uid 1-499 |
普通用户 | 权限受限,uid500 - 60000 |
组分类:
系统组 | 存放系统用户 |
私有组 | 如果创建新用户,同时会创建同名的用户组,该组只存在一个同名的用户,称为私有组 |
普通组 | 存放普通用户 |
私有组和普通组是可以转换的
10.3 查看用户和组
查看用户:cat /etc/passwd cat /etc/shadow(查看用户密码信息)
root | 用户名 |
x | 密码占位符 |
0 | uid |
0 | 用户组id |
root | 说明,备注 |
/root | 家目录 |
/bin/bash | shell类型 |
查看组:cat /etc/group cat /etc/gshadow(查看组密码信息)
root | 用户组的名称 |
x | 组密码占位符 |
0 | 组id |
管理的用户 |
10.4 用户和组的操作
(1)用户操作(root用户或拥有root权限用户)
添加用户 | useradd -c 说明 username |
修改用户 | usermod -c 说明 -G 组名 -d HOME_DIR username |
删除用户 | userdel -r username |
修改密码 | passwd username |
(2)组操作(root用户或拥有root权限用户)
添加组 | groupadd 组名 |
修改组 | groupmod -n 新名称 组名 |
删除组 | groupdel 组名 |
在组中添加/删除用户 | gpasswd -a/-d 用户 组 |
10.5 配置通过用sudoer权限
在root用户下配置:编辑/etc/sudoers
授权用户的操作:sudo useradd zs
11 文件权限
11.1 查看权限
:文件类型和权限
:文件链接数(普通文件为1,目录为子目录的个数 )
:所属的用户
:所属的组
:大小
:最后修改日期
:文件名称
文件类型和权限详解:
drwxr-xr-x:文件类型和权限
d:文件类型(-:普通文件 d:目录 l:链接文件 b:二进制 c:字符)
rwxr-xr-x:权限(r:可读(目录:ls) w:可写(目录:创建/删除文件) x:可执行(目录:cd))
rwx-->7 r-x-->5
11.2 修改权限
(1)chmod u/g/o/a +/-/= r/w/x 文件
(2)chmod 755 文件
-R修改文件及其子文件权限
11.3 修改所属权
chown 用户:组 文件
12 系统管理
12.1 服务管理命令
service 进程 start/stop/restart/status | 某个进程开启/关闭/重启/状态 |
chkconfig --list 进程 | 查看开机自启状态 |
chkconfig 进程 on/off | 开启/关闭开机自启 |
service --status-all | 查看所有后台进程 |
service --status-all | grep 进程 | | 管道符,将前面命令的输出作为后面命令的输入 grep:检索包含指定内容的行 |
chkconfig --list | 查看所有后台进程在各种系统启动级别下开机状态 |
chkconfig --level 24 进程 off | 设置指定系统启动级别下的开机状态 |
12.2 挂载
(1)挂载定义:将设备文件连接到已经存在的目录
挂载源:需要被挂载的设备文件(/dev/)
挂载点:连接到的目录(/mnt或/media)
(2)如何挂载
临时挂载:mount -t 类型 -o 挂载方式 挂载源 挂载点
如:mount -t iso9660 -o ro /dev/sr0 /mnt/cdrom
-t选项
iso9660 | 光盘或光盘镜像 |
nfs | UNIX(LINUX) 文件网络共享 |
ntfs | Windows NT ntfs文件系统 |
smbfs(需要内核支持) | Mount Windows文件网络共享 |
vfat | Mount Windows文件网络共享 |
msdos | DOS fat16文件系统 |
-o选项
ro | 只读方式挂接设备 |
rw | 只写方式挂接设备 |
loop | 用来把一个文件当成硬盘分区挂接上系统 |
iocharset | 指定访问文件系统所用字符集 |
remount | 重新挂载 |
永久挂载:修改配置文件/etc/fstab,加上挂载命令,如
/dev/sr0 /mnt/cdrom iso9660 ro 0 0 |
卸载:umount 挂载点
12.3 日期操作
(1)查看修改时区
cat /etc/sysconfig/clock:查看时区
/etc/locatime:真正定义时区的文件(序列化的数据)
/usr/share/zoneinfo/Asia/Shanghai:正确的时区文件(若不存在则执行 tzselect:生成时区文件)
修改时区命令:cp //usr/share/zoneinfo/Asia/Shanghai /.etc/locatime
(2)查看日期和时间
date
date -R
date "+%Y-%m-%d %H:%M:%S"
(3)修改日期
手动修改:date -s "2019-07-18 07:13:37" 或 date "mmddHHMMCCYY.SS"每位数字依次对应:月月日日时时分分年年年年.秒秒,如date "0718071337.50"
同步网络时间(从时间服务器获取并修改本地时间):ntpdate 时间服务器地址(如:ntp1.aliyun.com)
(4)日期计算
使用-d或--date
date -d "next day/week/month/monday...(yesterday...)" :针对于当前时间
date -d "next day may 4":针对于特定时间
date --date="1 day"...
date "+%s":距离1970年的时间
13 httpd
(1)什么是httpd?Apache的web服务器,默认端口号为80,后台进程名称为httpd
(2)查看状态/启动/关闭命令:service httpd status/start/stop
开机状态:chkconfig --list httpd
设置开机自启状态:chkconfig httpd on/off
(3)资源访问
资源路径:/var/www/html/
配置文件目录:/etc/httpd/conf.d/
14 打包压缩
14.1 打包与解包
打包:将一大堆文件或目录汇总成一个文件
(1)打包:tar -cvf 打包文件名称.tar 文件列表
c:创建打包文件 v:显示打包过程 f:指定打包文件
(2)解包:tar -xvf 打包文件名称.tar -C 目录
14.2 压缩与解压缩
压缩:将一个大的文件通过一些压缩算法变成一个小文件
(1)压缩:gzip 文件
(2)解压缩:gzip -d 压缩包
14.3 打包并压缩与解包并解压缩
(1)打包并压缩:tar -zcvf 文件.tar.gz 文件列表
(2)解包并解压缩:tar -zxvf 文件.tar.gz -C 目录
15 计划任务
(1)两个常见的计划任务
①at:后台进程名称为atd,延迟指定时间或在固定的时刻执行一次
②crontab:后台进程名称为crond,间隔固定时间执行任务
(2)crontab
①检查是否安装crontab:service --status-all | grep crond
②如果没则安装:
yum list | grep cron
yum install -y crontabs
③命令和配置
命令格式:crontab [-u user] [ -e | -l | -r ]
crontab -u | 指定计划任务的用户(默认代表当前用户) |
crontab -l | 使用标准输出来显示计划任务的内容 |
crontab -r | 删除计划任务 |
crontab -e | 编辑计划任务(计划任务文件: /var/spool/cron/) |
编辑格式:分 时 日 月 周 command | 分:1 :固定时间点( 表示每到1分的时候执行) 分:*/1 每隔以分钟 分:1,2,4,8 1分2分或4分或8分时执行 分:1-8/1 1到8分的时候每隔一分钟执行 |
16 Linux软件安装
16.1 二进制发布包
软件已经针对具体平台编译打包发布,只要解压,修改配置即可,如jdk安装
(1)下载jar包
(2)上传到Linux
(3)解压
①查询安装的jdk:rpm -qa | grep jdk
②卸载已安装的:rpm -e --nodeps 程序包
③解包解压缩:tar -zxvf jdk程序包 -C 目标目录
(4)配置
①/etc/profile: 全局(所有用户)
或每个用户的家目录下: .bash_profile .bashrc
在配置文件中加上如下内容:
export JAVA_HOME=/opt/jdk1.8.0_73 export PATH=${JAVA_HOME}/bin:${PATH} |
修改完成后重新加载该配置文件:source /etc/profile
(5)测试:java -version
16.2 rpm安装包
软件包已经安装redhat的包管理规范进行打包发布,获取该软件包,安装rpm命令安装,不一定能够正确安装(因为存在包依赖问题,缺少的依赖包需要自己手动下载安装)
(1)查找:
rpm -q 程序:是否使用rpm安装指定的程序
rpm -qa:查看所有的安装程序
rpm -ql 程序:查看程序的安装目录
(2)安装:
rpm -ivh 程序包:安装并显示进度
(3)卸载:
rpm -e 程序:卸载指定程序
(4)依赖问题:
--nodeps :不考虑依赖问题
--force:强制操作
(5)例子:mysql安装
①下载安装包并上传
②查看是否安装了mysql
rpm -qa | grep -i mysql(-i:忽略大小写)
已安装则卸载:rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64:卸载
③解包安装
解包:tar -xvf mysql-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar
安装服务端: rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
安装程序: /usr/sbin/
默认密码: /root/.mysql_secret
修改密码: SET PASSWORD
配置文件: /usr/my.cnf
安装客户端: rpm -ivh MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm
④启动服务
service mysql start
⑤登录操作
mysql -uroot -p
修改密码: set password=password('root');
⑥设置远程访问
grant all privileges on *.* to 'root'@'%' identified by '123' with grant option;
刷新权限:flush privileges;
⑦配置文件:
/usr/my.cnf
16.3 yum安装
在线安装,前端软件管理器,拥有一个服务器,在该服务器上存放了按照rpm方式打包的文件,利用yum命令卡伊从服务器查找,下载安装这些软件,能够解决包依赖的问题(要是有依赖包会自动进行安装)。
(1)检测:
yum list:检测能够安装的软件列表
yum repolist:检测可用的仓库
(2)安装
yum install 程序名称 [-y] -y:表示安装过程中的询问全选yes
(3)卸载
yum remove 程序名称 [-y]
(4)升级
yum update 程序:升级某个程序
yum update::升级所有程序
(5)配置本地yum源
yum源:服务器+rpm规范打包的软件+索引文件(yum源配置文件位置/etc/yum.repos.d/)
配置步骤:
①开启httpd服务器
②准备rpm规范打包的软件和索引文件(/mnt/crom)
ln -s /mnt/cdrom/ /var/www/html/cdrom
③配置repo文件(创建CentOS-Local.repo,配置文件位置/etc/yum.repos.d/)
④检测:yum repolist:检测可用的仓库
(6)常用yum源:
CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo
CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo
16.4 源码编译安装
项目是以源码工程方式发布,必须先编译然后再安装部署
如redis安装,安装redis时再具体说明
17 克隆虚拟机
当克隆好后需要对以下配置文件进行修改
(1)硬件配置
网卡虚拟的,网卡的信息绝对不能一样(mac地址)
vim /etc/udev/rules.d/70-persistent-net.rules
删除eth0,修改eth1的名称为eth0.
(2)配置eth0的信息(ip地址等)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
删除uuid
修改mac地址( /etc/udev/rules.d/70-persistent-net.rules文件中)
修改ip地址
(3)修改主机名称
vim /etc/sysconfig/network
(4)修改主机映射
vim /etc/hosts
18 SSH免密登录
18.1 SSH概念
SSH为Secure Shell(安全外壳协议)的缩写,简单说,SSH只是一种网络协议,用于计算机之间的加密登录,SSH就是专为远程登录会话和其他网络服务提供安全性的协议。
SSH是由客户端和服务端的软件组成的,服务端是一个守护进程(sshd),他在后台运行并响应来自客户端的连接请求。客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。
18.2 认证机制
(1)第一级别:基于口令的认证(用户名和密码,多次输入密码比较麻烦(需要编写脚本))
(2)第二级别:基于秘钥的认证
需要密匙,创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密”质询”(challenge)并把它发送给客户端软件。客户端软件收到”质询”之后就可以用你的私人密匙解密再把它发送给服务器。(通俗解释:zs请求连接ls,ls在授权池中查询zs的公钥,如果没有公钥就需要口令;如果有公钥,需要加密随机字符串返回给zs;zs根据私钥解密字符串再传给ls;数据不匹配,还是需要口令,如果匹配则建立连接)
18.3 配置免密登录
(1)生成密钥对:ssh-keygen
(2)发送公钥到对方授权池:ssh-copy-id ip