Linux学习笔记
一:基本介绍
1.Linux应用领域
(1)个人桌面应用领域
此领域是传统linux应用最薄弱的环节,但由于ubuntu,fedora等优秀桌面的兴起,Linux在桌面领域的占有率逐渐提高。
(2)服务器应用领域
Linux在此领域的应用是最强的。Linux免费,稳定,高效。
(3)嵌入式领域
Linux运行稳定,对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百KB等特点,近几年在嵌入式领域的应用得到非常大的提高。
主要应用:机顶盒,数字电视,网络电话,程控交换机,手机,PDA,智能家居,安卓内核等领域,以及未来的物联网应用。
2.学习Linux的阶段
——基础
第一阶段:
Linux环境下的基本操作命令,包括 文件操作命令(rm mkdir chmod chown),编辑工具的使用(vi vim),Linux用户管理(user add,user del,user mod)
第二阶段:
Linux的各种配置(环境变量配置,网络配置,服务配置)
第三阶段:
Linux下如何搭建对应语言的开发环境(大数据,javaEE,Python等)
第四阶段:
能编写shell脚本,对Linux服务器进行维护。
——进阶
第五阶段:
能进行安全设置,防止攻击,保障服务器正常运行,能对系统调优。
第六阶段:
深入理解Linux系统(对内核优研究),熟练掌握大型网站应用架构组成,并熟悉各个环节的部署和维护方法。
二、Linux基础部分
1.Linux介绍
Linux是一款操作系统。免费,开源,安全,高效,稳定,处理高并发非常强悍,现在很多的企业级的项目都部署到Linux/unix服务器运行。
Linux创始人:Linus(林纳斯)
2.Linux的主要发行版
(实质是以Linux为内核的定制)
如:CentOS,Redhat,Ubuntu,Suse,红旗Linux
3.目前主要的操作系统
Windows,Android,车载系统,mac,iOS,Linux等。
4.Linux与Unix
(1)Linux的内核与shell,应用及硬件的关系
(2)Linux与Unix的关系
5.Linux与Windows的区别
6.VM虚拟机和Linux(CentOS)安装
(1)VM安装
*步骤:
1)去BIOS里修改设置开启虚拟化设备支持
2)安装虚拟机软件(具体看:E:\学习资料\Linux\韩顺平版资料\课件尚硅谷大数据技术之安装VMWare)
(2)CentOS安装
*步骤:
1)创建虚拟机(空间)
&注意:(面试)
在创建虚拟机时网络连接的三种形式说明:
- 桥连接:Linux可以和其他的系统通信。但可能造成ip冲突。
- NAT:网络连接转换方式,Linux可以访问外网,不会造成ip冲突。(此处所选)
- 主机模式:你的linux是一个独立的主机,不能访问外网。
2)点击虚拟机设置,配置centOS镜像文件,点击安装
(具体查看:E:\学习资料\Linux\韩顺平版资料\课件尚硅谷大数据技术之Linux下安装 CentOS和网络配置)
*CentOS的终端使用和联网
1)终端的使用,点击鼠标右键,即可选择打开终端。
2)配置网络。进行上网。
点击上面右侧的联网按钮,即可启用eth0,即可成功连接到网络,就可上网。
(3)vmtools的安装和使用
1)作用:
*可以直接粘贴命令在windows和centOS系统之间
*可以设置Windows和centOS的共享文件夹
2)安装步骤
1.进入centOS
2.点击vm菜单的->install vmware tools
3.CentOS会出现一个vm的安装包
4.点击右键解压,得到一个安装文件
5.进入该vm解压的目录,该文件在 /root/桌面/vmware-tools-distrib/下
6.安装 ./vmware-install.pl
7.全部使用默认设置即可
8.需要reboot重新启动即可生效
3)使用vmtools来设置windows和Linux的共享文件夹
1.菜单->vm->setting,进入设置
*注意:设置选项为always emable,即可读写。
2.设置windows和centOS可共享的目录
3.共享文件夹在centOS的位置为/mnt/hgfs/下。
7.Linux的目录结构
(1)基本介绍
Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录”/”,然后在此目录下再创建其他的目录。
*(在Linux中,一切皆文件)
(2)目录结构的具体介绍
(每个目录应当存放规定对应的文件类型,不可乱放)
(3)Linux目录总结
1.Linux的目录中有且只有一个根目录。
2.Linux的各个目录存放的内容是规划好的,不能乱放文件。
3.Linux是以文件的形式管理我们的设备,因此Linux系统,一切皆为文件。
4.Linux的各个文件目录下存放什么内容,必须要有一个认知。
5.应当记住一个Linux目录树。
三、Linux实操部分
1.远程登录Linux系统介绍
(1)作用
(2)说明
企业开发流程:
- linux服务器是开发小组共享。
- 正式上线的项目是运行在公网的。
- 程序员需远程登录到centOS进行项目管理或者开发。
- 画出简单的网络拓扑示意图。
- 远程登录客户端有Xshell5,Xftp5。(其他大同小异)
2.远程登录Linux——Xshell5
(1)介绍及作用
Xshell是目前最好的远程登录Linux操作系统的软件,流畅的速度并且完美解决了中文乱码的问题。
Xshell是一个强大的安全终端模拟软件,支持SSH1,SSH2,以及Windows平台的TELNET协议。
Xshell可以在Windows界面下用来访问远端不同系统的服务器,从而比较好的达到远程控制终端的目的。
注意说明:如果希望安装好Xshell5就可以远程访问Linux系统的话,需要让Linux启用SSHD服务(进入Linux中设置,默认开启),该服务会监听22号端口。
(2)安装Xshell5及使用
1.安装
直接安装即可。
2.使用:
1)Xshell关键配置
2)只有配置好后才能连接Linux系统。
3)Xshell5远程登录到Linux后,即可使用指令来操作Linux系统。
3.远程上传下载文件(传输)——Xftp5
(1)Xftp5软件介绍
一个机遇Windows平台的功能强大的SFTP,FTP文件传输软件。Windows用户能安全的在UNIX/Linux和Windows PC之间传输文件。
(2)Xftp5的安装
直接下一步即可。
(3)Xftp5的配置和使用
*新建连接时的配置关键图:(配置完点击确定,连接,输入root密码即可)
(4)解决XFTP5中文乱码问题
4.vi和vim编辑器(order)
(1)介绍
所有的Linux系统都会内建vi文本编辑器。
Vim具有程序编辑的能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补充,编译及错误跳转等方便编程的功能丰富。
(2)vi和vim的三种常见模式
1.正常模式
在正常模式下,我们可以使用快捷键。
以vim打开一个档案就直接进入一般模式了(默认模式)。这个模式中,可以使用【上下左右】按键移动光标,可以使用【删除字符】或【删除整行】来处理档案内容,也可以使用【复制,粘贴】来处理你的文件数据。
2.插入模式/编辑模式
在一般模式下,输入I,I,o,O,a,A,r,R都可进入编辑模式,一般输入i。
3.命令行模式
在这个模式下,可以提供你相关指令,完成读取,存盘,替换,离开vim,显示行号等的动作则是此模式中达成的。(输入ESC)
(3)vi和vim三种模式的相互转换图
(4)快捷键
*示例:
1.拷贝当前行【yy】,拷贝当前行向下的5行【5yy】,并粘贴【p】。
2.删除当前行【dd】,删除当前行向下5行【5dd】
3.在文件中查找某个单词【命令行下 /关键字,回车=查找,输入n=查找下一个】
4.设置文件的行号,取消文件的行号【命令行下 :set nu :set nonu】
5.编辑某个文件,使用快捷键到文档最末行【G】和最首行【gg】。(正常模式下)
6.在一个文件中输入“hello”,然后撤销这个动作【u】
7.编辑某文件,并将光标移动到底20行【shift+g】
第一步:显示行号 :set nu
第二步:输入20
第三步:输入shift+g
*更多快捷键
(此处省略,具体百度)
(5)vim和vi的快捷键键盘一览图
5.开机,重启和用户登录注销(order)
(1)关机&重启命令
*shutdown:
Shutdown -h now:表示立即关机。
Shutdown -h 1:表示一分钟后关机。
Shutdown -r now:立即重启。
*halt
直接使用,效果等价于关机。
*reboot:
重启系统。
*sync:
把内存的数据同步到磁盘。
*注意:当我们关机或是重启时,都应该先执行一下sync指令(不会显示效果,内部执行),把内存的数据写入磁盘,防止数据丢失。
(2)用户登录和注销
1.基本介绍
1)登录时尽量少用root账号登录,因为它是系统管理员,最大的权限,避免操作失误。可以使用普通用户登录,登录后再用”su-用户名”命令来切换成系统管理员身份。
2)在提示符下输入logout即可注销用户。
2.注意:
1)logout注销指令在图形运行级别下无效(即图形界面),在运行级别3下有效(即远程控制)。
2)运行级别的概念(待补充)
6.用户管理(order)
(1)基本介绍
*用户管理的规则:
*说明:
1)Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
2)Linux的用户需要至少属于一个组。
(2)添加用户
1)基本语法
Useradd [选项] 用户名
*未指定家目录,此方式会默认在/home/目录下创建与用户同名的家目录。
Useradd -d /home/任意新目录名X 用户名
*此方式会在/home/目录下创建一个名为X的目录,作为该用户的家目录。
2)特别说明:
*在root目录下操作。
*指令cd:change directory,标识切换目录。
3)实例:
(3)给用户指定/修改密码
1)基本语法
Passwd 用户名
2)案例
Passwd xh
密码:输入密码即可(隐藏)
确认密码:确认密码即可(隐藏)
(4)删除用户
1)基本语法
*删除用户但不删除其家目录
Userdel 用户名
*删除用户同时删除其家目录
Userdel -r 用户名
2)注意:
1.删除用户需要在root用户下执行。
2.实际工作中删除用户时一般不删除其家目录,因为需要保留其所留下的源码资料。
(5)查询用户信息
1)基本语法
id 用户名
2)实例
3)细节说明
*当用户不存在时,返回“无此用户”。
(6)切换用户
1)介绍
在操作Linux时,如果当前用户的权限不够,可以通过su – 指令,切换到高权限用户,比如root。
2)基本语法
Su – 切换的用户名
3)实例
4)细节说明
*从权限高的用户切换到权限低的用户,不需要输入密码。反之需要。
*当需要返回到原来的用户时,使用exit指令。
(7)查询当前用户/登录用户
1)基本语法
Whoami/who am i
7.用户组(order)
(1)介绍
类似于角色,系统可以对有共性的多个用户进行统一的管理。
(2)增加组
1)基本语法
groupadd 组名
2)案例:
(3)删除组
1)基本语法
groupdel 组名
2)案例
(4)增加用户时直接加上组
1)基本语法
Useradd -g 用户组 用户名
2)案例
(5)修改用户的组
1)基本语法
usermod -g 用户组 用户名
2)案例
8.用户和组的文件
(1)/etc/passwd文件
用户(user)的配置文件,记录用户的各种信息。
每行的含义:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
(2)/etc/shadow文件
口令配置文件。
每行的含义:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时时间:失效时间:标志
(3)/etc/group文件
组(group)的配置文件,记录Linux包含的组的信息
每行含义:
组名:口令:组标识号:组内用户列表
(4)注意:
进入任意一个文件后(vim /etc/文件名),如果需要退出,则输入:q(退出)/:wq(保存并退出,不建议修改)/:q!(强制退出)
9.实用指令——运行级别方面
(1)指定运行级别
1)运行级别说明:
0:关机(一开机识别到是此级别就会关机)
1:单用户模式【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务(常用)
4:保留
5:图形界面
6:重启(一开机识别到是此级别就会重启)
2)系统的运行级别的配置文件目录:
/etc/inittab
(2)切换到指定运行级别的指令
1)基本语法
Init[0,1,2,3,4,5,6]
2)其他方法
Vim进入/etc/inittab下,按i进入编辑模式,直接修改,然后:wq保存退出即可。
(3)面试题
问:如何找回root密码?
思路:进入到单用户模式,然后修改root密码。因为进入单用户模式,root不需要密码就可以登录。
具体操作:
开机à在引导时输入【回车键】à看到一个界面输入【e】à看到一个新的界面,选中第二行(编辑内核)再输入【e】à在这行输入【1】,再输入【回车键】à再次输入b,这时就会进入到单用户模式。
进入后,使用passwd指令直接修改密码即可。
(4)注意:
如果Linux强制被别人修改为0运行级别或者6运行级别,此时我们不能进入系统,但是可以进入单用户模式下进行恢复。
10.实用指令——帮助指令
(1)man指令
1)作用:
获取某指令的帮助信息。
2)基本语法:
man [命令或配置文件]
(2)help指令
1)作用:
获取shell内置命令的帮助信息。
2)基本语法
help [命令]
11.实用指令——文件目录类
(1)pwd指令
1)基本语法
pwd //功能:显示当前工作目录的绝对路径
2)示例:
(2)ls指令
1)基本语法
ls [选项] [目录或文件]
*常用选项:
-a:显示当前目录所有文件和目录,包括隐藏的。
-l:以列表的方式显示信息。
2)示例:
(3)cd指令
1)基本语法
cd 【参数】 //功能:切换到指定目录
2)常用参数
1.cd ~ 或者cd:回到自己的家目录
2.cd ..:回到当前目录的上一级目录
3.cd 目录路径:切换到指定目录(可以是绝对路径也可是相对路径)
*绝对路径和相对路径解释:
3)案例
1.使用绝对路径切换到/root目录
2.使用相对路径切换到/root目录
(需根据当前用户目录在哪个目录下,才能写出这个指令,如果在/root同级目录的再下一级目录则:)//既然cd..为返回上级目录,那么此处可理解为回到上级目录的上级目录,因此有两个../
3.回到当前目录的上一级目录
4.回到家目录
(或者直接cd)
(4)mkdir指令
1)作用
用于创建目录。
2)基本语法
mkdir [选项] 要创建的目录
*常用选项:
-p:创建多级目录。
3)案例:
1.创建一个目录
2.创建多级目录
(5)rmdir指令
1)作用
删除空目录。
2)基本语法
rmdir [选项] 要删除的空目录
3)注意细节
Rmdir删除的是空目录,如果目录下有内容是无法删除的。
如果要删除一个非空目录,需要使用“rm -rf 要删除的目录”。
4)示例:
1.删除空目录
2.删除非空目录
(6)touch指令
1)作用:
创建一个/多个空文件。
2)基本语法
touch 文件名称
3)示例
(7)cp指令
1)作用
拷贝文件到指定目录(也可拷贝目录)。
2)基本语法
cp [选项] source dest //将source文件拷贝到dest文件夹中去。
3)常用选项
-r:递归复制整个文件夹。
4)使用细节
1.强制覆盖不提示方法:使用\cp指令
2.可以通过 上下箭头 的键,到处原来使用过的指令。
5)应用示例
1.将/home/ccc.txt拷贝到/home/bbb目录下。
2.递归复制整个文件
(1)将bbb/文件夹复制到bbb2文件夹下
(2)将bbb/文件夹再次复制到bbb2/下进行覆盖
(8)rm指令
1)作用
移除文件或目录。
2)基本语法
rm [选项] 要删除的文件或目录
3)常用选项
-r:递归删除整个文件夹。
-f:强制删除不提示。
4)示例
1.将/home/aaa.txt删除
2.递归删除整个文件夹/home/bbb
//不提示强制删除
(9)mv指令
1)作用
移动文件与目录、重命名。
2)基本语法
重命名:mv oldNameFile newNameFile
移动文件:mv /temp/movedfile /targetFolder (将movedfile文件移动到targetFolder文件夹中)
3)示例
1.将/home/aaa.txt文件重命名为pig.txt
2.将/home/pig.txt文件移动到/root目录下
(10)cat指令
1)作用
查看文件内容,但是只能只读方式打开。
2)基本语法
cat [选项] 要查看的文件
3)常用选项
-n:显示行号
4)使用细节
1.cat只能浏览文件,不能修改文件。
2.为了浏览方便,一般会在命令后添加管道命令 | more,即cat 文件名 | more,实现分页浏览。
5)示例
(11)more指令
1)作用:
一个机遇VI编辑器的文本过滤器。它以全屏幕的方式按页显示文本文件的内容。More指令中内置了若干快捷键,具体看下面。
2)基本语法
more 要查看的文件
3)快捷键
4)示例
(12)less指令
1)作用
用于分屏查看文件内容,功能与more相似,但是比more指令更强大,支持各种显示终端。
Less指令在显示文件内容时,并不是一次将整个文件加载之后再显示,而是根据显示需要加载内容(展示多少就加载多少),对于显示大型文件具有较高的效率。
2)基本语法
less 要查看的文件
3)快捷键
4)示例
(13)>指令和>>指令
1)作用
>:输出重定向,一般会覆盖原先的内容。
>>:将一个内容追加到另一个文件中去。
2)基本语法
1.ls -l > 文件 (将ls -l所显示的列表内容写入某文件中且覆盖)
2.ls -al >> 文件 (将ls -al所显示的内容追加到某文件中)
3.cat 文件1 > 文件2 (将文件1的内容覆盖到文件2)
4.echo “【内容】” >> 文件 (将【内容】追加到文件中,如果是>则为覆盖)
3)示例
1.将/home目录下的文件列表写入到/home/info.txt中。
2.将当前日历信息【cal命令/文件】追加到/home/mycal文件中。
3. cat 文件1 > 文件2和echo “【内容】” >> 文件命令的使用
(14)echo指令
1)作用
输出内容到控制台。
2)基本语法
echo [选项] [输出内容]
3)示例
1.使用echo指令输出环境变量,输出当前的环境路径。
2.使用echo指令输出hello world
(15)head指令
1)作用
用于显示文件开头部分的内容,默认情况下head指令显示文件的前10行内容。
2)基本语法
1.head 文件 //查看文件头10行内容
2.head -n 5 //查看文件头5行内容,5可以是任意行数。
3)示例
1.查看/etc/profile的前5行内容
(16)tail命令
1)作用
用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。
2)基本语法
1.tail 文件 //查看文件后10行内容
2.tail -n 5 文件 //查看文件后5行内容,5可以是任意数字。
3.tail -f 文件 //实时追踪该文档的所有更新,工作中常用指令
3)示例
1.查看/etc/profile最后5行代码
2.实时监控info.txt,文件变化时,是否可看到变化,实时追加日期。
(17)ln指令
1)作用
软链接指令即符号链接,类似于快捷方式。主要存放了链接其他文件的路径。创建的是一个文件夹,访问这个文件夹就直接访问这个存放的链接。
2)基本语法
ln -s [原文件或目录] [软链接名] //给原文件创建一个软链接
3)细节说明
*当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录。
*如果删除这个软链接,则使用“rm -rf 软链接路径”,注意路径前后不可加/
4)示例
(18)history指令
1)作用
查看已经执行过的历史命令,也可以执行历史命令。
2)基本语法
history //查看已经执行过的历史命令
3)案例
1.显示所有的历史命令
2.显示最近使用过的10个指令
3.直接执行历史编号为5的指令
12.实用指令——时间日期类
(1)date指令—显示当前日期
1)基本语法
1.date //显示当前时间
2.date “+%Y” //显示当前年份
3.date +%m //显示当前月份
4.date +%d //显示当前是哪一天
5.date +%Y-%m-%d %H:%M:%S //显示年月日时分秒
2)示例
1.显示当前时间信息
2.显示当前时间年月日
3.显示当前时间年月日时分秒
(2)date指令—设置日期
1)基本语法
date -s 字符串时间
2)示例
1.设置系统当前时间,如设置为2020-11-11 11:11:11
(3)cal指令
1)作用
查看日历指令。
2)基本语法
cal[选项] /默认为显示本月日历
3)示例
1.显示当前日历
2.显示2020年日历
13.实用指令——搜索查找类
(1)find指令
1)作用
将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
2)基本语法
Find [搜索范围] 【选项】
3)选项说明
4)示例
1.按文件名:根据名称查找/home目录下的info.txt文件
//注意,此处也可模糊查询,如*.txt
2.按照用户名:查找/opt目录下,用户名称为xtt的文件
3.查找整个Linux系统下小于于10k的文件(+n 大于 -n 小于 n 等于)
(2)locate指令
1)作用
可以快速定位文件路径。
Locate指令需事先建立系统中所有文件名称及路径的locate数据库事先快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快,为了保证查询结果的准确度,管理员必须顶起更新locate时刻。
2)基本语法
locate 搜索的文件
3)特别说明
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
4)示例
使用locate指令快速定位info.txt文件所在目录。
(3)grep指令和管道符号|
1)作用
过滤查找,通常和管道符号连用。
管道符号“|”:表示将前一个命令的处理结果输出传递给后面的命令处理。
2)基本语法
grep[选项]查找内容 源文件
3)常用选项
4)示例
在info.txt文件中,查找“yes”所在行,并且显示行号。
14.实用指令——压缩和解压类
(1)gzip/gunzip指令
1)作用
gzip用于压缩文件,gunzip用于解压文件。
2)基本语法
gzip 文件 //压缩文件,只能讲文件压缩为.gz文件
gunzip 文件.gz //解压文件
3)示例
1.gzip压缩,将home目录下的info.txt文件进行压缩。
2.gunzip解压,将/home下的info.txt.gz文件进行解压。
(2)zip/unzip指令
1)作用
zip用于压缩文件。
unzip用于解压。
此指令在项目打包发布中很有用。
2)基本语法
zip [选项] XXX.zip 将要压缩的内容 //压缩文件和目录的命令
unzip [选项] XXX.zip //解压缩文件
3)常用选项
Zip:-r 递归压缩,即压缩目录。
Unzip:-d<目录> 指定解压后文件的存放目录。
4)示例
1.将/home下的所有文件进行压缩成mypackage.zip
2.将mypackage.zip解压到/opt/目录下
(3)tar指令
1)作用
打包指令,最后打包的文件是.tar.gz的文件。
2)基本语法
tar [选项] XXX.tar.gz 打包的内容 //打包目录,压缩后的文件格式.tar.gz,XXX为压缩包名
3)选项说明
4)示例
1.压缩多个文件,将/home/a1.txt和/home/a2.txt压缩成a.tar.gz
2.将/home的文件夹压缩成myhome.tar.gz
3.将a.tar.gz解压到当前目录
4.将myhome.tar.gz解压到/opt/目录下
15.组管理(order)
(1)Linux组的基本介绍
在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其它组的概念。
16.组管理——文件/目录所有者(order)
(1)概念
文件/目录所有者一般为文件的创建者。
(2)ls -ahl指令
1)作用
查看文件的所有者。
2)示例
创建一个组police,再创建一个用户tom,然后使用tom来创建一个文件。
(3)chown指令
1)作用
修改文件所有者。
2)基本语法
chown 用户名 文件名 //用户名即为新的所有者
3)示例
使用root创建一个文件apple.txt,然后将其所有者修改为tom
17.组管理——组的创建(order)
(1)groupadd指令
1)基本语法
groupadd 组名
2)示例
创建一个组monster,创建一个用户fox并放入monster中。
18.组管理——文件/目录所在组(order)
(1)概念:
当某个用户创建了一个文件后,这个文件所在组就是该用户所在的组。
(2)chgrp指令
1)作用
修改文件所在的组。
2)基本指令
chgrp 组名 文件名
3)示例
使用root用户创建文件orange.txt,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到police组。
19.组管理——其他组和改变用户所在组(order)
(1)其他组概念
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。
(2)usermod指令
1)改变用户所在组/目录
1. usermod -g 组名 用户名 //将指定用户修改到指定组
2. usermod -d 目录名 用户名 //改变该用户登陆的初始目录
2)示例
创建一个bandit组,将tom这个用户从原来的police组修改到bandit组。
20.权限(order)
1.权限的基本介绍
使用ls -l中显示内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
01 2 34 56789
0-9位说明:
- 第0位确定文件类型(d:目录,-:文件,l:软链接,c:字符设备,b:块文件,如硬盘)
- 第1-3位确定文件所有者拥有改文件的权限——user
- 第4-6位确定文件所属组(同用户组)拥有改文件的权限——group
- 第7-9位确定其他用户拥有改文件的权限——other
如图:
2.rwx权限详解
(1)rwx作用到文件
1)[r]:可读,可查看。
2)[w]:可写,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限。
3)[x]:可执行该文件
(2)rwx作用到目录
1)[r]:可读,可用ls查看目录内容。
2)[w]:可以修改,可在目录内创建+删除+重命名目录。
3)[x]:可执行,可以进入该目录。
3.文件及目录权限实际案例(重要)
ls -l 中显示的内容如下:
- rwx rw- r-- 1 root root 1213 Feb 2 09:39 abc
*解释这些字符的意义:
1)第一个字符代表文件类型
2)第一组rwx:文件拥有者的权限是读,写,执行。
3)第二组rw-:与文件拥有者同一组的用户的权限是读,写但不能执行。
4)第三组r--:不与文件拥有者同组的其他用户的权限是读,但不能写和执行。
*注意:rwx可用数字表示,r=4,w=2,x=1
5)1:对文件:硬链接数,对目录:子目录数
6)root:所有者用户
7)root:所有组
8)1213:文件大小,如果是目录则默认4069/4.0K
9)Feb 2 09:39:最后修改日期
10)abc:文件名
4.修改权限-chmod指令
(1)作用
修改文件或者目录的权限。
(2)基本语法
1)方式一:通过+-=变更权限
u:所有者 g:所有组 o:其他人 a:所有人(ugo总和)
*语法:
- chmod u=rwx,g=rx,o=x 文件目录名
- chmod o+w 文件目录名
- chmod a-x 文件目录名
*案例:
给abc文件的所有者读写执行的权限,给所在组读执行权限,给其他组读执行权限。
2)方式二:通过数字变更权限
r=5,w=2,x=1
*语法:
chmod 751 文件目录名
//等同于chmod u=rwx,g=rx,o=x 文件目录名
*案例:
将/home/abc.txt文件的权限修改为rwxr-xr-x,使用数字方式实现。
5.修改文件所有者—chown指令
(1)基本语法
chown newowner file //改变文件的所有者
chown newowner:newgroup file //改变用户的所有者和所在组
-R 如果是目录,则使其下所有子文件或目录递归生效(重要)
(2)案例
1.将/home/abc.txt文件的所有者修改为tom
2.将/home/kkk目录下所有的文件和目录的所有者都修改成tom(-R)
6.修改文件所在组-chgrp指令
(1)基本语法
chgrp newgroup file //改变文件的所在组
(2)案例
1. 请将 /home/abc .txt 文件的所在组修改成 bandit (土匪)
2.将/home/kkk目录下的所有文件和目录的所在组都修改为bandit(-R)
7.注意事项
(1)对于用户访问某目录,必须要有【r】权限和【x】权限才可以。
(2)当修改了某组的权限,该组的已登录的用户需要重新登录才能起作用。
8.实战入门(巩固之前,重要!)
(1)实战一
1.建立两个组(神仙,妖怪)
建立四个用户,(师徒四人)
设置密码
悟空八戒放入妖怪组,沙僧唐僧神仙组
2.悟空创建一个文件monkey.java,并输入iamamonkey;
给八戒一个rw权限,让八戒修改 monkey.java加入一句话( i am pig)
3.唐僧 沙僧 对该文件没有权限
4.把 沙僧 放入妖怪组
5.让沙僧 修改 该文件 monkey, 加入一句话 ("我是沙僧,我是妖怪!");
(2)实战二
1 用 root 登录,建立用户 mycentos,自己设定密码
2.用 mycentos 登录,在主目录下建立目录 test/t11/t1
3.在 t1 中建立一个文本文件 aa,用 vi 编辑其内容为 ls –al
4.改变 aa 的权限为可执行文件[可以将当前日期追加到一个文件],运行该文件./aa
5.删除新建立的目录 test/t11/t1
6.删除用户 mycentos 及其主目录中的内容
7.将 linux 设置成进入到图形界面的
8. 重新启动 linux 或关机
21.实用指令——任务调度
(1)crond指令
1)作用
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描。
2.个别用户工作:个别用户可能希望执行某些程序。比如对mysql数据库的备份。
2)基本语法
crontab [选项]
3)常用选项
4)快速入门
设置任务调度文件:/etc/crontab
设置个人任务调度。执行crontab -e 命令
接着输入任务到调度文件
如:* /1 * * * * ls -l /etc/ > /tmp/to.txt
意思:每小时的每分钟执行ls -l /etc/ > /tmp/to.txt命令
*步骤:
1.cron -e
2. */ 1 * * * * ls -l /etc >> /tmp/to.txt
3.当保存退出后就执行程序。
4.在每一分钟都会自动调用
5)参数说明
1.占位符说明:
2.特殊符号说明
3.特定时间执行任务案例
6)实战案例
案例 1:每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件
步骤:
(1)先编写一个文件mytask1.sh脚本文件
(2)给mytask1一个可执行的权限
(3)crontab -e
(4)设置命令
*/1 * * * * /home/mytask1.sh脚本文件
(5)完成
案例 2:每隔 1 分钟, 将当前日期和日历都追加到 /tmp/mycal 文件
(1)先编写一个文件mytask2.sh
(2)给mytask2一个可执行的权限
(3)crontab -e
(4)设置命令
(5)完成
案例 3:每天凌晨 2:00 将 mysql 数据库 testdb ,备份到文件中/tmp/mydb.bak
(提示:数据库备份指令:/usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak)
(1)先编写一个文件mytask3.sh脚本文件
(2)给mytask3一个可执行的权限
(3)crontab -e
(4)设置命令
0 2 * * * /home/mytask3.sh
(5)完成
(2)crond其它指令
1) conrtab –r:终止任务调度。
2) crontab -l:列出当前有那些任务调度
3) service crond restart:[重启任务调度]
22.Linux磁盘分区和挂载(order)
(1)分区基础知识
1)分区的方式
1.mbr分区
1.最多支持四个主分区
2.系统只能安装在主分区。
3.扩展分区要占一个主分区。
4.MBR最大只支持2TB,但拥有最好的兼容性。
2.gtp分区
1.支持无线多个主分区(但操作系统可能限制,如Windows下最多128个分区)
2.最大支持18EB的大容量(EB=1024PB,PB=1024TB)
3.Windows7 64位以后支持gtp
(2)Windows下的磁盘分区
(3)Linux分区
1)原理介绍
1)Linux无论有几个分区,分给哪一个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
2)Linux采用了一种叫“载入/挂载”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
3)示意图
2)硬盘说明
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 硬盘的表示方法一样。
3)使用【lsblk】指令查看当前系统磁盘分区情况及挂载情况
*指令方式:
1.lsblk -f :可查唯一标识符,但不可查大小
2.lsblk :可查大小。
(4)增加硬盘和挂载示例
1)需求:
给Linux系统增加一个新的硬盘。并且挂载到/home/newdisk
2)如何增加一块硬盘
1.虚拟机添加硬盘
2.分区 fdisk /dev/sdb
3.格式化 mkfs -t ext4 /dev/sdb1
4.挂载 先创建一个/home/newdisk文件夹,挂载 mount /dev/sdb1 /home/newdisk (仅此步骤只能临时挂载,重启则不见)
5.设置可以自动挂载(永久挂载,当你重启系统,仍然挂载在/home/newdisk)
指令:vim /etc/fstab
添加:/dev/sdb1 /home/newdisk ext4 defaults 0 0
3)挂载的具体操作步骤
步骤一:
在【虚拟机】菜单中,选择【设置】,在设备列表里添加硬盘,然后一直【下一步】,中间只有选择磁盘大小的地方需要修改,直到完成。然后重启系统才能识别。
步骤二:
使用分区命令: fdisk /dev/sdb
开始对/sdb分区
m:显示命令列表
p:显示磁盘分区,同 fdisk -1
n:新增分区
d:删除分区
w:写入并退出
说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。
步骤三:
格式化磁盘
分区指令: mkfs -t ext4 /dev/sdb1
其中ext4是分区类型
步骤四:
挂载:将一个分区与一个目录联系起来
指令:mount 设备名称 挂载目录
例如 mount /dev/sdb1 /newdisk
(卸载:将一个分区与一个取消联系。
指令:umount 设备名称 或者 umount /newdisk
例如:umount /dev/sdb1 或 umount /newdisk)
步骤五:
实现永久挂载,通过修改/ect/fstab文件实现挂载。
然后保存退出,最后执行mount -a即可生效。
(5)磁盘情况查询
1)(df指令)查询系统整体磁盘使用情况
1.基本语法
df -lh
2.示例
2)(du指令)查询指定目录的磁盘占用情况
1.基本语法
du -ach /目录 //查询指定目录的磁盘占用情况,默认为当前目录
2.选项
-s:指定目录占用大小汇总
-h:带计量单位
-a:含文件
--max-depth=1:子目录深度
-c:列出明细的捅死,增加汇总值。
3.示例:
查询/opt目录下的磁盘占用情况,深度为1
3)磁盘情况-工作常用指令
1.统计/home文件夹下文件的个数
2.统计/home文件夹下目录的个数
3.统计文件夹下目录的个数,包括子文件夹里的
4.以树状显示目录结构
yum install 指令:安装一个未安装的指令(需要联网)
23.网络配置(order)
(1)Linux网络配置原理图(含虚拟机)
目前我们的网络配置采用的是NAT。
(2)查看网络IP和网关
1)查看虚拟网络编辑器
2)修改ip地址(修改虚拟网络的ip)
3)查看网关
4)查看windows环境中的VMnet8网络配置(ipconfig指令)
1.使用ipconfig查看
2.界面查看
(3)ping测试主机之间网络连通
1.基本语法
ping 目的主机 //测试当前服务器是否可以连接目的主机
2.应用实例
(4)Linux网络环境配置
1)第一种方式(自动获取)
注意:Linux启动后会自动获取ip,缺点是每次自动获取的ip地址可能不一样。这个不适用于做服务器,因为我们的服务器的ip需要是固定的。
2)第二种方式(指定固定ip)
步骤:
1.直接修改配置文件来指定IP,并可以连接到外网(程序员使用),编辑指令:
【vim /etc/sysconfig/network-scripts/ifcfg-eth0】
(即编辑名为eth0网卡的配置文件,如果有多个网卡,则有多个这种文件)
假设将ip地址配置为静态的,并且设置为192.168.184.130
2.修改后,一定要重启服务
用service network restart指令或者reboot
说明:
24.进程管理(order)
(1)基本介绍
1)在Linux中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。
2)每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
3)每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
4)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。
(2)显示系统执行的进程(ps指令)
1)说明
查看进行使用的指令是ps,一般来说使用的参数是ps -aux
Ps -a:显示当前终端的所有进程信息。
Ps -u:以用户的格式显示进程信息
Ps -x:显示后台进程运行的参数
(3)ps指令详解
1)指令:ps -aux | grep xxx //显示某要求的进程信息
如显示sshd服务:ps -aux | grep sshd
2)指令说明
3)应用实例
要求:以全格式显示当前所有的进程,查看进程的父进程。
指令说明:
ps -ef:以全格式显示当前所有的进程
-e:显示所有进程
-f:全格式
内容信息说明(BSD风格):
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低,数值越小,表明进程是I/O密集型运算,执行优先级会提高。
STIME:进程启动的时间
TTY:完整的终端名称(上图已隐藏)
TIME:CPU时间
CMD:启动进程所用的命令和参数
(4)终止进程——kill和killall
1)介绍
若是某个进程执行一般需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。即使用kill和killall
2)基本语法
kill [选项] 进程号 (通过进程号杀死进程)
killall 进程名称 (通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
3)常用选项
-9:表示强迫进程立即停止。
4)示例
1.踢掉某个非法登录用户(假设xtt是非法用户)
2.终止远程登陆服务sshd,在适当时候再次重启sshd服务。
3.终止多个gedit编辑器【killall】
4.强制杀掉一个终端
(5)查看进程树pstree指令
1)基本语法
pstree [选项] //可以更加直观的来看进程信息
2)常用选项
-p:显示进程的PID
-u:显示进程的所属用户
3)示例
1.以树状的形式显示进程的pid
Pstree -p
2.以树状的形式显示进程的用户id
Pstree -u
(6)服务(service)管理(重要order)
1)介绍
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如mysql,sshd,防火墙等,因此又称守护进程,是Linux中非常重要的知识点。
如图:
2)service管理指令
Service 服务名 [start|stop|restart|reload|status]
在CentOS7.0后,不再使用service,而是systemctl。
3)示例
1)查看当前防火墙的状况,关闭防火墙和重启防火墙。
4)细节讨论
1.关闭或者启用防火墙后,立即生效【telnet ip 端口】
//在windows的dos(命令行)中使用【telnet】指令是检查Linux的某个端口是否在监听,并且可以访问。
2.这种方式只是临时生效,当重启系统后,还是回归到以前对服务的设置。
3.如果希望设置某个服务自启动或关闭永久生效,要使用chkconfig指令。
5)查看服务名
方式1:使用setup进入系统服务,可以看到。
方式二:查看/etc/init.d/服务名称
6)服务的运行级别
具体见前面系统的运行级别,两者一样。
7)开机流程说明
8)chkconfig指令
1.作用
可以给每个服务的各个运行级别设置自启动/关闭。
2.基本语法
(1)查看服务:chkconfig -list | grep xxx
(2)查看服务:chkconfig 服务名 --list
(3)chkconfig –level 运行级别 服务名 on/off
//对某个服务在某个级别下开启/关闭自启动
3.使用细节
Chkconfig重新设置服务后自启动或关闭,需要重启机器reboot才能生效。
9) 相关示例
1.请显示当前系统所有服务的各个运行级别的运行状态
chkconfig –list
2.请查看sshd服务的运行状态
Service sshd status
3.将sshd服务在运行级别5下设置为不自动启动
Chkconfig –level 5 sshd off
4.当运行级别为5时关闭防火墙
Chkconfig –level 5 iptables off
5.在所有运行级别下,关闭防火墙
Chkconfig iptables off
(7)动态监控管理(重要order:top指令)
1)介绍
Top与ps指令很相似,都是用来显示正在执行的进程。Top与Ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。
2)基本语法
top [选项]
3)选项说明
4)示例
1.监听特定用户
top:输出此命令,按回车键,查看执行的进程
u:然后输入u,再输入用户名即可
2.终止指定的进程
输入top回车查看执行的进程。然后输入k,在输入要结束的进程的ID号然后回车。
3.指定系统状态更新的时间(设置为10秒,默认是3秒)
top -d 10
5)查看系统网络情况(重要netstat指令)
1.基本语法
netstat [选项]
如:netstat -anp
2.选项说明
-anp:按一定顺序排列输出
-p:显示哪个进程在调用
3.示例
1.查看系统所有的网络服务
2.请查看服务名为sshd的服务的信息
25.RPM(order)
(1)RPM包的管理
1)介绍
一种用于互联网下载包的打包及安装工具。它包含在某些Linux分发版中,它生成具有RPM扩展名的文件。RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似Windows的setup.exe,这一文件格式名称虽然打上了RedHat的标识,但理念是通用的。
2)RPM包的简单查询指令
*查询已安装的rpm列表:rpm -qa | grep xx //xx表示对应的软件名
如:查看一下Linux有没有安装firefox
3)rpm包名的基本格式
一个 rpm 包名:firefox-45.0.1-1.el6.centos.x86_64.rpm
名称:firefox
版本号:45.0.1-1
适用操作系统: el6.centos.x86_64
表示 centos6.x 的 64 位系统
如果是 i686、i386 表示 32 位系统,noarch 表示通用
4)rpm其他查询指令
1.rpm -qa :查询所安装的所有rpm软件包
Rpm -qa | more:分页查询
Rpm -qa | grep xxx :对指定软件xxx进行查询
2.rpm -q 软件包名:查询 软件包是否安装
如:rpm -q firefox
3.rpm -qi 软件包名:查询软件包信息
rpm -qi file
4.rpm -ql 软件包名:查询软件包中的文件
5.rpm -qf 文件全路径名:查询文件所属的软件包
(2)卸载rpm包
1)基本语法
rpm -e RPM包的名称
2)示例
删除firefox软件包
3)细节问题
1.如果其他软件包依赖于要卸载的软件包,卸载时则会产生错误信息。
2.如果需要强制删除,则使用【rpm -e -nodeps 软件包名】指令。但是依赖于该软件包的程序可能无法运行。
(3)rpm安装
1)基本语法
rpm -ivh RPM包全路径名称
2)参数说明
-i:install,安装
-v:verbose,提示
-h:hash,进度条
3)示例
*安装firefox。
注意:先要找到firefox的安装rpm包,需要挂载上我们安装的centos的iso文件,然后到/media/下去找rpm
【cp firefox-17.0.10-1.el6.centos.i686.rpm /opt/
必须将其复制到opt目录,然后在opt目录下进行安装】
26.yum(order)
(1)介绍
Yum是一个shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用yum的前提是可以联网。
(2)基本指令
1)查询yum服务器是否有需要安装的软件
yum list | grep xxx //xxx为软件名
2)安装指定的yum包
(3)示例
1.请使用yum的方式来安装firefox
步骤一:查看firefox在yum服务器上是否供有。
步骤二:安装
Yum install firefox
(4)注意
Yum安装的软件默认安装最新版本。
四、Java关于Linux的使用
1.示意图
2.安装Java软件
(1)安装JDK
1)安装步骤:
1.现将软件通过xftp5上传到/opt下
2.解压缩到/opt //tar -zvxf xxx
3.配置环境变量的配置文件 vim /etc/profile
4.需要注销用户,环境变量才能生效
*如果是在运行级别3,直接logout
*如果是在运行级别5,使用视图按键退出或重启
*或者使用命令[source /etc/profile]也可刷新环境变量
5.成功后,可在任何目录下使用java和javac指令
*javac:编译java代码,使其成为class文件
*java:运行java代码,使其class文件运行
//如果java和javac命令执行后会出现大量信息则安装成功。或者编写一个java文件,然后javac编译,最后java执行,如果有输出则成功。
2)注意
Jdk必须根据系统的位数下载对应的jdk,否则无法执行。
(2)安装tomcat
1)步骤:
1.解压缩到/opt
2.启动tomcat——./startup.sh指令
先进入到tomcat的bin目录。
//成功后使用Linux本地的浏览器是可以访问到tomcat的。
3.开放端口8080,使外网也能访问到tomcat
编写防火墙文件【vim /etc/sysconfig/iptables】
4.重启防火墙,改变才能成功。
Service iptables restart
2)测试
如果Linux本地以及window通过【LinuxIP:8080】都能访问到tomcat时,即成功。
(3)Eclipse的安装
1)解压缩到/opt
2)启动eclipse,配置jre和server
启动方法1:创建一个快捷方式。
启动方法2:进入到eclipse解压后的文件夹,然后执行【./eclipse】即可。
3)编写jsp页面,并测试成功
4)注意
*需要区分是否支持Linux系统,根据位数(64/32)使用对应版本。
(4)IDEA安装
1)解压缩到/opt目录
2)启动idea
1.进入界面的idea目录,进入其bin目录,点击idea.sh文件即可启动。
2.cd到其bin目录,使用[./idea/sh]方式启动。
(4)MySql的安装和配置
1.方式一:源码安装
1)安装的步骤和文档
说明:
因为mysql安装的时间很长,具体步骤参照【尚硅谷centos6.8下安装mysql.docx】
2)说明
严格按照文档一步步安装即可。
2.方式二:压缩包安装
1)确定当前Linux系统是多少位的,然后下载对应的tar.gz包。
【https://dev.mysql.com/downloads/mysql/5.6.html#downloads】
2)查看本机有没有mysql,如果有直接使用或者删除(rpm -e)。
3)之后步骤查看网页