Linux - 基础及常见命令

Linux - 基础及常见命令

目录

1 Linux 基础

1.1 Linux 概述
1.1.1 Linux 系统的特点
// 开放性(开源)、多用户、多任务、良好的用户界面、优异的性能和稳定性以及多用户多任务的特点
1.1.2 Linux 应用场景
// 1 服务器系统
	// Web应用服务器、数据库服务器、游戏服务器、接口服务器、DNS、FTP等等

// 2 嵌入式系统
	// 路由器、防火墙、手机、PDA、IP 分享器、交换器、家电用品的微电脑控制器等等

// 3 高性能运算、计算密集型应用
	// Linux有强大的运算能力。IBM的Watson超级计算机就是使用了Linux系统

// 4 桌面应用系统
	// 很多桌面操作系统的底层也是Linux

// 5 移动手持系统
	// 安卓系统就是基于Linux
1.2 Linux 安装
1.2.1 配置静态IP
// 1 windows设置 - 网络 - 更改适配器选项 - VMware Network Adapter Vmnet8 - 属性 - IPV4 - 配置IP 地址 (192.168.80.1 / 255.255.255.0)

// 2 Vmware - 编辑 - 虚拟网络编辑器 - NAT模式 - 子网IP(192.168.80.0) 掩码(255.255.255.0) - NAT设置(192.168.80.2) - DHCP设置(起192.168.80.3 始192.168.80.254)

// 3 运行centOS - vi /etc/sysconfig/network-scripts/ifcfg-ens33 - 添加 
	BROWSER_ONLY=no
	BOOTPROTO=static
	...
	ONBOOT=yes
	IPADDR=192.168.80.100
	NETMASK=255.255.255.0
	GATEWAY=192.168.80.2
	DNS1=8.8.8.8
        
// 4 重启网卡服务
	systemctl restart network
        
// 5 检查IP是否更改
	ip addr
        
// 6 测试
	ping www.baidu.com        
1.2.2 虚拟机快照
// 右键 - 快照 - 拍摄快照 - 设置名称和说明
1.2.3 Xshell 连接
// 新建 - 名称 - 主机(192.168.80.100) - 输入用户名和密码

// xftp 工具 连接windows和centos 传输文件
1.3 Linux 结构
1.3.1 Linux 组成
// 内核
	是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序
        
// Shell
	是系统的用户界面,提供了用户和内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。但它不仅是命令解释器,而且还是高级编程语言,shell编程 
        
// FILE SYSTEM
	文件系统是文件存放在磁盘等存储设备上的组织方法,Linux支持多种文件系统,ext3,ext2,NFS,SMB,iso9660等    

// 应用程序
	标准的Linux操作系统都会有一套应用程序例如X-Window,Open Office等        
1.3.2 Linux目录结构
/boot:系统引导文件、内核
/bin:用户的基本命令
/dev:设备文件
/etc:配置文件
/home:用户目录
/root:root用户目录
/sbin:管理类的基本命令
/tmp:临时文件存放地
/usr:共享的只读数据
/mnt:临时文件系统挂载点
/media:移动设备挂载点
/opt:第三方应用程序的安装位置
/srv:系统运行的服务用到的数据
/var:变化的数据文件
/proc:用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统
1.4 Linux 常用命令
1.4.1 常用快捷键
1) tab键:命令或者路径提示及补全;
2) ctrl+c:放弃当前输入,终止当前任务或程序;
3) ctrl+l:清屏;
4) ctrl + insert:复制;
5) 鼠标右键:粘贴;
6) alt+c :断开连接 / ctrl + shfit + R 重新连接
7) alt+1/2/3/4/5… :切换会话窗口
8) 上下键:查找执行行过的命令,或者是history命令
1.4.2 终端命令格式
// 格式
command [-options] [parameter]

	// commond
     命令名, 相应功能的英文单词或单词的缩写
    // -options 
    选项, 可用来对命令进行控制, 也可以省略
    // parameter
    传给命令的参数, 可以是 零个、一个 或者 多个
