一.Linux简介
1.Linux操作系统概述
Linux是基于Unix的开源免费的操作系统,由于系统的稳定性和安全性几乎成为程序代码运行的最佳系统环境。Linux是由Linus Torvalds(林纳斯·托瓦兹)起初开发的,由于源代码的开放性,现在已经衍生出了成千上百种不同的Linux系统。 Linux系统的应用非常广泛,不仅可以长时间的运行我们编写的程序代码,还可以安装在各种计算机硬件设备中,比如手机、平板电脑、路由器等。尤其在这里提及一下,我们熟知是Android程序最底层就是运行在linux系统上的。
2.Linux的特点
1. 免费,开源,高效,安全,处理高并发能力很强。 2. 图形化界面版:注重用户体验,类似window操作系统,但目前成熟度不够。 3. 服务器版:没有好看的界面,是以在控制台窗口中输入命令操作系统的,类似于DOS,是我们架设服务器的最佳选择。 4. 版本分类 内核版本:在Linus领导下的内核小组开发维护的系统内核的版本号。 发行版本:一些组织或公司在内核版基础上进行二次开发而重新发行的版本。
二.Linux操作系统的安装
1. 安装虚拟机 2. 安装CentOS 详见《centos7安装》
三.Linux目录结构
Linux一切皆文件
➢ /bin (/usr/bin 、 /usr/local/bin) • 是Binary的缩写, 这个目录存放着最经常使用的命令 ➢ /sbin (/usr/sbin 、 /usr/local/sbin) • s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。 ➢ /home • 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。 ➢ /root • 该目录为系统管理员,也称作超级权限者的用户主目录。 ➢ /lib • 系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 ➢ /lost+found • 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 ➢ /etc • 所有的系统管理所需要的配置文件和子目录 ➢ /usr • 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。 ➢ /boot • 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,自己的安装别放这里 ➢ /proc • 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 ➢ /srv • service缩写,该目录存放一些服务启动之后需要提取的数据。 ➢ /sys • 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。 ➢ /tmp • 这个目录是用来存放一些临时文件的。 ➢ /dev • 类似于windows的设备管理器,把所有的硬件用文件的形式存储。 ➢ /media • linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。 ➢ /mnt • 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。 ➢ /opt • 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。 ➢ /usr/local • 这是另一个给主机额外安装软件所摆放的目录。一般是通过编译源码方式安装的程序。 ➢ /var • 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 ➢ /selinux • SELinux是一种安全子系统,它能控制程序只能访问特定文件。
四.Linux常用命令
1.切换目录命令
① 格式:cd 目录名 语义:切换到某一目录下 ② 格式:cd .. 语义:切换到上一级目录 ③ 格式:cd / 语义:切换到根目录 ④ 格式:cd - 语义:切换到上一个所在目录 ⑤ 格式:pwd 语义:显示当前所在目录
2.列出文件列表
ls(list) 是一个非常有用的命令,用来显示当前目录下的内容。配合参数使用,能以不同的方式显示目录内容。 格式:ls [参数] [路径或文件名] 如下: ① ls 显示除隐藏文件的目录内容 ② ls -a 显示所有目录内容(包含隐藏内容) ③ ls -l 显示带权限的所有目录内容 可以缩写为ll 补充: pwd 显示当前目录 clear 清屏 ctrl+l 清屏
3.目录的创建和删除
mkdir(make directory)命令可用来创建子目录。 常见: ① mkdir 目录名 在当前目录下创建某一目录 ② mkdir -p 目录1/目录2 级联创建目录1和目录2 rmdir(remove directory)命令可用来删除"空"的子目录:rmdir 目录0 删除目录0
4.文件查看
cat 用于显示文件的内容。格式:cat [参数] <文件名> 例如: cat xx.conf
more 一般用于要显示的内容会超过一个画面长度的情况。按空格显示下一个画面。回车显示下一行内容。按q键退出查看 例如: more xx.conf
less 和 more类似,不同的是less可以通过上下键控制
tail 命令是实际使用过程中使用非常多的一个命令,他的功能是:用于显示文件后几行的内容 例如: tail -10 xx.conf 查看后10行数据 tail -f xx.log 动态查看日志 ctrl + c 结束查看
5.文件操作
rm 删除文件 格式:rm [选项] 文件 例如: ① rm a.txt 删除文件 删除时需要用户确认 ② rm -f a.txt 不询问删除 ③ rm -f aaa/a.txt 询问递归删除 ④ rm -r 删除文件夹 ⑤ rm -rf aaa/a.txt 不询问递归删除 ⑥ rm -rf * 删除所有 ⑦ rm -rf /* 自杀
cp (copy) 命令可以将文件从一处复制到另一处,在使用cp命令时可以将文件复制成另一个文件或复制到某个目录时,需要指定源文件名与目标文件名或目录 例如: ① cp a.txt b.txt 将a.txt文件复制成b.txt文件 ② cp a.txt ../ 将a.txt 复制到上一层目录中
mv 移动或者重命名 例如: ① mv a.txt ../ 将a.txt移动到上一层目录中 ② mv a.txt b.txt 将a.txt重命名为b.txt
touch 创建一个空文件 例如: touch a.txt 创建a.txt
6.打包或压缩
tar命令位于/bin 目录下,它能够将用户所指定的文件或目录打包成一个文件,但不做压缩。一般Linux 上常用的压缩方式是选用 tar 将许多文件打包成一个文件,再以gzip压缩命令 压缩成xx.tar.gz(或称为xxx.tgz)的文件 常用参数: -c 创建一个新的tar文件 -v 显示运行过程中的信息 -f 指定文件名 -z 调用gzip 压缩命令压缩 -t 查看压缩文件的内容 -x 解开tar文件 常见命令: tar -cvf xx.tar ./* 打包 tar -zcvf xx.tar.gz ./* 打包并压缩 tar -xvf xx.tar 解压 tar -zxvf xx.tar.gz -C /usr/aa 解压到指定目录下
7.查找文件和内容
find 指令用于查找符合条件的文件 例如: ① find / -name "ins*" 查找文件名称是以ins开头的文件 ② find / -user root -ls 查找用户为root的文件 ③ find / -user root -type d -ls 查找用户为root的目录 ④ find / -perm -777 -type d -ls 查找权限是777的文件
grep 指令查找文件中符合条件的字符串 格式:grep [参数] pattern [文件] 例如: ① grep lang xx.cfg 在xx.cfg文件中查找lang ② grep lang xx.cfg -color 高亮显示 ③ grep lang a/xx.cfg -color -A1 -B1 查找lang关键字以及前一行 和 后一行 并高亮显示
8.开机、重启、注销
1. 关机 shutdown -h 0 #<==0秒后关机 shutdown -h now #<==现在关机 shutdown -h 10 #<==10分钟后关机 shutdown -h 23:20 #<==23:20分关机 shutdown -c #<==取消shutdown关机命令 init 0 #<==立马关机(切换运行级别为0,推荐使用) halt #<==立马关机 poweroff #<==立马关机 2. 重启 shutdown -r now #<==现在重启 shutdown -r 23:20 & #<==23:20分重启,加&符号代表把该命令转到后台处理 reboot #<==立马重启(推荐使用) init 6 #<==立马重启(切换运行级别为6,推荐使用) 3. 注销用户 logout #<==立马注销 exit #<==立马注销 4. 清屏指令 clear ctrl+l 注意: sync:这个指令将数据从内存中同步到磁盘上(关机和重启之前使用) 登录的时候少用管理员,可以使用普通用户登录后然后使用指令 su -root 指令切换到管理员
五.Vi和Vim编辑器
1.Vim编辑器
在Linux下一般使用vi编辑器来编辑文件。vi既可以查看文件也可以编辑文件。三种模式:命令行、插入模式、底行模式 ① 切换到命令行:按ESC键 ② 切换到插入模式:按 i/o/a键 i:在当前位置前插入 I:在当前行首插入 a:在当前位置后插入 A:在当前行尾插入 o:在当前行之后插入一行 O:在当前行之前插入一行 ③ 切换到底行模式:按冒号 常见命令: vim 文件名 打开文件 esc -> :q! 不保存退出 i 进入插入模式 修改文件 esc -> :wq! 保存并退出 插入模式下的快捷方式 dd 删除一行 yy 复制当前行 nyy 从当前行向后复制几行 p 粘贴 R 替换 底行模式下: /内容 搜索文件的内容
2.重定向输出
> 重定向输出,覆盖原有内容 >> 重定向输出,又追加功能 例如: ① cat /ect/passwd > a.txt 将输出定向到a.txt中 ② cat /ect/passwd >> a.txt 输出并且追加
3.系统管理命令
ps 正在运行的某个进程的状态 ① ps -ef 查看所有进程 ② ps -ef | grep ssh 查看某一进程 ③ kill 2868 杀掉编号为2868的进程 ④ kill -9 2868 强制杀死进程
4.管道
管道|是Linux命令中一个重要的概念,其作用是将一个命令的输出用作另一个命令的输入。 例如: ① ls --help | more 分页查询帮助信息 ② ps -ef | grep java 查询名称中包含java 的进程 ③ cat index.html | more 分页查询index.html的内容
六.Linux 的权限命令
1.用户和组管理
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统 管理员申请一个账号,然后以这个账号的身份进 入系统。 Linux中所创建的账号和其相关信息(密码除外)均放在 /etc/passwd 文件中,为安全起见,用户真实的密码采用MD5加密算法加密后,保存在/etc/shadow配置文件中,该文件只有root用户可以读取。linux在安装好后会默认创建多个用户,但是这些用户为Linux进程用户不能登录 用户组帐号信息保存在/etc/group配置文件中,任何用户均可以读取。用户组的真实密码保存在/etc/gshadow配置文件中。在group中,第一个字段代表用户组的名称,第二个字段为x,第三个为用户组的ID号,第四个为该用户组的用户成员列表,各用户名间用逗号分隔
使用指令: cat /ect/passwd 查看用户信息结构 用户指令操作 ① useradd 用户名 # 添加用户 ② passwd 用户名 # 为当前用户设置密码 ③ userdel -r 用户名 # 删除该账户和所有目录结构 ④ passwd -l 用户名 # 锁定账户密码 ⑤ passwd -u 用户名 # 解锁账户密码 ⑥ passwd -S 用户名 # 查看用户密码锁定状态 ⑦ groups # 查看用户属于哪个组 用户组操作命令 ① groupadd 组名 # 创建用户组 ② groupdel 组名 # 删除用户组 ③ useradd -g 组名 用户名 # 创建用户并且制定用户所属的组 ④ gpasswd -a 用户账户 用户组名 # 将某个用户添加到该组 ⑤ gpasswd -d 用户账户 用户组名 # 将某个用户移除该组 切换用户和操作环境 ① su - username #用户和操作环境都改变 ② su username #只切换用户不切换操作环境及环境变量不变。还可用于退出超级权限 用户和组常用命令 ① groups # 查看当前登录用户的组内成员 ② groups 用户名 # 查看当前用户所在的组 ③ whoami # 查看当前登录用户名
2.文件权限
第0位确定文件类型(d代表目录, -代表文件, l链接(快捷键))。 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。---User 第4-6位确定所属组(同用户组的)拥有该文件的权限。---Group 第7-9位确定其他用户拥有该文件的权限。 ---Other 注:读写执行也可以用数字表示:r=4,w=2,x=1
改变权限的命令 ① chmod 755 文件 # 赋予某文件权限rwxr-xr-x ② chmod u=rwx,g=rx,o=rx 文件 # 同上u=用户权限,g=组权限,o=不同组其他用户权限 ③ chmod u-x,g+w 文件名 # 给abc去除用户执行的权限,增加组写的权限 ④ chmod a+r 文件名 # 给所有用户添加读的权限 改变所有者(chown)和用户组(chgrp)命令 ① chown 用户名 文件名 # 改变文件的所有者为某用户 ② chgrp 组 文件 # 改变文件所属的组 ③ chown 用户 目录 # 改变这个目录的所有者 ④ chown ‐R 用户 目录 # 改变这个目录及其下面所有的文件和目录的所有者 改变用户所在组 usermod ‐g 组名 用户名 #在添加用户时,可以指定将该用户添加到哪个组中,同样用root的管理权限可以改变某个用户所在的组
七.Shell编程
Shell是一个命令行解释器,它为用户提供了一个向linux系统内核发送请求以便运行程序的界面系统级程序,用户可以通过shell脚本来启动,挂起,停止或者是编写一些程序。 1. 作用: 运维人员在进行服务器集群管理的时候,需要编写一下shell脚本来进行集群的管理 大数据的工作人员需要编写shell脚本对数据库进行管理 2. shell 的格式规范 Shell 脚本以 ***.sh 命名 Shell 脚本的开头为 #!/bin/bash 开头 赋予用户执行的权限 +x 执行的时候可以是相对路径 或者是绝对路径 3. 案例HelloWorld 定义一个文件命名为 test.sh 编写如下: #!/bin/bash echo "Hello World !" 赋予文件执行权限,然后直接执行
八.yum
1.yum简介
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
2.常见命令
1. 安装命令:install 安装软件包 2. 查看:list 查看可以安装的软件包 如:yum list | grep 软件名 3. 查看软件的安装位置:rpm -ql 软件名 远程下载需要的安装包,下载到/var/cache/yum/i386/6/base/packages目录下,安装完毕后自动删除
九.rpm
1.rpm简介
rpm(Red Hat Package Manager)类似于window中的软件安装包
2.常见命令
1. 查看已经安装的软件包: ① 参数:-a 查询所有软件包 ② 参数:-q 表示查询 示例:查询已经安装的java rpm -qa | grep java 2. 卸载已经安装的软件包 ① 参数:-e 卸载 ② 参数:--nodeps 不检查依赖性 示例:卸载已经安装的Java rpm -e --nodeps java-1.8.0-openjdk-1.8.0.45-2.4.3.3.el6.i686 3. 安装软件包 ① 参数:-i install 安装 ② 参数:v verbose 安装详细信息 ③ 参数:h hash 显示进度
十.Linux系统部署JDK
1. /usr目录下 创建一个新目录 lfg 专门存放安装的相关软件 2. linux版本JDK从windows电脑本地上传到linux系统中的/usr/lfg 3. 在当前目录下 使用tar -xvf 解开压缩包 tar -xvf jdk-8u181-linux-i586.tar.gz 4. 配置JAVA环境变量 ① 编辑文件/etc/profile vi /cd //profile ② 添加下面的环境变量的相关路径,在linux系统中 . 代表当前路径 $变量名 表示对应的路径 类似windows系统中的% 使用:冒号连接多个路径 ③ 使用export 生效对应的路径 示例: JAVA_HOME=/usr/etime/jdk1.8.0_181 CLASSPATH=.:$JAVA_HOME/lib.tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH ④ 保存并退出 ⑤ 重新加载配置文件profile,文件更新生效。 source /etc/profile 输入 javac或java 进行检测。
十一.Linux系统部署Tomcat
1.安装Linux版Tomcat
① linux版本tomcat上传到linux系统中的/usr/etime下
② tar -xvf解开压缩包
tar -xvf apache-tomcat-8.5.37.tar.gz
③ 启动和停止tomcat服务
tomcat解压目录/bin下 ./startup.sh
tomcat解压目录/bin下 ./shutdown.sh
④ 启动tomcat 使用浏览器访问服务器主页的时候,需要开启8080端口或者关闭防火墙。
⑤ 开放Linux8080端口对外访问(推荐) 此命令只需要了解即可
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
/etc/rc.d/init.d/iptables save
2.查看防火墙状态
3.关闭防火墙
测试tomcat服务器:打开自己电脑上的浏览器
十二.Linux系统部署MySQL
① linux版本MySQL上传到linux系统中的/usr/lfg ② 安装mysql之前,先卸载系统中自带的MySQL 查询系统中是否已经安装了MySQL rpm -qa | grep mysql 卸载MySQL rpm -e --nodeps mysql-libs-5.1.71-1.el6.i686 ③ 解压MySQL压缩包 MySQL的rpm包解压文件存放到目录mysql下,新建一个目录 mkdir mysql tar -xvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar -C mysql -C 表示解压到将解压的文件存放到指定的目录下, 存放的目录必须存在。 ④ rpm命令安装mysql数据库,cd mysql 执行下面命令: 安装MySQL数据库服务器: rpm -ivh mysql-community-server-5.7.24-1.el6.x86_64.rpm --nodeps --force 安装MySQL数据库客户端: rpm -ivh mysql-community-client-5.7.24-1.el6.x86_64.rpm --nodeps --force 启动MySQL服务: service mysqld start 获取安装时的初始密码:grep 'temporary password' /var/log/mysqld.log ⑤ 使用root登录mysql ,并且设置root用户密码 登录MySQL:mysql -uroot -pxxxxxx set global validate_password_policy=0; set global validate_password_length=4;//密码长度为4 select @@validate_password_length; 登录之后重置root密码: 使用mysql命令: set password = password('1234'); ⑥ 授权远程连接 默认情况下mysql超级用户只能本地访问,超级用户root是不可以远程登录mysql,所以需要设置开启root用户远程登录mysql的权限 % 表示远程访问 grant all privileges on *.* to 'root' @'%' identified by '1234'; flush privileges; -- 更新授权。 ⑦ linux系统下我们远程访问mysql数据库,需要开放3306端口,否则远程连接不上哦! /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT /etc/rc.d/init.d/iptables save