Linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可。目前很多中型,大型甚至是集群项目都在使用linux,很多软件公司考虑到开发成本都首选linux,在中国软件公司的到广泛的使用
学习linux的流程为:
1、linux环境下的基本操作命令,包括文件操作命令(rm mkdir chmod,chown)编辑工具使用(vi vim)linux用户管理(useradd userdel usermod)
2、linux的各种配置(环境变量配置,网络配置,服务配置)
3、linux下如何搭建对应语言的开发环境(大数据,JavaEE,Python)
4、能编写shell脚本,对Linux服务器进行维护
5、能进行安全设置,防止攻击,保障服务器正常运行,能对系统调优
6、深入理解Linux系统(对内核有研究)。熟练掌握大型网站应用架构组成、并熟悉各个环节的部署和维护方法
## Linux介绍
1、Linux怎么读(里牛渴死,利尼克斯,里那棵四)
2、Linux是一款操作系统,免费,开源,安全,高效,稳定,处理高并发非常强悍,现在很多的企业项目都部署到Linux服务器运行
3、Linux创始人:林纳斯
4、Linux吉祥物为:企鹅 tux
5.Linux主要发行版本
6、目前主要操作系统
windows ,android,车载操作系统
## Linux和Windows的区别
## 安装VM和centos
学习Linux需要一个环境,我们需要创建一个虚拟机,然后虚拟机上安装一个Centos系统来学习
1.先安装 virtual machine , vm12
2.在安装Linux(CentOS 6.8)
3.原理示意图
## Linux目录结构
基本介绍:
linux的文件系统是采用级层式的树状目录结构,再次结构中的最上层是根目录" / ",然后再次目录下在创建其他的目录
在Linux的世界里,一切皆文件
具体目录结构:
/bin (重点) (/user/bin 、/ user/local/bin)
*是Binary的缩写,这个目录存放着最经常使用的命令
/sbin (/user/sbin 、 /user/local/sbin)
*s就是Super User 的意思,这里存放的是系统管理员使用的系统管理程序
/home (重点)
*存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以 用户的账号命名的。
/root (重点)
*该目录为系统管理员,也称作为超越权限这的用户主目录。
/lib
*系统开机所需要最基本的动态链接共享库,起作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库
/lost+found
*这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
/ect(重点)
*所有系统管理所需要的配置文件和子目录 my.conf
/use (重点)
*这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录
/boot (重点)
*存放的是启动Linux时使用的一些核心wenj,包括一些链接文件及镜像文件
/proc
*这个目录是一个虚拟目录,他是系统内存的映射,访问这个目录来获取系统信息
/srv
*service缩写,该目录存放一些服务启动之后需要提取的数据。 尽量别动
/sys
*这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核和中新出现的文件系统
/tmp
*这个目录是用来存放一些临时文件的
/opt
*这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可放到该目录下 默认为空
/user/local(重点)
*这是另一个主机额外安装软件所安装的目录。一般是通过编译源码方式安装程序
/var(重点)
*这个目录中存放着不断扩充这的东西,习惯经常被修改的目录放在这个目录下。包括各种日志文件
/selinux
*SELinux是一种安全子系统,他能控制程序只能访问特定文件
总结一下:
1、Linux的目录中有且只要一个根目录
2、Linux的各个目录存放的内容是规划好的,不能乱放文件
3、linux是以文件的形式管理我们的设备,因此linux系统,一切皆为文件
##远程登录XShell5
Xshell是一个强大的安全终端模拟软件,他支持SSH1,SSH2,以及Microsft Windows 平台的TELNET协议
Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的
特别说明:如果希望安装好XShell 5 就可以远程访问Linux系统的话,需要有一个前提,就是Linux启用了SSHD服务,该服务会监听22号端口
配置XShell:
## 远程上传下载文件 Xftp5
Xtp5的配置:
解决中文乱码问题:
## vi和vim的基本介绍
所有的Linux系统都会内建vi文本编辑器
Vim具有程序编辑的能力,可以看做是Vi的增强版本,可以主动地以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富。
## 关机和重启命令
1、基本介绍:
shutdown
shutdown -h now :表示立即关机
shutdown -h 1:表示一分钟后关机
shutdown -r now:立即重启
halt
就是直接使用,效果等价于关机
sync:把内存的数据同步到磁盘中
注意细节:当我们关机和重启时,都应该先执行一下sync指令,把内存的数据写入到瓷盘中,防止丢失
## 用户管理
说明:
1、Linux系统是一个多用户多任务的操作系统,任何一个要是用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
2、Linux的用户至少要属于一个组
添加用户
语法:useradd [选项] 用户名
添加一个 用户xm
特别说明:cd 表示change directory 切换目录
当创建用户成功后,会自动的创建和用户同名的家目录
也可以通过useradd -d 指定目录 新的用户名 ,给新创建的用户指定家目录
给用户指定或者修改密码
语法: passwd 用户名
删除用户
语法:userdel 用户名
1、删除用户xm,但是要保留家目录
2、删除用户xh以及用户主目录
查询用户信息
语法: id 用户名
查询root信息
当用户 信息不存在时,返回无此用户
切换用户
在操作linux中,如果当前用户的权限不够,可以通过 su - 指令,切换到高权限用户,比如root
语法: su - 切换用户
查询当前用户
语法:whoami / who am I
用户组
介绍:类似于角色,系统可以对有共性的多个用户进行统一的管理
增加组: groupadd 组名
删除组: groupdel 组名
增加用户时直接上组
语法: useradd -g 用户组 用户名
增加一个用户zwj,直接将他指定到wudang
修改用户的组
语法: usermod -g 用户组 用户名
创建一个shaolin组,让将zwj用户修改到shaolin
## 用户和组的相关文件
/etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:注视性描述:主目录:登录Shell
/etc/shadow 文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group 文件
组(group)的配置文件,记录Llinux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
## 实用指令
运行级别说明:
0:关机
1:单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用的运行级别是3和5,要修改默认的运行级别可改文件
/etc/inittab 的 id:5:initdefault:之一行中的数字
命令: init [0123456 ]
面试题:
如何找回root密码,如果不小心忘记root密码,怎么找回
思路:进入到单用户模式,然后修改root密码,因为进入单用户模式,root不需要密码就可以登录。
帮助指令
介绍:当我们对某个指令不熟悉是,我们可以使用linux提供的帮助来了解这个指令的使用方法
基本语法: man [命令或配置文件] (功能描述:获得帮助信息)
help指令
基本语法: help 命令 (功能描述:获得shell内置命令的帮助信息)
文件目录类
pwd指令
基本语法:pwd (功能描述:显示当前工作目录的绝对路径)
ls指令
基本语法: ls [选项] [目录或是文件]
常用选项: -a :显示当前目录所有的文件和目录,包括隐藏的
-l:以列表的方式显示信息
cd指令
基本语法: cd [参数] (功能描述:切换到指定目录)
常用参数:绝对路径和相对路径
cd ~ 或者 cd:回到自己的家目录
cd ..回到当前目录的上一级目录
使用绝对路径切换到root目录
使用相对路径到/root
表示回到当前目录的上一级目录
回到家目录
mkdir指令
介绍:mkdir指令用于创建目录(make directory)
基本语法:mkdir [选项] 要创建的目录
常用选项: -p :创建多级目录
rmdir指令
介绍:rmdir指令删除空目录
基本语法:rmdir [选项] 要删除的空目录
使用细节:rmdir删除的是空目录,如果目录下有内容时无法删除的
提示:如果需要删除非空目录,需要使用 rm -rf 要删除的目录
touch指令
介绍:touch指令创建空文件
基本语法:touch 文件名称 (可以一次性创建多个文件)
cp指令 (重要)
介绍:cp指令拷贝文件到指定目录
基本语法:cp [选项] source dest
常用选项: -r :递归复制整个文件夹
使用细节:强制覆盖不提示的方法: \cp
rm指令
介绍:rm指令移除文件或目录
基本语法: rm [选项] 要删除的文件或目录
常用选项: -r :递归删除整个文件夹
-f : 强制删除不提示
mv指令
介绍:mv移动文件与目录或重名命
基本语法:mv 原文件 重名的文件(功能描述:重命名)
mv 移动的东西 移动到的文件 (功能描述:移动文件)
cat指令
介绍:cat查看文件内容,是以只读的方式打开
基本语法:cat [选项] 要查看的文件
常用选项: -n :显示行号
实用细节:cat只能浏览文件,而不能修改文件,为了方便浏览,一般会带上 管道命令 | more
cat 文件名 | more [分页浏览]
more指令
介绍:more指令是一个基于VI编辑器的文本过滤器,它以全屏的方式按页显示文本文件的内容。more指令中内置了若干个快捷键
基本语法:more 要查看的文件
less指令
介绍:less指令用来分屏查看文件内容,他的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容是,并不是一次将整个文件加载之后才显示的,而是根据显示需要加载内容,对于显示大型文件具有较高的效率
基本语法:less 要查看的文件
>指令和>>指令
介绍:>输出重定向和 >>追加
基本语法:ls -l >文件(功能描述:将列表的内容写入文件a.txt中(覆盖写))
ls -al >>文件(功能描述:列表的内容追加到文件aa.txt的末尾)
cat 文件1 > 文件2(功能描述:将文件1的内容覆盖到文件2中)
echo "内容" >> 文件
echo指令
介绍:echo输出内容到控制台
基本语法:echo [选项] [输出内容]
head指令
介绍:用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
基本语法:head 文件(功能描述:查看文件头10行内容)
head -n 5 文件(功能描述:查看文件头5行内容,5可以使任意数字)
tail指令
介绍:tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容
基本语法:tail 文件(功能描述:查看文件后10行内容)
tail -n 5 文件(功能描述:查看文件后5行内容,5可以使任意行数)
tail -f 文件(功能描述:实时追踪该文档的所有更新)
ln指令
介绍:软连接也叫符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
基本语法:ln -s [源文件或目录] [软连接名](功能描述:给源文件创建一个软连接)
细节说明:当我们使用pwd指令查看目录是,仍然看到的是软连接所在目录
history指令
介绍:查看已经执行过的历史命令,也可以执行历史指令
基本语法:history(功能描述:查看已经执行过历史命令)
事件日期类指令
date指令
介绍:-显示当前日期
基本语法:date(功能描述:显示当前时间)
date + %Y(功能描述:显示当前年份)
date + %m(功能描述:显示当前月份)
date + %d(功能描述:显示当前是哪一天)
date "+%Y-%m-%d %H:%M:%S"(功能描述:显示年月日时分秒)
介绍:设置日期
基本语法:date -s 字符串时间
cal指令
介绍:查看日历指令
基本语法:cal [选项](功能描述:不加选项,显示本月日历)
搜索查找类
find指令
介绍:find指令将从指定目录向下递归的遍历其各个子目录,将满足条件的文件或者目录显示在终端
基本语法:find [搜索范围] [选项]
选项说明:
locate指令
介绍:locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件西戎,查询速度较快,为了保证查询结果的准确度,管理员必须定期更新locate时刻
基本语法:locate 搜索文件
特别说明:locate指令基于数据库查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
grep指令和管道符号
介绍:grep过滤查找,管道符,"|",表示将前一个命令的处理结果输出传递给后面的命令处理
基本语法:grep [选项] 查找内容 原文件
常用选项:
压缩和解压类
gzip/gunzip指令
介绍:gzip用于压缩文件,gunzip用于解压的
基本语法:gzip 文件(功能描述:压缩文件,只能将文件压缩为 *.gz 文件)
gunzip 文件.gz(功能描述:解压缩文件命令)
zip/unzip指令
介绍:zip用于压缩文件,unzip用于解压,在这个项目打包发布中很有用
基本语法:zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述:解压缩文件)
zip常用选项: -r :递归压缩,级压缩目录
unzip的常用选项: -d<目录> :指定解压后文件的存放目录
tar指令
介绍:tar指令是打包指令,最后打包后的文件是 .tar.gz 的文件
基本语法: tar [选项] XXX.tar.gz 打包的内容(功能描述:打包目录,压缩后的文件格式 .tar.gz)
选项说明:
##组管理和权限管理
linux组的基本介绍:
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有组、所在组、其他组的概念
1、所有组
2、所在组
3、其他组
4、改变用户所在组
文件/目录所有者
介绍:一般文件的创建者,谁创建了该文件,就自然地成为该文件的所有者
查看文件的所有者
1、指令: ls -ahl
修改文件所有者
1、指令: chown 用户名 文件名
组的创建
基本指令:groupadd 组名
文件目录 所在组
介绍:当某个用户创建了一个文件后,默认这个文件的所在组
查看文件/目录所在组
基本指令: ls -ahl
修改文件所在组
基本指令: chgrp 组名 文件名
其他组
介绍:除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
改变用户所在组
介绍:在添加用户时,可以指定将该用户添加到那个组中,同样的用root的管理权限可以改变某个用户所在的组
改变用户所在组
1、 usermod -g 组名 用户名
2、 usermod -d 目录名 用户名 改变该用户登录的初始目录
## 权限的基本介绍
ls -l 中显示的内容如下:
-rwxrw-r-- l root root 1213 Feb 2 09:38 abc
0-9位说明
1、第0位确定文件类型(d,-,1,c,b)
2、第1-3位确定所有者(该文件的所有者)拥有该文件的权限 。---User
3、第4-6位确定所属组(同用户组的)拥有该文件的权限 --Group
4、第7-9位确定其他用户拥有的文件的权限 --Other
rwx权限详解
rwx作用到文件
1、[ r ]代表可读(read):可以读取,查看
2、[ w ]代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限才能删除该文件
3、[ x ]代表可执行(execu):可以被执行
rwx作用到目录
1、[ r ]代表可读(read):可以读取,ls查看目录历史
2、[ w ]代表可写(write):可以修改,目录内创建+删除+重命名目录
3、[ x ]代表可执行(execute):可以进入该目录
重点:
修改权限 -chmod指令
介绍:通过chmod指令,可以修改文件或者目录的权限
第一种方式: + 、-、= 变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
1、chmod u=rwx,g=rx,o=x 文件目录名
2、chmod o+w 文件目录名
3、chmod a-x 文件目录名
第二种方式:通过数字变更权限
介绍:r=4 w=2 x=1 rwx=4+2+1=7
指令:chmod u=rwx,g=rx,o=x 文件目录名 ===== chmod 751 文件目录名
修改文件所有者 -chown
基本介绍: chown newowner file 改变文件的所有者
chown newowner :newgroup file 改变用户的所有者和所有组
-R 如果是目录 则使其下所有子文件或目录递归生效
修改文件所在组 -chgrp
基本介绍: chgrp newgroup file 改变文件的所在组
## 最佳实践 (重点重点)
## crond 任务调度
crontab 进行 定时任务的设置
概述:任务调度:是指系统在某个时间执行的特定的命令或程序
任务调度分类:1、系统工作:有些重要的工作必须周而复始的执行。如病毒扫描
2、个别用户工作:个别用户希望执行某些程序,比如对数据库的备份
基本语法: crontab [选项]
常用选项:
crond相关指令
1、crontab -r :终止任务调度
2、crontab -l:列出当前有哪些任务调度
3、service crond restart [重启任务调度]
## 磁盘分区和挂载
分区的方式:
1、mbr分区:
最多支持四个主分区
系统只能安装在主分区
扩展分区要占一个主分区
MBR最大只支持2TB,但拥有最好的兼容性
2、gtp分区
支持无限多个主分区(单操作系统可能限制,比如windows下最多128个分区)
最大支持18EB的大容量(EB=1024 PB PB=1024TB)
Windows7 64位以后支持gtp
Linux分区
原理介绍:
1、 Linux来说无论有几个分区,分给那一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,linux中每哥分区都是用来组成整个文件系统的一部分
2、linux采用了一种叫“载入”的处理方法,他的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使他的存储空间在一个目录下获得
3、示意图
硬盘说明:
1、linux硬盘分为IDE硬盘和SCSI硬盘,目前基本丧失SCSI硬盘
2、对于IDE硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,他们是主分区或扩展分区,从5开始就是逻辑分区。
列子:hda3 表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区
3、对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样
## 挂载的经典案例
## 磁盘查询情况
查询系统整体磁盘使用情况
基本语法:df -h
查询指定目录的磁盘占用情况
基本语法:du -h【选项】 /目录
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小的汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
磁盘情况-工作实用指令
1、统计/home文件夹下文件的个数
2、统计/home文件夹下目录的个数
3、统计/home文件夹目录的个数,包括子文件夹里的
4、统计文件夹目录的个数,包括子文件夹里的、
5、以树状显示目录结构
## 网络配置
Linux网络配置原理图(韩虚拟机)
目前我们的网络配置采用的是NAT
查看网关
Linux网路环境配置
第一种方法(自动获取)
说明:登录后,通过界面的设置来获取IP
特点:Linux启动后会自动获取IP,缺点是每次自动获取的IP地址可能不一样,不适合用于做服务器,应为我们的服务器IP需要时固定
第二种方法(指定固定的IP)
说明:直接修改配置文件来指定IP,并可以链接到外网(推荐),编辑 vi /etc/sysconfig/network-scripts/ifcfg-eth0
要求:将IP地址配置的静态的,ip地址为192.168.130
修改完后,要重启服务
1、service network restart
2、reboot 重启系统
## 进程管理(重点)
进程的基本介绍
1、在linux中,每个执行的程序(代码)都成为一个进程。每个进程都分配一个ID号
2、每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器
3、每个进程都可能以两种方式存在的。前台与后台。所谓前台进程就是用户目前的品目可以进行操作的。后台进程是实际在操纵座的,但由于屏幕上无法看到的进程,通常会使用后台执行
4、一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束
显示系统执行的进程
基本介绍:ps命令是用来查看目前系统中,有哪些正在执行,以及他们执行的情况,可以不加任何参数
ps显示的信息选项
ps -a:显示当前终端的所有进程信息
ps -u:以用户的格式显示进程信息
ps -x:显示后台进程运行的参数
终止进程kill和killall
介绍:若是某个进程执行一半需要停止是,或者是已消了很大的系统资源是,此时可以考虑停止该进程。使用kill命令来完成此项任务
基本语法:kill [选项] 进程号(功能描述:通过进程号杀死进程)
killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢是很有用)
常用选项: -9:表示强迫进程立即停止
服务(service)管理
介绍:服务本质就是进程,但是是运行在后台的,通常都会监听某个端口等待其他程序的请求,比如(mysql,sshd,防火墙灯),因此我们又称守护进程,是linux中非常重要的知识点
service管理指令:
service 服务名 start | stop | restart | reload | status
systemctl
细节讨论:
1、关闭或者启用防火墙后,立即生效
2、这种方式知识临时生效,当重启系统后,还是回归以前对服务的设置
3、如果希望设置某个服务自启动或关闭永久生效,要是用chkconfig指令
查看服务名:
方式1:使用setup -> 系统服务 就可以看到了
方式2:/etc/init.d/服务名称
chkconfig指令
介绍:通过chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭
基本语法:
1、查看服务 chkconfig --lisr | grep xxx
2、chkconfig 服务名 --list
3、chkconfig --level 5 服务名 on/off
安装JDK
安装步骤:
1、将软件通过xftp5上传到/opt下
2、解压缩到/opt
3、配置环境变量的配置文件vim /etc/profile
4、JAVA_HOME=/opt/jdk1.7.0_79
5、PATH=/opt/jdk1.7.0_79/bin:$PATH
6、export JAVA_HOME PATH
tomcat的安装
步骤:
1、解压缩到/opt
2、启动tomcat ./startup.sh
3、开放端口 vim/etc/sysconfig/iptables