1.4.3 帮助命令
// help 帮助信息 无法翻页搜索
command --help
    
// man 手册 manual缩写
man commond    
	// 操作方法
    空格键 显示手册的下一屏
	Enter键 一次滚动首页的一行
	b 回滚一屏
	f 前滚一屏
	q (quit) 退出
	/word 搜索word字符串
	n(next) 搜索下一个
	N 搜索上一个

1.4.4 其他常用命令
// 01 ls list 查看当前目录下的内容
// 02 pwd print working derectory 查看当前所在文件夹
// 03 cd [目录名] change directory 切换文件夹
// 04 touch [文件名] touch 如果文件不存在, 新建文件
// 05 mkdir [目录名] make directory 创建目录
// 06 rm [文件名] remove 删除指定的文件名
// 07 clear clear 清屏
1.4.5 切换目录 cd
// cd 切换目录
	// cd .. 切换到上级目录
	//cd - 后退到上次所在目录
	// cd / 切换到根目录

// pwd 显示当前工作目录(路径)
	// 绝对路径 从根目录开始
	// 相对路径 从当前目录开始
1.4.6 查看目录内容 ls
// ls list 列出目录内容 后面可接文件绝对路径
	// ls -a(all) 所有内容包括隐藏
	// ls -lh(human) 人性化显示(包括单位等)
	// ls -l 查看内容详细信息 等同于 ll

// linux 下树结构显示某文件夹下所有文件
ls -R 
1.4.7 创建文件 touch
// touch 创建文件

// 创建多文件
	touch 文件1 文件2 ..
1.4.8 创建目录命令 mkdir
// 基本语法
mkdir [-p] 要创建目录
    // -p 可选,parent,可创建递归目录 新建目录不能与当前目录已有目录文件同名
    mkdir -p test1/test2
1.4.9 删除空目录 rmdir
// rmdir 空目录名
1.4.10 删除文件 rm
// 语法
rm [-参数] 文件/目录
	// -f force (强制) 强制删除,忽略不存在的文件, 无需提示
	// -r recursive (递归) 递归地删除目录下的内容, 删除文件夹 时必须加此参数
    
// rm wj 删除一个文件
// rm -f wj 不确认删除文件
// rm -r ml 递归删除一个目录及其内容
// rm -rf ml 不确认递归删除一个文件夹
// rm -rf * 清空当前文件夹    
1.4.11 拷贝复制命令 cp
// 复制指定文件或目录 到一个文件或目录
cp source target 
cp -r source target
	// -r recursive (递归) 递归复制目标目录的内容    	
1.4.12 移动命令(重命名) mv
// 移动文件或目录,重命名文件或目录
	mv odlName newName // 重命名
	mv /temp/wj /target //递归移动        
1.4.13 查看问价内容 cat
// 基本语法
cat [参数] 文件名
	// -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
    // -E :将结尾的断行行字节 $ 显示出来;
    // -n :列出行号,连同空白行也会有行号,与 -b 的选项不不同;
    // -T :将 [tab] 按键以 ^I 显示出来;
	// -v :列出一些看不出来的特殊字符(包括中文)
	// -A :相当于 -vET 的整合选项,可列列出一些特殊字符而不不是空白而已
1.4.14 一页一页查看文件内容 more
// more 文件名
	
	// 查看功能使用
	空格键 (space):代表向下翻一页;
	Enter:代表向下翻『一行』;
	q代表立刻离开 more ,不再显示该文件内容。
	Ctrl+F 向下滚动一屏
	Ctrl+B 返回上一屏
	= 输出当前行的行号(光标)
1.4.15 一页一页查看文件内容 less
// less 文件名 支持 pageup pagedown 滚动
	
	//功能说明
	空格键 :向下翻动一页;
	[pagedown]:向下翻动一页;
	[pageup] :向上翻动一页;
	/字符串 :向下搜寻『字符串』的功能;n:向下查找;N:向上查找;
	q :离开 less 这个程序;

1.4.16 查看文件内容头几行 head
// 基本语法
	head wj //查看前10行
	head -n num wj //查看文件前num行
	head -c num wj //查看文件前num个字符       
