第一章 Linux概述
Unix操作系统是Linux的前身;
多用户、多任务操作系统;收费的;
GPL协议:所有GPL协议下的自由软件都必须遵循“CopyLeft”(非版权)原则:即自由软件允许用户自由拷贝、修改和销售,但对其源代码的任何修改都必须向所有用户公开。
GNU计划:旨在开发一个类似UNIX并且是自由软件的完整操作系统。
Linux系统特点:
开放性(开源)、多用户、多任务、良好的用户界面、优异的性能和稳定性。
Linux版本:常用的主流版本——》Debian、redhat、ubuntu、centos、Fedora
第二章 安装Linux
安装虚拟机软件
常用的虚拟机:VMware Workstation、VirtualBox、Virtua* PC
安装VMware——》安装centOS操作系统
Linux操作系统和Windows操作系统进行关联:
桥接模式、NAT模式、仅主机模式
配置静态IP
远程连接工具:Xshell(目前最好用)、SecureCRT(收费)、Putty
第三章 Linux的结构
1、Linux组成:内核、文件系统、脚本、应用程序
![](https://i-blog.csdnimg.cn/blog_migrate/8d440fcc8e0eb55bfbffd57f4a3e59a0.png)
第四章 常用Linux命令的基本使用
1、常用快捷键:
tab:命令或者路径提示及补全
ctrl+c:放弃当前的输入,终止当前任务或程序;
ctrl+l:清盘(clear命令)
ctrl+insert:复制
鼠标右键:粘贴
ctrl+shift+R 重新连接
ctrl+1/2/3/4...切换会话窗口
上下键:查找执行过的命令,或者是history命令
2、常用命令:
![](https://i-blog.csdnimg.cn/blog_migrate/6cd09b8ab1742ab12d4b53b90abc4485.png)
a、cp复制拷贝命令:
cp source dest (复制source到dest)
cp -r sourceFolder targetFolder(递归复制整个文件夹)
b、mv(move) 移动文件或目录,也可以给文件或目录重命名
mv oldNameFile newNameFile(重命名)
mv /temp/movefile /targetFolder(递归移动文件)
c、cat 查看文件内容
d、more 查看文件(cat查看小文件,more查看大文件 一页一页显示文件内容)
e、less查看文件内容
f、head 查看文件内容,只查看头几行
g、tail 查看文件内容,只看尾巴几行
3、组合命令
1)重定向输出>和>>
>重定向输出 cat /etc/passwd>a.txt 将输出定向到a.txt
>> 重定向输出,又追加功能 cat /etc/passwd>>a.txt 输出并且追加
2)管道 | 将一个命令的输出作为另一个命令的输入
ps 进程状态 ps -ef
grep 全局正则表达式版本(搜索)
ps -ef | grep java 所有的进程中查找java进程
ls --help | more 分页查看帮助信息
3)逻辑控制&& 与 只有左边的命令成功时,右边的命令才会执行
例子:启动服务并查看日志 ./startup.sh && tail -100f catalina.out
history查看所敲命令历史
第五章 打包和解包命令
1)打tar包
2)解tar包
5、
1)gzip格式压缩与解压缩
压缩文件: tar -zcvf 打包压缩文件名.tar.gz 被压缩文件/目录
解压文件:tar -zxvf 打包文件.tar.gz
解压缩到指定路径:tar -zxvf 打包文件.tar.gz -C 目录路径
2)bzip2格式压缩和解压缩
压缩文件:tar -jcvf 打包文件名.tar.bz2 被压缩文件/目录
解压缩:tar -jxvf 打包文件.tar.bz2
解压缩到指定路径:tar -jxvf 打包文件.tar.bz2 -C 目录路径
第六章 时间日期
date显示当前时间
date显示当前日期
设置系统时间:date -s 字符串时间
cal查看日历:cal [选项]
第七章 搜索查询
a、find查找文件或者目录
格式:find path [options]
b、grep过滤查找 基本格式:grep [options] 范围
第八章 vi编辑器
vi即可以查看文件,也可以编辑文件。如果目标文件不存在,会创建新的文件,但是如果新文件没做编辑,退出后还会消失。
vi的三种模式:编辑、底行、命令模式
编辑模式: 命令模式下按下 i、o、a进入编辑模式
i:光标不动;o:另起一行;a:光标到下一个字符; 按ESC退出编辑模式进入命令模式。
底行模式:命令模式下按:或者/进入底行模式,可以输入命令
1)退出vim:
2)撤销上次操作(一般模式下)
3)设置行号(底行模式)
4)替换文本
5)查找(一般模式)
命令模式(一般模式)
第九章 用户及组管理
1、添加新用户:useradd 用户名;
2、设置密码:passwd 用户名;
3、判断当前用户是否存在:id 用户名;
4、su 切换用户
su 用户名称;(切换用户,只能切换用户的执行权限,不能获得环境变量)
su - 用户名称;(切换用户并获取到用户的环境变量和执行权限)
5、userdel 删除用户
userdel 用户名;(删除用户但保存用户主目录)
userdel - 用户名;(用户和用户目录都删除)
6、who 查看登录用户信息
whoami;(显示自身用户名称)
who am i; (显示登录用户的用户名称)
who;(看当前哪些用户登录到了本台机器上)
7、sudo获取临时管理员权限
第一步:修改配置文件 、etc/sudoers文件,添加tom ALL=(ALL) ALL;
第二部:sudo 命令
8、用户组的操作:
groupadd 组名; 创建组
groupdel 组名; 删除组
groupmod -n 新组名 老组名; 修改组名
cat /etc/group 查看创建了哪些组
usermod -g 用户组 用户名 修改用户
第十章 文件权限
2、修改文件权限
3、chown改变所有者
chown 最终用户 文件
4、chgrp改变所属组
chgrp 最终用户组 文件
第十一章 系统管理与进程管理
1、磁盘信息
2、ps查看系统中的所有进程
基本语法:ps -aux
a:显示终端上的所有进程,包括其他用户的进程
u:显示进程的详细状态
x:显示没有控制终端的进程
3、top查看系统健康状态
top [选项]
-d 秒数:指定top命令每隔几秒更新。默认是3秒。
-i:使top不显示任何闲置或者僵死进程。
-p:通过指定监控进程ID来仅仅监控某个进程的状态。
在执行top命令之后:
P:以CUP使用率排序,默认就是此项。
M:以内存的使用率排序。
N:以PID排序
q:退出top
4、kill终止进程:kill -9 pid进程号 -9表示强迫进程立即停止。
5、netstat显示网络统计信息
作用:netstat命令用于显示与IP、TCP、UDP、ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
基本语法: NETSTAT [-a][-b][-e][-n][-o][-p proto][-r][-s][-v][interval]
netstat -anp 查看这个系统目前网络状态
netstat -anp | grep 22
第十二章 安装软件
1、rpm软件包管理器(对软件的安装、查询、卸载)
第一步:rpm包的查询命令:
-q:(query) 查询
-a:(all) 所有
-i:(info) 信息
-l:(list) 显示所有相关文件
-f:(file) 文件,显示文件对应rpm包
查询已安装的rpm列表: rmp -qa |grep xxx
rmp -qa | less
查询软件包信息:rmp -qi 软件包全名
查询一个rpm包中的文件安装到哪里去了:rpm -ql 软件包全名
查询指定文件归属于哪个软件包: rpm -qf 软件包全名
第二步:rpm包的卸载
第三步:rpm包的安装
2、yum
能够从服务器上自动下载、自动安装、自动处理依赖关系。
常用命令:
2、安装JDK
3、安装tomcat
4、安装mysql
第一步:查询系统自带的mysql: rpm -qa | grep mysql
第二步:如果系统自带,则卸载自带的mysql:rpm -e --nodeps mysql-libs-5.1.73-8........
第三部:下载安装官网yum源:
查看yum源仓库:ll /etc/yum.repos.d/
下载yum源:wget -P /user/software http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
第四步:安装下载好的rpm文件: cd /user/software rpm -ivh mysql-community-release-el6-5.noarch.rpm
第五步:安装mysql服务器: install -y mysql-community-server
第六步:启动服务器: service mysqld start
第七步:修改密码: /usr/bin/mysqladmin -u root password 123456
第八步:进入mysql: mysql -uroot -p 123456
第九步:
问题1:解决中文乱码
a、查看编码表: show variables like 'character_set_%';
b、修改mysql配置文件 >/etc/my.cnf ——> vim /etc/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
c、重启mysql服务: service mysqld restart;
d、再次查看编码表,都是UTF-8了:show variables like 'character_set_%'; ——》解决问题
问题2:默认情况下mysql服务端不允许远程客户端访问
原因:因为用户没有远程访问权限
use mysql; select host,user from user;
解决:授权 grant all privileges on *.* to 'root'@'%' identified by '123' with grant option;
刷新权限: flush privileges;
再次查看权限:
第十三章 大数据Linux操作
1、克隆两台机器
选中当前虚拟机 右键—》管理—》克隆(创建完整克隆)
配置克隆后的虚拟机 vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改ipaddr —》重启网卡服务器 systemctl restart network
更改主机名:hostnamectl set-hostname xxx —》 重启机器reboot
克隆好两台机器 centOS 7-2和centOS 7-3
2、关闭三台机器防火墙
查看防火墙状态: systemctl status firewalld
关闭防火墙:systemctl stop firewalld
设置防火墙状态失效,开机自动关闭: systemctl disable firewalld
3、三台机器关闭selinux(安全增强型Linux 不关闭导致SSH链接异常)
vi /etc/selinux/config —> SELINUX=disabled
4、三台机器免密登录
ssh协议(安全外壳协议):
两种级别的安全验证:
第一种级别(基于口令的安全验证)
ssh 192.168.80.122 ——》输入密码
要想ssh 主机名 需配置 vim /etc/hosts 加上 192.168.80.121 centOS7-1 之类
ssh centOS7-2 ——》输入密码
exit 退出ssh
第二种级别(基于秘钥的安全验证)
第一步:在三台机器上分别生成私钥和公钥:ssh-keygen -t rsa
第二步:将三台机器上的公钥拷贝到centOS7-1对应的位置,在三台机器上分别执行:ssh-copy-id centOS7-1
第三步:在centOS7-1上执行命令,将授权文件拷贝到centOS7-2和centOS7-3 :scp authorized_keys centOS7-2/centOS7-3:$PWD
最后:ssh centOS7-2 即可完成登录 不需输入密码。
补充:突然远程链接补上 123了,先运行service NetworkManager stop ,然后再运行service network restart就可以了。(因为直接service network restart失败)
5、三台机器同步时间
crontab在线生成:https://cron.qqe2.com/
第十四章 Shell编程
1、简洁 shell的作用:shell解释器角色,它介于操作系统和系统内核之间;
作为命令语言,也是一个解释型的语言;
2、查看shell解释器: cat /etc/shells
3、linux快速入门:
/usr/shell/hello.sh 里面编辑
执行脚本:/bin/bash hello.sh
/bin/sh/hello.sh
bash hello.sh
sh hello.sh
以上四种方式均能控制台输出 hello world
ll 查看hello.sh权限
没有执行权限,chmod +x hello.sh 添加执行权限
./hello.sh 也可执行脚本,控制台输出hello world
4、变量:
定义变量:username="tom" 注意 :变量名前不能加$
规则:变量只能用字母、数字、下划线,首字母不能是数字;中间不能有空格,可以使用_;不能使用标点符号;不能使用bash里的关键字;
使用变量: echo $username 或 echo ${username}
只读变量:readonly 变量名
删除变量:unset 变量名 注意:unset命令不能删除只读变量。
5、字符串
可以用单引号、双引号、不用引号。
单引号的限制:单引号中任何字符串都会原样输出,里面任何变量都是无效的。
单引号中不能出现单独一个单引号,使用转义符也是无效的。
双引号的优点:双引号中可以有变量,可以出现转义符。
---------------skill="java"-------------------
获取字符串的长度:echo ${#skill} —》4
------------str="i like hadoop"----------------
提取字符串:echo ${str:2} —》substring(2) like hadoop
echo ${str:2:2} —》subtring(2,2) li
--------------str="hadoop is so easy" 查找o----------------
查找字符串:echo `expr index "$str" o` —》4 找的时候从1开始计算
6、运算符
val=`expr 1 + 2`
echo val
注意:表达式和运算符之间要有空格,例如 1+2 是不对的,必须写成 1 + 2;
完成的表达式要被``包含,不是单引号;
算数运算符:
注意:条件表达式要放在[]之间,且一定有空格 [$a==$b]是不对的,要写成[ $a == $b ]
`expr $a == $b`
还可以通过$(())、$[]进行算数运算符
关系运算符:
只支持数字,不支持字符串,除非字符串的值是数字。
7、流程控制语句
if语句
实例:
#!/bin/bash
score=95
if [ $score -gt 60 ] ; then
echo "及格"
else
echo "不及格"
fi
if [ $score -ge 90 ] ; then
echo "A"
elif [ $score -ge 80 ] ; then
echo "B"
elif [ $score -ge 70 ] ; then
echo "C"
else
echo "D"
fi
for循环语句:
#!/bin/bash
# 需求1: 遍历 1~5
for i in 1 2 3 4 5; do
echo $i;
done
echo "---------------------"
# 需求2: 遍历 1~100
for i in {1..100}; do
echo $i;
done
echo "------------------------"
# 需求3: 遍历 1~100之间的奇数
for i in {1..100..2}; do
echo $i;
done
echo "----------------------"
# 需求4: 遍历 根目录 下的内容
for i in `ls /`; do
echo $i;
done
echo "-----------------"
while循环
#!/bin/bash
# 计算 1~100 的和
sum=0;
i=1;
while [ $i -le 100 ]; do
sum=$[ sum + i ];
i=$[ i + 1 ];
done
echo "sum=$sum";
无限循环
#!/bin/bash
#使用for循环每隔一秒打印hello
for((;;))
do
echo "hello";
sleep 1;
done
# 使用while循环 每隔一秒打印当前时间
while true;
do
echo `date +"%Y-%m-%d %H:%M:%S"`
sleep 1;
done
case语句
#!/bin/bash
# 输入1-4之间的数字
echo "请输入1-4之间的数字:"
read aNum
case $aNum in
1) echo "你选择了1"
;;
2) echo "你选择了2"
;;
3) echo "你选择了3"
;;
4) echo "你选择了4"
;;
*) echo "输入错误"
;;
esac
break和continue
函数的使用
无参函数:
#!/bin/bash
# 定义参数
fun(){
echo "这是我的第一个shell参数"
}
# 调用函数
fun
传递参数:
# 定义函数
fun1(){
echo "获取参数"
echo "第一个参数:$1"
echo "第二个参数:${2}"
echo "第三个参数:$3"
echo "全部参数:$*"
echo "全部参数:$@"
}
# 调用函数
fun1 aa bb cc