1、初识Linux
1.1简介
1.linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多企业级的项目都会部署到Linux/unix系统上。
2.常见的操作系统(win7、IOS、Android、Mac)
3.吉祥物
4.Linux的创始人Linus Torvalds
5.Linux主要的发行版: Ubuntu(乌班图)、RedHat(红帽)、CentOS、Debain[蝶变]、Fedora、SuSE、 OpenSUSE
1.2Linux的应用领域
1.个人桌面领域的应用
此领域是传统linux应用最薄弱的环节,传统linux由于界面简单、操作复杂、应用软件少的缺点,一直被windows所压制,但近些年来随着ubuntu、fedora [fɪˈdɔ:rə] 等优秀桌面环境的兴起,同时各大硬件厂商对其支持的加大,linux在个人桌面领域的占有率在逐渐的提高。
2.服务器领域
linux在服务器领域的应用是最强的。
linux免费、稳定、高效等特点在这里得到了很好的体现,近些年来linux服务器市场得到了飞速的提升,尤其在一些高端领域尤为广泛。
3.嵌入式领域
近些年来linux在嵌入式领域的应用得到了飞速的提高linux运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百KB等特点,使其近些年来在嵌入式领域的应用得到非常大的提高主要应用:机顶盒、数字电视、网络电话、程控交换机、手机、PDA、智能家居、智能硬件等都是其应用领域。以后再物联网中应用会更加广泛。
2、环境搭建
2.1、windows与Linux系统实现复制粘贴功能
安装vmtools
(1)vm下的虚拟机—》install vmware tools
(2)centos会出现一个安装包
(3)解压并安装该安装包,默认
(4)安装成功后reboot重启centos即可
2.2windows与Linx之间设置共享文件夹
1、虚拟机—》设置—》选项—》共享文件夹—》设置共享文件夹路径—》完成
2、共享文件夹会默认放在centos的mnt/hgfs目录下
Linux的目录结构
2.3Linux世界里,一切皆设备
bin:
root:
2.4远程登陆linux系统
XShell5
2.5远程上传下载文件到centos
Xftp
解决Xftp中文乱码问题
3、实操篇
3.1vi和vim模式
1、简介
所有的 Linux 系统都会内建 vi 文本编辑器。
Vim 具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
vi模式:只读
vim模式:可进行编辑并保存
2、vi和vim常用的三种模式
(1)正常模式
以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容,也可以使用『复制、贴上』来处理你的文件数据。
(2)插入模式
按下i, I, o, O, a, A, r, R等任何一个字母之后才会进入编辑模式, 一般来说按i即可.
(3)命令行模式
在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
3、vi和vim模式的相互切换
4、vi和vim快捷键的使用
1) 拷贝当前行 yy , 拷贝当前行向下的5行 5yy,并粘贴。
2) 删除当前行 dd , 删除当前行向下的5行 5dd
3) 在文件中查找某个单词 [命令行下 /关键字 , 回车 查找 , 输入 n 就是查找下一个 ]
4) 设置文件的行号,取消文件的行号.[命令行下 : set nu 和 :set nonu]
5) 编辑 /etc/profile 文件,使用快捷键到底文档的最末行[G]和最首行[gg]
6) 在一个文件中输入 "hello" ,然后又撤销这个动作 u
7) 编辑 /etc/profile 文件,并将光标移动到 20行 shift+g
3.2开机、重启和用户登录注销
1、开机、重启
shutdown
shutdown -h now :表示立即关机
shutdown -h 1:一分钟后关机
shutdown -r now:立即重启
halt
直接使用,效果等价于关机
reboot
重启系统
sync
把内存数据同步到磁盘,防止数据丢失,一般重启、关机前进行该操作
2、用户登录和注销
在远程登录工具Xshell上输入logout即可。
3.3用户管理
1、简介
1、Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须先想系统管理员申请一个账号,然后这个账号的身份进入系统
2、Linux的用户至少需要属于一个组
2、添加用户
1、基本语法
useradd [选项] 用户名
2、实际操作
(1)useradd xiaoming
创建了一个用户小明,并在/home/目录下创建一个xiaoming的组
(2)useradd -d /home/pig xiaohong
创建了一个用户xiaohong,并且指定了目录组。注:目录组不能事先创建好
3、指定用户密码
1、基本语法
passwd 用户名
2、实际操作
passwd xiaoming 回车即可设置密码
4、删除用户
1、删除用户但保持家目录
userdel xiaoming
2、删除用户并且删除家目录
userdel -r xiaohong
3、工作中采用哪种方式?
工作中一般删除用户会保留其家目录
5、查询用户信息
1、id 用户名
6、切换用户
权限高的用户切换到权限低的用户不需要输入密码,反之则需要
1、切换用户语法
su - 用户名
2、退出当前用户返回到root用户,如果刚开始不是root用户登录则需要输密码
exit
3、查看当前用户是谁
whoami、 who am i
3.4用户组
1、简介
类似于角色,系统可以对有共性的多个用户进行统一的管理
2、增加组
groupadd 组名 案例:groupadd nanren 增加了一个名为nanren的组
3、删除组
groupdel 组名 案例:groupdel nanren 删除了一个名为nanren的组
4、创建用户时指定组
语法:useradd -g 组名 用户名
useradd -g nvren xiaoming 将xiaohong指定为组nvren的用户
useradd -d /home/pig xiaohong 创建了一个用户xiaohong,并且指定了用户 组。注:目录组不能事先创建好
5、修改用户的组
语法:usermod -g 组名 用户名
usermod -g nanren xiaohong 将xiaohong的组修改为nanren
6、与用户和组相关的三个配置文件
1、/etc/passwd文件
用户的配置文件,记录用户的各种信息
每行含义:用户名:口令:用户标识符,组标识符:注释行描述:主目录:登录shell
2、/etc/passwd文件
口令的配置文件
每行含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
3、/etc/group文件
组的配置文件,记录linux包含组的信息
每行含义:组名:口令:组标识符:组内用户列表
vim /etc/inittab 查看运行级别
4、实用指令
4.1运行级别
1、运行级别
0:关机 1:单用户(找回丢失密码) 2:多用户状态没有网络服务
3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面
6:系统重启
常用的运行级别时3和5,要修改进入到的运行级别需要修改配置文件/etc/inittab
所设置的默认级别
2、如何切换运行级别
init [0,1,2,3,5,6]
案例:通过init来切换不同的运行级别,比如5—》3,然后关机
init 3 init 0
3、面试题
面试题:如果忘记账号密码,如何找回?
思路:进入到单用户模式,修改root密码,单用户模式root不需要密码即可登录
操作:开机时引导时回车键->看到一个界面输入e->看到一个新的界面,选中第二行(编辑内核)再输入e->在新的界面最后一行输入1(1即为想进入的运行级别)回车键->再次输入b便可进入单用户模式。此时便可利用passwd指令来修改密码。
4、课堂练习
请设置运行级别实现开机进入到3运行级别。
修改/etc/inittable的默认运行级别即可。
4.2获取帮助指令
1、man 指令名称
案例:man ls 返回ls的使用指南信息(ls -al)将隐藏文件也展示
2、help 指令名称
案例:help ifconfig 返回ifconfig的使用指南
4.3文件目录类指令
1、pwd指令 显示当前工作目录的绝对路径
2、ls指令
ls [选项] [目录或文件]
案例:ls -al
常用选项:-a:显示当前目录的所有文件和目录包括隐藏的
-l:以列表方式显示信息([ls 目录名]默认为横向展示)
3、cd指令
cd [参数] 指定目录
常用参数:[绝对路径、相对路径]
cd ~或cd 回到自己的家目录
cd.. 回到当前目录的上一级目录
案例1:在root目录下切换到home目录下
绝对路径:cd /home
相对路径:cd ../home
案例2:在usr/lib目录下切回到root
绝对路径:cd /root
相对路径:cd ../../root
案例3:回到自己的家目录
cd cd~
4、mkdir指令 用于创建目录
mkdir [选项] 创建的目录名 选项用于创建多级目录
案例1:在home创建目录dog
mkdir /home/dog
案例2:在home创建目录cat,然后再cat目录创建cofecat目录
mkdir -p /home/cat/cofecat
5、rmdir指令 删除空目录,非空目录无法删除
rmdir /home/dog
rmdir /home/cat/cofecat
6、rm -rf指令 可删除非空的文件夹
rm -rf /home/dog
7、touch指令 创建空文件
案例1:创建空文件hello.txt
touch hello.txt
案例2:创建空文件hello1.txt,hello2.txt
touch hello1.txt hello2.txt
8、cp指令 将指定文件拷贝到指定目录
拷贝单文件案例1:将/home/hello.txt拷贝到/home/world
cp hello.txt world/
拷贝单文件夹案例2:将aaa整个目录拷贝到bbb下
cp -r aaa/ bbb/ 再次执行拷贝操作时,会提示是否覆盖文件,每个文件会询问一次
\cp -r aaa/ bbb/ 该指令会覆盖文件并且不会有提示
9、rm指令
(1)基本语法
rm [选项] 要删除的文件或目录
(2)常用选项
-r :递归删除整个文件夹
-f :强制删除不提示
(3)应用实例
案例1: 将 /home/aaa.txt 删除
rm aaa.txt
案例2: 递归删除整个文件夹 /home/bbb
rm -rf bbb/
•使用细节
强制删除不提示的方法:带上 -f 参数即可(空文件、空文件夹不会提示)
10、mv指令(移动文件与目录或重命名)
(1)基本语法
mv oldNameFile newNameFile (功能描述:重命名)
mv /temp/movefile /targetFolder (功能描述:移动文件)
(2) 应用实例
案例1: 将 /home/aaa.txt 文件 重新命名为 pig.txt
mv aaa.txt pig.txt
案例2:将 /home/pig.txt 文件 移动到 /root 目录下
mv pig.txt /root/
11、cat指令(查看文件内容,以只读的方式打开)
(1)基本语法
cat [选项] 要查看的文件
(2)常用选项
-n :显示行号
(3)应用实例
案例1: /ect/profile 文件内容,并显示行号
cat -n /etc/profile|more
(4)使用细节
cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more
12、more指令
(1)功能
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的容。
more指令中内置了若干快捷键。
(2)基本语法
more 要查看的文件
(3)应用实例
案例: 采用more查看文件/etc/profile
more /etc/profile
13、less指令(显示大型文件具有较高的效率)
(1)功能
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
(2)基本语法
less 要查看的文件
(3)应用实例
案例: 采用less查看一个大文件文件/opt/金庸-射雕英雄传txt精校版.txt
less /opt/金庸-射雕英雄传txt精校版.txt
14、echo指令(echo输出内容到控制台)
(1)基本语法
echo [选项] [输出内容]
(2)应用实例
案例: 使用echo 指令输出环境变量
echo $PATH
案例: 使用echo 指令输出 hello,world!
echo 'hello,world!'
15、head指令
(1)功能
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
(2)基本语法
head 文件 (功能描述:查看文件头10行内容)
head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)
(3)应用实例
案例: 查看/etc/profile 的前面5行代码
head -n 5 /etc/profile
16、tail指令
(1)功能
tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容。
(2)基本语法
1) tail 文件 (功能描述:查看文件后10行内容)
2) tail -n 5 文件 (功能描述:查看文件后5行内容,5可以是任意行数)
3) tail -f 文件 (功能描述:实时追踪该文档的所有更新)
(3)应用实例
案例1: 查看/etc/profile 最后5行的代码
tail -n 5 /etc/profile
案例2: 实时监控 mydate.txt , 看看到文件有变化时,是否看到, 实时的追加日期
tail -f mydate.txt
17、> 指令 和 >> 指令
(1)功能
> 输出重定向和 >> 追加
(2)基本语法
1) ls -l >文件 (功能描述:列表的内容写入文件a.txt中(覆盖写))
2) ls -al >>文件 (功能描述:列表的内容追加到文件aa.txt的末尾)
3) cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件2)
4) echo "内容" >> 文件
(3)应用实例
案例1: 将 /home 目录下的文件列表 写入到 /home/info.txt 中
ls -l /home/ > /home/info.txt/
案例2: 将当前日历信息 追加到 /home/mycal 文件中
cal >> /home/mycal
18、ln指令
(1)功能
软链接也成为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
(2)基本语法
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
(3)应用实例
案例1: 在/home 目录下创建一个软连接 linkToRoot,连接到 /root 目录
ln -s /root linkToRoot
案例2: 删除软连接 linkToRoot
rm -rf linkToRoot
(4)细节说明
当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录。
19、history指令
(1)功能
查看已经执行过历史命令,也可以执行历史指令
(2)基本语法
history (功能描述:查看已经执行过历史命令)
(3)应用实例
案例1: 显示所有的历史命令
history
案例2: 显示最近使用过的10个指令
history 10
案例3:执行历史编号为5的指令
!5
4.4时间日期类
1、date指令-显示当前日期
(1)基本语法
1) date (功能描述:显示当前时间)
2) date +%Y (功能描述:显示当前年份)
3) date +%m (功能描述:显示当前月份)
4) date +%d (功能描述:显示当前是哪一天)
5) date "+%Y-%m-%d %H:%M:%S"(功能描述:显示年月日时分秒)
(2)应用实例
案例1: 显示当前时间信息
date
案例2: 显示当前时间年月日
date "+%Y-%m-%n"
案例3: 显示当前时间年月日时分秒
date "+%Y-%m-%n %H:%M:%S"
2、date指令-设置日期
(1)基本语法
date -s 字符串时间
(2)应用实例
案例1: 设置系统当前时间 , 比如设置成 2020-11-11 11:22:22
date -s "2020-11-11 11:22:22"
3、cal指令
查看日历指令
(1)基本语法
cal [选项] (功能描述:不加选项,显示本月日历)
(2)应用实例
案例1: 显示当前日历
cal
案例2: 显示2020年日历
cal 2020
4.5搜索查找类
1、find指令
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
(1)基本语法
find [搜索范围] [选项]
(2)选项说明
(3)应用实例
案例1: 按文件名:根据名称查找/home 目录下的hello.txt文件
find /home -name hello.txt
案例2:按拥有者:查找/opt目录下,用户名称为 nobody的文件
find /opt -user nobody
案例3:查找整个linux系统下大于200m的文件(+n 大于 -n小于 n等于)
find / -size +200M 小写k
2、locate指令
locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
(1)基本语法
locate 搜索文件
(2)特别说明
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
(3)应用实例
案例1: 请使用locate 指令快速定位 hello.txt 文件所在目录
updatedb
locate hello.txt
3、grep指令和管道符号 |
grep过滤查找,管道符,“|”表示将前一个命令的处理结果输出传递给后面的命令处理。
(1)基本语法
grep [选项] 查找内容 源文件
(2)常用选项
-n 显示匹配行及行号
-i 忽略字母大小写
(3)应用实例
案例1: 请在 hello.txt 文件中,查找 "yes" 所在行,并且显示行号
cat hello.txt | grep -n yes 区分大小写
cat hello.txt | grep -ni yes 不区分大小写
4.6压缩和解压类
1、gzip/gunzip 指令
gzip 用于压缩文件, gunzip 用于解压的
(1)基本语法
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
(2)应用实例
案例1: gzip压缩, 将 /home下的 hello.txt文件进行压缩
gzip /home/hello.txt
案例2: gunzip压缩, 将 /home下的 hello.txt.gz 文件进行解压缩
gunzip /home/hello.txt.gz
2、zip/unzip 指令
zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
(1)基本语法
zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述:解压缩文件)
(2)zip常用选项
-r:递归压缩,即压缩目录
(3)unzip的常用选项
-d<目录> :指定解压后文件的存放目录
(4)应用实例
案例1: 将 /home下的 所有文件进行压缩成 mypackage.zip
zip -r mypackage.zip /home/
案例2: 将 mypackge.zip 解压到 /opt/tmp 目录下
unzip -d /opt/tmp/ mypackage.zip
3、tar 指令
tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件。
(1)基本语法
tar [选项] XXX.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)
(2)选项说明
(3)应用实例
案例1: 压缩多个文件,将 /home/a1.txt 和 /home/a2.txt 压缩成 a.tar.gz
tar -zcvf a.tar.gz a1.txt a2.txt
案例2: 将/home 的文件夹 压缩成 myhome.tar.gz
tar -zcvf myhome.tar.gz /home/
案例3: 将 a.tar.gz 解压到当前目录
tar -zcvf a.tar.gz
案例4: 将myhome.tar.gz解压到/opt/目录下(该目录须存在)
tar -zcvf myhome.tar.gz -C /opt/
5、实操篇-组管理和权限管理
5.1Linux组的基本介绍
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件
有所有者、所在组、其它组的概念。
1) 所有者
2) 所在组
3) 其它组
4) 改变用户所在的组
5.2文件/目录 所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
1、查看文件的所有者
1)指令:ls –ahl
2)应用实例:创建一个组police,再创建一个用户tom,将tom放在police组,然后使用tom来创建一个文件ok.txt。
groupadd police
useradd -g police tom
passwd tom
touch ok.txt
ls -ahl 显示ok.txt的所有者是tom
2、修改文件所有者
1)指令:chown 用户名 文件名
2)应用案例 要求:使用root 创建一个文件apple.txt ,然后将其所有者修改成zhangfei
chown zhangfei apple.txt
3、组的创建
(1)基本指令
groupadd 组名
(2)应用实例:
创建一个组, monster
groupadd monster
创建一个用户 fox ,并放入到 monster组中
useradd -g monster fox
4、文件/目录 所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组。
查看文件/目录所在组
(1)基本指令
ls –ahl
修改文件所在的组
(2)基本指令
chgrp 组名 文件名
(3)应用实例
使用root用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文
件所在组,修改到 fruit组。
chgrp fruit orange.txt
5、其它组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。
6、改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某
个用户所在的组。
(1)改变用户所在组
1) usermod –g 组名 用户名
2) usermod –d 目录名 用户名 改变该用户登陆的初始目录。
(2)应用实例
将 zwj 这个用户从原来所在组,修改到 wudang 组。
usermod -g wudang zwj
7、权限的基本介绍
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9位说明
1) 第0位确定文件类型(d, - , l , c , b)
2) 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。---User
3) 第4-6位确定所属组(同用户组的)拥有该文件的权限,---Group
4) 第7-9位确定其他用户拥有该文件的权限 ---Other
8、rwx权限详解
(1)rwx作用到文件
1) [ r ]代表可读(read): 可以读取,查看
2) [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
3) [ x ]代表可执行(execute):可以被执行
(2)rwx作用到目录
1) [ r ]代表可读(read): 可以读取,ls查看目录内容
2) [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
3) [ x ]代表可执行(execute):可以进入该目录
9、文件及目录权限实际案例
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
10个字符确定不同用户能对文件干什么
第一个字符代表文件类型: 文件 (-),目录(d),链接(l)
其余字符每3个一组(rwx) 读(r) 写(w) 执行(x)
第一组rwx : 文件拥有者的权限是读、写和执行
第二组rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行
第三组r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行
可用数字表示为: r=4,w=2,x=1 因此rwx=4+2+1=7
1 文件:硬连接数或 目录:子目录数
root 用户
root 组
1213 文件大小(字节),如果是文件夹,显示 4096字节
Feb 2 09:39 最后修改日期
abc 文件名
10、修改权限-chmod
基本说明:通过chmod指令,可以修改文件或者目录的权限。
1、第一种方式:+ 、-、= 变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
1) chmod u=rwx,g=rx,o=x 文件目录名
2) chmod o+w 文件目录名
3) chmod a-x 文件目录名
案例演示
1) 给abc文件的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限
chmod u=rwx,g=rx,o=rx abc
2) 给abc文件的所有者除去执行的权限,增加组写的权限
chmod u-x,g+r abc
3) 给abc文件的所有用户添加读的权限
chmod a+r abc
2、第二种方式:通过数字变更权限
r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名
相当于 chmod 751 文件目录名
• 案例演示
要求:将 /home/abc.txt 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现
rwx=7
r+x=3
r+x=3
chmod 733 /home/abc.txt
11、修改文件所在组-chgrp
(1)基本介绍
chgrp newgroup file 改变文件的所有组
(2)案例演示:
1) 请将 /home/abc.txt文件的所在组修改成 shaolin (少林)
chgrp shaolin /home/abc.txt
2) 请将 /home/kkk 目录下所有的文件和目录的所在组都修改成 shaolin(少林)
chgrp -R shaolin /home/kkk/
12、修改文件所有者-chown
(1)基本介绍
chown newowner file 改变文件的所有者
chown newowner:newgroup file 改变用户的所有者和所有组
-R 如果是目录 则使其下所有子文件或目录递归生效
(2)案例演示:
1) 请将 /home/abc.txt 文件的所有者修改成 tom
chown tom /home/abc.txt
2) 请将 /home/kkk 目录下所有的文件和目录的所有者都修改成tom
chown -R tom /home/kkk/
13、最佳实践-警察和土匪游戏
police ,bandit
jack, jerry: 警察
xh, xq: 土匪
(1) 创建组
bash>groupadd police
bash>groupadd bandit
(2) 创建用户
useradd -g police jack
useradd -g police jerry
useradd -g bandit xh
useradd -g bandit xq
(3) jack 创建一个文件,自己可以读写,本组人可以读,其它组没人任何权限
chmod 640 jack01.txt
(4) jack 修改该文件,让其它组人可以读, 本组人可以读写
chamod o=r,g=rw jack.txt
(5) xh 投靠警察,看看是否可以读写
usermod -g police xh
使用jack给他的家目录/home/jack的所在组一个rx的权限
hcmod g=rx jack/
xh可以对jack01.txt进行读修
6、javaEE定制篇
6.1、安装jdk
(1)将/opt目录下的jdk压缩文件解压
tar -zxvf 压缩文件 ===》解压该文件
(2)进入到解压文件夹目录下的bin目录可执行 ./java ./javac 命令
(3)配置环境变量 vim /etc/profile
输入G到末尾,输入i进入编辑模式
JAVA_HOME=/opt/jdk1.8.0_79
PATH=/opt/jdk1.8.0_79/bin:$PATH
export JAVA_HOME PATH
输入wq保存并退出
(4)需要注销用户,环境变量才能生效
如果在 3 运行级别,logout即可
如果在 5 运行级别,linux系统首页点击注销后重新登录
6.1.1、检测jdk安装是否成功
(1)vim Hello.java
(2)javac Hello.java
(3)java Hello
6.2、安装tomcat
(1)解压tomcat压缩文件
tar -zxvf 压缩文件 ===》解压该文件
(2)启动tomcat
进入到tomcat的bin目录
执行 ./startup.sh
(3)火狐浏览器访问 http://localhost:8080
(4)解决在本机也可以访问 192.168.133.128:8080 防火墙的问题
service iptables status ===》 查看8080端口是否开启
(5)开放8080端口: 执行 vim /etc/sysconfig/iptables
执行yyp复制22端口的一行,将22端口改为8080,保存并退出
(6)重启防火墙即可 service iptables restart
6.3、安装eclipse
(1)解压eclipse压缩文件
(2)打开eclipse,cd到eclpse目录下执行./eclipse
(3)创建jsp页面并运行,启动前需关闭tomcat
6.4、安装mysql
1、保证网络连通
2、进入到压缩文件目录/opt下,检测有没有安装过mysql
rpm -qa | grep mysql
存在:
rpm -e mysql-libs 删掉
rpm -e —nodeps mysql-libs 强制删掉
3、安装C编译代码需要的包,需要联网
yum -y install make gcc-c++ cmake bison-devel ncurses-devel
4、解压mysql压缩文件
5、cd到解压后的mysql目录
6、编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc
-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306
-DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
7、安装(大概30分钟)
make && make install
8、配置mysql:查看mysql是否有用户和用户组
查看用户:cat /etc/passwd
查看用户组:cat /etc/group
9、增加mysql组,创建mysql用户并添加到mysql组
groupadd mysql
useradd -g mysql mysql
10、修改/usr/local/mysql权限
改变所有者和组:chown mysql:mysql /usr/local/mysql/
11、初始化配置
(1)切换到/usr/local/mysql/目录
cd /usr/local/mysql/
(2)执行初始化指令
scripts/mysql_install_db —basedir=/usr/local/mysql
—datadir=/usr/local/mysql/data —user=mysql
12、注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索”$basedir/my.cnf”,在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!
注意:在CentOS 6.8版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
修改名称,防止干扰:
(1)查看是否存在my.cnf
ls -l /etc/m
(2)如果存在则执行以下指令
mv /etc/my.cnf /etc/my.cnf.bak
13、启动mysql,添加服务,拷贝服务脚本到init.d目录,并设置开机启动
(1)cd到/usr/local/mysql
(2)cp support-files/mysql.server /etc/init.d/mysql
(3)chkconfig mysql on 开机自启
(4)service mysql start 启动
(5)netstat -anp | more 此时3306端口已经开始监听
14、执行下面的命令修改root密码
cd /usr/local/mysql/bin
./mysql -uroot
mysql> SET PASSWORD = PASSWORD(‘root’);
15、配置mysql环境变量
16、刷新 source /etc/profile 或者注销当前用户
7、大数据定制篇-shell编程
7.1、快速入门案例
1、创建文件夹myshell mkdir myshell
2、创建文件myShell.sh vim myShell.sh
3、运行
3.1、方式一
1、给以执行权限 chmod 744 myShell.sh
2、相对路径执行 ./myShell.sh
3、绝对路径执行 /root/shell/myShell.sh
3.2、方式二(不推荐)
1、将权限修改回来 chmod 644 myShell.sh
2、执行 sh ./myShell.sh
7.2、shell的变量
8、问题
8.1、当xshell或ftp等连不上Linux系统
(1)查看sshd是否开启
(2)netstat -anp | more 查看linux的22号端口是否有监听
(3)service sshd restart 启动sshd