1.4.17 查看文件内容尾几行 tail
// 可查看文件实施追加内容
// 基本语法
	tail -n num wj //从末开始数num行内容
	tail -f wj // 实时跟踪该文件更新
        
// tail -10f wj 动态追踪最后10行内容        
1.4.18 组合命令(追加和替换) > 和 >>
// 控制台输出 > wj 将输出覆盖到文件中
// 控制台输出 >> wj 将输出追加到文件中
1.4.19 管道 |
// 将一个命令的输出当作另一个命令的输入
	
	//常用相关命令
	ps -ef //Process Status 进程状态 
	grep 全局正则表达式 //搜索 Global Regular Expression Print 输入中文可加‘‘       
	// ps -ef | gre java 查询名称包含java的进程        
1.4.20 逻辑控制 &&
// 类似逻辑与的功能,左边命令成功右边才会去执行

// 使用场景 通常启动软件不会打印启动日志
	// tail -100f catalina.out 打印入职
	// ./startup.sh 启动软件
	./startup.sh && tail -100f catalina.out

1.4.21 查看所敲命令历史 history
// history
1..5 Linux 打包解包命令
1.5.1 打 tar 包
// 以 .tar 结尾 打包后会变大

	// 将文件 目录 多个文件 打包
	tar -cvf bm.tar ml
	tar -cvf bm.tar wj1 wj2 wj3        
        
	// 参数
	c create 生成档案文件, 创建打包文件
	v verbosely(啰嗦的) 像 ‘唐僧‘ 一样报告进度
	f file 指定档案的文件名称, f后面一定是 .tar 文件, 所以必须放到左后
		        
1.5.2 解 tar 包
// 解包到当前目录
tar -xvf bm.tar
// 解包到指定目录
tar -xvf bm.tar -C 路径
    
    // 参数
	x extract (提取) 解包
	C (大写C)	directory (目录) 默认保存到当前目录, 通过 -C 更改解压目录, 注意: 解压目录必须存在
    
1.5.3 gzip 格式压缩解压
// Linux 最常用压缩格式 xxx.tar.gz
// tar 命令 -z 选项 可调用 gzip 方便实现压缩和解压

	// 压缩文件到指定目录
	tar -zcvf bm.tar.gz ml
	// 解压文件
	tar -zxvf bm.tar.gz
	// 解压文件到指定路径
	tar -zxvf b,.tar.gz -C ml
        
// tar 打包选项 
    z gzip 使用gzip压缩和解压缩
	j bzip2 使用bzip2压缩和解压缩

1.5.4 bzip 格式压缩解压
// 格式 xxx.tar.bz2 tar -j 选项调用

	// 压缩文件
	tar -jcvf bm.tar.bz2 ml
	// 解压文件当前目录
	tar -jxvf bm.tar.bz2
	// 解压文件到指定目录
	tar -jxvf bm.tar.bz2 -C ml        

如果报错tar (child): bzip2:无法 exec: 没有那个文件或目录 要安装bzip2的包

yum install -y bzip2

1.6 Linux 时间和日期
1.6.1 显示当前时间 date
(1)date (功能描述:显示当前时间)
(2)date +%Y (功能描述:显示当前年年份)
(3)date +%m (功能描述:显示当前月份)
(4)date +%d (功能描述:显示当前是哪一天)
(5)date +%Y%m%d … (功能描述:显示当前年年月日各种格式 )
(6)date "+%Y-%m-%d %H:%M:%S" 或者单引号也可以 (功能描述:显示年年?月?日时分秒)
1.6.2 显示非当前时间 date -d
(1)date -d ‘1 days ago‘ (功能描述:显示前一天日期)
(2)date -d yesterday +"%Y-%m-%d"(同上)
(3)date -d next-day +"%Y-%m-%d" (功能描述:显示明天日期)
(4)date -d ‘next monday‘ (功能描述:显示下周一时间)
1.6.3 设置系统时间 date -s
// date -s 字符串时间
date -s "2020-06-20 20:52:18"
1.6.4 查看日历 cal
cal [选项] (功能描述:不加选项,显示本月日历)
	//
    -3 ,显示系统前一个月,当前月,下一个月的日历
	具体某一年年,显示这一年年的日历
    
// cal -3 cal 2020    
1.7 搜索查找
1.7.1 查找文件或目录 find
// find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等

	// 1 按文件名查找 
	find /etc -name yum.conf //etc 目录查找文件yum.conf
	find /etc -name ‘yum‘ // etc 目录下查找文件名含有 ‘yum‘
	find . -name ‘yum*‘ // 查找当前目录下文件名开头是字符串‘yum‘
        
	// 2 按文件特征查找
	find / -atime -2 // 查找系统最后48小时访问的文件  
	find / -empty // 查找系统为空的文件或文件夹
	find / -group susan //查找系统属于susan group的文件
	find / -mtime -1 //查找系统中最后24小时修改过文件
	find / -user susan // 查找系统中属于susan用户的文件
	find / -size +10000c //查找系统中大于10000字节的文件 (c 字节 w 双字 k kb M MB G GB)
	find / -size -1000k //查找系统中小于1000kb的文件
        
	// 3 按混合查找方式 ! -and(-) -or(-o)	        
	find /tmp -size +10c -and -mtime +2 // tep 目录下查找大于10字节且2天前修改的文件
	find / -user root -or -user susan // 查找属于用户root或susan的文件  
	find /tmp ! -user susan //查找 tmp 目录下不属于用户susan的文件        
1.7.2 过滤查找 grep
// grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找

// 格式
grep [参数] 范围
   	
    //[options]主要参数:
	-c:只输出匹配行的计数。
	-i:不区分大小写
	-n:显示匹配行及行号。
	-w:显示整个单词
	-r:递归查询

1.8 Vi 编辑器
1.8.1 Vi 基础
// 可查看文件和编辑文件
// vim 是 vi 升级版本
// 目标文件不存在会创建新文件,新文件不编辑会消失

// vi 三种模式
	// 编辑模式 i, o, a 对文本输入和修改
	// 底行模式 : 退出vim或查找,替换
	// 命令模式 Esc	快捷命令操作数据

// vim 安装
yum -y install vim-enhanced
1.8.2 编辑模式
// 命令模式下 
	// i 光标不动进入编辑模式
	// o 光标另起一行
	// a 光标到下一个字符进入编辑模式
1.8.3 底行模式
// 命令模式下 : 进入底行模式

// 退出 vim
:q 未编辑时退出vim
:q! 编辑后,退出并且不保存
:wq 编辑后,退出且保存
:x 编译后保存

// 撤销操作    
:u 撤销上一次操作
ctrl + r 恢复上一次操作
    
// 设置行号
:set nu 显示行号
:set nonu 不显示行号
    
// 替换文本
:s/old/new/ 用new替换old,替换当前行的第一个匹配
:s/old/new/g 用new替换old,替换当前行的所有匹配
:%s/old/new/ 用new替换old,替换所有行的第一个匹配
:%s/old/new/g 用new替换old,替换整个文件的所有匹配
    
// 查找
/文本 搜索指定文本,高亮显示,按n显示下一个,按N显示前一个
:整数 快捷跳转到指定行
    
1.8.4 命令模式
p(pause) 将之前dd或yy的数据粘贴到光标位置
yy 复制光标所在行
5yy 复制光标及下面共5行
dd 剪切当前行
5dd 剪切光标及下面共5行
1.9 用户及组管理
1.9.1 添加新用户 useradd
// 当前用户必须有添加用户权限

// 语法
useradd username  
1.9.2 设置用户密码 password
// 给用户设置密码
pasword useranme
1.9.3 判断用户是否存在 id
id username
    // 存在输出 uid gid groups 
1.9.4 切换用户 su
su username (功能描述:切换用户,只能获得用户的执行行权限,不能获得环境变量)
su - username (功能描述:切换到用户并获得该用户的环境变量及执行权限)
1.9.5 删除用户 userdel
(1)userdel 用户名 (功能描述:删除用户但保存用户主目录)
(2)userdel -r 用户名 (功能描述:用户和用户主目录,都删除)
1.9.6 查看登录用户信息 who
(1)whoami (功能描述:显示自身用户名称)
(2)who am i (功能描述:显示登录用户的用户名和登陆时间)
(3)who (功能描述:看当前有哪些用户登录到了了本台机器器上)
1.9.7 设置Linux普通用户用于root权限 sudo
// 让普通用户执行一些或者全部的root命令的一个工具 减少了root用户的登录 和管理时间,同样也提高了安全性

// 1 修改配置文件 并在 root下添加一行
vim /etc/sudoers

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tom ALL=(ALL) ALL

// 2 登录普通用户操作管理员命令
sudo useradd xx    
1.9.8 查看创建了哪些用户
cat /etc/passwd
1.9.9 新增用户组 groupadd
groupadd 组名
1.9.10 删除组 groupdel
groupdel 组名
1.9.11 修改组 groupmod
groupmod -n 新组名 老组名
1.9.12 查看创建了哪些组
cat /etc/group
1.9.13 修改用户 usermod
usermod -g 用户组 用户名
    //hadoop 加入 mygroup
    usermod -g mygroup hadoop
1.10 文件权限
1.10.1 文件权限基础
// ll 或 ls -l 显示文件的属性及文件所属的用户和组

-rw-r--r--. 1 root root  170 3月   9 17:55 123.tar.bz2
-rw-r--r--. 1 root root  165 3月   9 17:48 123.tar.gz
-rw-r--r--. 1 root root    8 3月   9 17:23 1.txt
-rw-r--r--. 1 root root    8 3月   9 17:23 2.txt
-rw-r--r--. 1 root root   16 3月   9 17:24 3.txt
-rw-------. 1 root root 1271 3月   9 06:26 anaconda-ks.cfg
// 第一位 文件类型 - 文件 d 目录 | 链接
// 属主权限:当前文件所属用户的权限,在Linux中每一个文件都有所属的用户
// 属组权限:当前文件的用户所在组的其它成员的权限
// 其它用户权限:跟文件所属用户不在同组的其它用户的权限    
// 所属用户
// 所属组
// 大小
// 末次访问时间
// 文件名    
  
    
每一段中的内容都是一样的,分别限定:读(r=4)、写(w=2)、执行(x=1)
rwx 7 具备所有权限(421)
rw- 6 具备读写权限(420)
r-x 5 具备读和执行权限(401)
r-- 4 具备只读权限(400)
-wx 3 具备写和执行权限(021)
-w- 2 具备写权限(020)
--x 1 具备执行权限(001)
--- 0 000
    
1.10.2 文件权限管理 chmod
chmod 755 xx.txt
chmod u=rwx,g=rx,o=rx xx.txt    
1.10.3 改变所有者 chown
chown 最终用户 wj //改变文件或者目录的所有者
1.10.4 改变所属组 chgrp
chgrp 最终用户组 wj //改变文件或目录的所属组
1.11 系统管理和进程管理
1.11.1 磁盘信息
1 df -h disk free 显示磁盘剩余空间
2 du -h [目录名称] disk usage 显示目录下的目录大小
    // -h 以人性化方式显示文件大小
1.11.2 查看系统中所有进程
ps (-)aux //查看系统中所有进程
    a 显示终端上的所有进程, 包括其他用户的进程
	u 显示进程的详细状态
	x 显示没有控制终端的进程

// ps aux 和ps -ef  两者的输出结果差别不大,但展示风格不同。aux是BSD风格,-ef是System V风格    
    
// 输出结果详解
USER:该进程是由哪个用户产生的
PID:进程的ID号
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面
终端,tty7是图形终端。pts/0-255代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台
START:该进程的启动时间
TIME:该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
    
1.11.3 查看系统健康状态 top
top [选项]

	-d 秒数:指定top命令每隔几秒更新。默认是3秒。
	-i:使top不显示任何闲置或者僵死进程。
	-p:通过指定监控进程ID来仅仅监控某个进程的状态。
    
// 健康状态显示后交互
    P: 以CPU使用率排序,默认就是此项
	M:以内存的使用率排序
	N: 以PID排序
	q: 退出top
    
// 查询结果字段解释
	// 第一行 任务队列信息
    13:35:15 //系统当前时间
	up 5:25 // 系统运行时间
	1 users // 当前登录一个用户
	load average:0.00,0.01,0.05 //系统在1,5,15分钟的平均负载,<1负载较小,>1系统超负荷
	//第二行 进程信息
	Tasks:95 total //系统中进程总数
	2 running // 正在运行的进程数
	92 slepping // 睡眠的进程
	0 stopped // 正在停止的进程
	0 zombie // 僵尸进程,非0需手工检测
	//第三行 CPU信息
	Cpu(s):0.1%us //用户模式占用的CPU百分比
	0.3%sy //系统模式占用的CPU百分比
	0.0%ni //改变过优先级的用户进程占用CPU百分比
	99.7%id //空虚CPU的CPU百分比
	0.0%wa //等待输入/输出进程的占用CPU百分比
	0.0%hi //硬中断请求服务占用的CPU百分比
	0.0%si //软中断请求服务占用的CPU百分比
	0.0%st //Steal time 虚拟时间百分比,当有虚拟机时,虚拟CPU等待实际CPU的时间百分比   
	//第四行 物理内存信息
	Mem:995896k total //物理内存总量 k
	92580k used //已经使用物理内存
	638392k free //空闲的物理内存数量
	264924k buffers //作为缓存的内存数量
	//第五行 交换分区swap 信息
	Swap:2097148k total //交换分区(虚拟内存)的总大小
	0k used //已使用的交换分区的大小
	2097148k free //空闲交换分区的大小
	719608 avail Mem //可用交换区总量       	
1.11.4 终止进程 kill
kill -9 pid
    // -9 强迫进程立刻停止
1.11.5 显示网络统计信息 netstat
// netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况

//安装 
yum install net-tools
    
// 选项配置

	-a // 本选项显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED ),也包括监听连接请求(LISTENING )的那些连接,断开连接(CLOSE_WAIT )或者处于联机等待状态的(TIME_WAIT )等   
	-e // 显示以太网统计信息。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量
    -n // 以数字形式显示地址和端口号
	-o //显示与每个连接相关的所属进程 ID
    -p proto //显示 proto 指定的协议的连接;proto 可以是下列协议之一: TCP 、UDP 、TCPv6 或 UDPv6 
    -r //本选项可以显示关于路由表的信息,类似于后面所讲使用route print 命令时看到的信息。除了显示有效路由外,还显示当前有效的连接
    
//组和用法
    netstat -anp //查看这个系统目前网络状况
    netstat -anp | grep 22 //查看端口22使用情况

1.12 软件安装
1.12.1 rpm 软件包管理器
// rpm 查询,卸载,安装
	
	// 1 rpm 查询命令
	-q query 查询
	-a all 所有
	-i info 信息
	-l list 显示所有相关文件
	-f file 文件, 显示文件对应 rpm 包
// 常用查询
	// 查询已安装rpm列表
	rpm -qa | grep XXX
	rpm -qa | less
	// 查询软件包信息
	rpm -qi 软件全包名
	// 查看rpm包文件安装到哪
	rpm -ql 软件全包名
	// 查看指定文件归属哪个软件包
	rpm -qf 文件的全路径       
        
	// 2 rpm包 卸载
	rpm -e 软件包名称 erase 清除 卸载rpm软件包
	rpm -e --nodeps 软件包名称 Don’t check dependencies 卸载前 跳过 依赖检查
        
	// 3 rpm包 安装
	rpm -ivh rpm包的全路径 安装 rpm 包
		
        // 参数
        -i install 安装
		-v verbose 打印提示信息
		-h hase 显示安装进度
        
        
1.12.2 yum概念
// Yellow dog Updater, Modified )本质上 也是一个软件包管理器
// 基于 RPM 包管理,能够从指定的服务器 自动下载、 自动安装、 自动处理依赖性关系
1.12.3 yum 常用命令
yum list | grep 需要的软件名 // yum list显示所有已经安装和可以安装的程序包
yum -y install 需要的软件包  //下载安装
yum -y remove 需要卸载的软件包 //卸载
yum repolist //列出设定yum源信息
yum clean all //清除yum缓存信息
1.12.4 httpd 软件
// 安装
yum -y install httpd

// 启动
service httpd start
    
// linux 防火墙禁止他人访问自己80端口 关闭防火墙
systemctl stop firewalld     

// 测试
http://192.168.80.100:80

1.13 安装常用软件
1.13.1 JDK
// 1 root 用户下查看是否安装 openjdk 有则卸载
rpm -qa | grep java	
    
	// 1.1 如有openjdk 卸载
	rpm -e --nodeps 查询结果中的包
    
// 2 安装 jdk
	// 2.1 切换到root用户并进入usr目录: cd /usr 
    // 2.2 在usr目录下创建java文件夹: mkdir java
    // 2.3 上传jdk.tar.gz 到 java 目录下
    // 2.4 进入 java文件夹下修改压缩包权限 chmod 755 xxx.gz
    // 2.5 解压到当前文件夹 tar -zxvf xxx.gz
    // 2.6 配置环境变量 vi /etc/profile
    export JAVA_HOME=/usr/java/jdk1.8.0_231/	
    export       CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
	export PATH=$PATH:${JAVA_HOME}/bin
        
	// 2.7 重写编译环境变量 source /etc/profile
	// 2.8 测试 java -version

1.13.2 tomcat
// 1 创建安装目录 mkdir /usr/tomcat
// 2 导入tomcat 压缩包并赋予权限 chmod 755 apache-tomcat-7.0.57.tar.gz
// 3 解压 tomcat tar -zxvf apache-tomcat-7.0.57.tar.gz 
// 4 tomcat 进入 bin目录下 cd /usr/apache-tomcat-7.0.57/bin/
// 5 启动 tomcat web 服务器 ./startup.sh 
// 6 访问 tomcat web 服务器 http://192.168.80.100:8080/
// 7 关闭 tomcat ./shutdown.sh
// 查看tomcat 启动日志
tail -200f /usr/tomcat/apache-tomcat-7.0.57/logs/catalina.out
// 启动tomcat 并查看启动日志
./startup.sh && tail -200f ../logs/catalina.out    
1.13.3 mysql
// 1 查看系统自带mysql rpm -qa | grep mysql
// 2 卸载自带mysql rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64
// 3 查看yum源 ll /etc/yum.repos.d/
// 4 安装 wget yum install wget
// 5 下载 MySQL yum源头
wget -P /usr/software http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
// 6 安装rpm 文件 rpm -ivh mysql-community-release-el6-5.noarch.rpm 
// 7 检查yum源 ll /etc/yum.repos.d/
// 8 安装mysql yum -y install mysql-community-server
// 9 测试是否安装成功 rpm -qa | grep mysql
// 10 启动mysql service mysqld start
	// 10.1 
	如果出现:serivce: command not found
	安装service
	yum install initscripts
	// 查看mysql 状态 service mysqld status
// 11 设置密码 /usr/bin/mysqladmin -u root password ‘123‘
// 12 登录mysql mysql -uroot -p123               
// 13 解决中文乱码 设置字符编码 
	// 13.1 查看编码集 show variables like ‘character_set_%‘; 
	// 13.2 情况 mysql 配置文件  >/etc/my.cnf
	// 13.3 修改mysql 编码集 vi /etc/my.cnf
	[client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    [mysqld]
    character-set-server=utf8   
// 14 重启mysql 服务 service mysqld restart
// 15 再次查看编码集 show variables like ‘character_set_%‘;
// 16 客户端远程连接mysql 报错 mysql中配置
	// 16.1 授权 grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘123‘ with grant option;  
	// 16.2 刷新权限 flush privileges;        
	        

1.14 Linux 大数据配置
1.14.1 克隆2台机器
// 1 centos右键管理-克隆 -> 完整克隆 -> 名字 7-2/3
// 2 配置克隆后机器 vi /etc/sysconfig/network-scripts/ifcfg-ens33
	// 2.1 ip 修改每一台都不一样
	IPADDR=192.168.80.102(101)
// 3 重启网卡服务器 systemctl restart network
// 4 检查ip地址是否改变 ip addr 
// 5 测试网络 ping www.baidu.com
// 6 查看主机名称 hostnamectl
// 7 更改主机名 hostnamectl set-hostname centos7-2
// 8 重启  reboot        
	
1.14.2 关闭三台虚拟防火墙
// 1 查看防火墙状态 Active: inactive(dead) 关闭
systemctl status firewalld
// 2 设置防火墙停用状态
systemctl stop firewalld
// 3 设置防火墙开机自动关闭
systemctl disable firewalld
    
1.14.3 三台机器关闭 selinux
// selinux 是Linux内核安全增强型,安全子系统,不关闭会导致SSH连接异常

// 1 修改文件 vi /etc/selinux/config
	# ...enforcing //注释enforcing
	SELINUX=disabled //添加disabled

// 2 reboot 重启生效        
1.14.4 三台机器免密登录
//ssh协议 安全外壳协议 

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全 性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

SSH 两种级别安全验证

// 1 第一种级别(基于口令的安全验证)
只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接
的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的
攻击。
    
// 2 第二种级别(基于密匙的安全验证)
需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到
SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。    

ssh 基于密码远程登录

// ssh ip
// 用户名密码

// 配置主机名登录 在三台机器分别配置,每台配置三个
vi /etc/hosts
    
192.168.80.100 centos7-1
192.168.80.101 centos7-2  
192.168.80.102 centos7-3  
    
// ssh centos71 主机名登录    

ssh 基于密钥实现免密登录

// 实现密钥免密登录原理 
centos7-3 节点和 centos7-2节点各生出一对密钥再将公钥传递给 centos7-1,centos7-1再生成自己的密钥和公钥,再将3份认证公钥分发给7-2和7-3
    
// 实现前提是配置hostname 和 IP 映射
// 1 在三台机器上生成公钥和私钥 
ssh-keygen -t rsa
	//生成再 ~/.ssh 下
// 2 在7-2和7-3 的公钥拷贝到7-1 成功后多一个authorized_keys 文件 该命令也要在7-1执行
ssh-copy-id centos7-1
// 3 将7-1 的公钥发给7-2,7-3
scp authorized_keys centos7-2:$PWD
scp authorized_keys centos7-3:$PWD  
// 4 配置成功后 ssh centos7-2 免密登录    
1.14.5 三台机器时钟同步
// 原理 与外部时间同步并定时刷新

// 1 xshell 左下角选择全部会话 date 查看本机当前时间

// 2 全部会话 设置本机当前时间 date -s "2018-08-17 20:08:09"

// 3 anzhuang ntp 插件 yum -y install ntpdate

// 4 与时钟服务器同步时间 ntpdate us.pool.ntp.org

// 5 编辑定时任务 crontab -e

// 6 内容编写 1分钟执行依次
*/1 * * * * /usr/sbin/ntpdate us.pool.ntp.org;

// Crontab 说明
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR
sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

实例1:每1分钟执行一次command
命令:* * * * * command
实例2:每小时的第3和第15分钟执行
命令:3,15 * * * * command
实例3:在上午8点到11点的第3和第15分钟执行
命令:3,15 8-11 * * * command
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
命令:3,15 8-11 */2 * * command
实例5:每个星期一的上午8点到11点的第3和第15分钟执行
命令:3,15 8-11 * * 1 command
    
Crantab在线生成
https://cron.qqe2.com/
    

Linux - 基础及常见命令

上一篇:【WEB攻防】WordPress <= 4.6 命令执行漏洞(PHPMailer)(CVE-2016-10033) 安鸾靶场详细复现 -WordPress1


下一篇:goreplay~http输出队列