Linux系统介绍

# 概述/由来
作者(林纳斯·托瓦兹)在1991年搞出来的.

# 吉祥物
企鹅

# 特点
开源, 免费, 安全, 稳定

# Linux的发行版
发行版 = Linux内核(林纳斯团队维护) + 系统库 + 系统软件

#常用的发行版
Ubantu: 乌班图, 比较适合小白, 界面功能比较强大.
RedHat: IBM公司的产品, 商业版, 功能强大.
CentOS: RedHat的"阉割版", 能满足绝大多数的需求.  
国内: 中标麒麟, 红旗

Linux的目录介绍

# Linux的目录介绍
Linux的目录是1个 树形结构, 有且只能有1个根目录, 用 / 表示. 
例如:  /root

# Linux根目录下的常用的: 文件夹(目录)
/root        超级管理员root账号所在目录.
/home        普通用户账号信息, 存储在这里.
/bin        放的是一些可执行文件(脚本, 命令)
/sbin        放的也是一些可执行文件(脚本, 命令), 操作多个的.
/etc        放配置文件的. 

麒麟系统 重启MySQL 麒麟系统重启网络服务_麒麟系统 重启MySQL

Linux命令格式介绍

# Linux的命令格式
command [options] [parameter]

# 格式解释
command		表示Linux的命令, 必须写.
options		可选项, 表示命令对应的选项.
parameter	可选项, 表示参数. 

# 例如:
ls -l /		# ls是命令, -l是选项, /是参数, 表示查看: 根目录下所有内容, 以行的方式查看.

Linux的常用命令

# ls命令, 来源于单词: list, 用于查看指定目录下所有的内容(子级)
# 格式: ls [-a -l -h] [指定路径]

ls		# 表示查看当前目录下的内容.
ls /	# 查看根目录的内容(子级)
ls -a	# 显示当前目录下所有文件, 包括隐藏的.
ls -l	# 以行的方式展示当前目录下的内容, 扩展写法: ll
ls -h	# 没有任何效果, 一般结合 ls -lh一起使用,
ls -lh	# 以行, 且人性化的方式展示数据. 
ls -alh / # 查看根目录下, 所有的子级, 以行, 且人性化的方式展示所有(包括隐藏)内容.

# pwd命令, 查看当前目录, 来源于单词: print work directory
pwd

# cd命令, 来源于 change directory, 改变目录的意思.
cd [Linux目录]
cd ~		# 回家, root账号的家是/root, 其它用户的家是 /home, ~可以省略不写
cd			# 效果同上.

cd ..		# 返回上一级
cd ../../	# 返回上上一级
./			# 代表当前路径
cd -		# 在最近操作过的两个目录之间做 切换. 

# 绝对路径和相对路径介绍
绝对路径: 固定的, 写死的路径, 以 /(根目录) 开头.
相对路径: 一般是相对于 ./(当前路径)来讲的.

# mkdir命令, 来源于: make directory, 制作目录, 创建文件夹.
# 格式: mkdir [-p] [linux路径]
mkdir aa		# 在当前路径下, 创建aa目录
mkdir /aa		# 在根目录下创建aa文件夹
mkdir aa/bb/cc	# 假设aa,bb,cc都不存在, 则: 报错, mkdir只能创建单级目录.
				# aa,bb都存在, 我们就把cc创建出来.
mkdir -p /aa/bb/cc	# 创建多级目录, aa,bb,cc都不存在也可以.

# touch, 创建文件的.
touch 1.txt					# 创建单个文件
touch 2.txt 3.avi 4.mp3		# 创建多个文件

cat 文件名					  # 查看文件中所有内容.
more 文件名				  # 翻页查看

# cp, 来源于: copy, 表示拷贝, 相当于: 赋值.
# 格式; cp [-r] 路径1 路径2
cp -r aa/  /bb		# 把aa文件夹及其子级 拷贝到 bb文件夹中. -r表示递归(recursive)


# mv, 来源于: move, 表示剪切.
# 格式: mv [-r] 路径1 路径2
mv 1.txt /aa/1.txt

# rm, 来源于: remove, 表示删除. 
# 格式: rm [-r -f] 目标文件或者目录	recursive(递归), force(强制)
rm -rf 要删除的目录或者文件

# which命令, 用于查找 Linux命令所在的目录的. 
# 例如
which pwd
which ls

# find命令, 用于根据条件进行查找指定内容的.
# 格式: find Linux路径 -name '根据文件名查找'
find / -name '*centos*'

# grep 筛选命令
# 格式: grep 路径 -name '筛选内容'
# 格式: grep 路径 -size +-n[KMG]
grep / -name '*centos*'
grep / -size +100M

# | 管道命令, 把前边的结果, 当做后边的数据源来处理.
cat 1.txt | grep 'itheima'

# 格式: find Linux路径 -size +-n[KMG]
find / -size +100M

# echo命令, 类似于Python的print(), 输出结果到控制台.
echo 'hello world'		# 引号可以不写, 建议写上.

# ``反引号, 可以用于包裹Linux命令.
echo 'pwd'		# pwd
echo pwd		# pwd
echo `pwd`		# pwd命令的执行结果.

# 重定向
>	# 表示覆盖
>>	# 表示追加

# 查看文件末尾的内容.
tail -100f 文件路径		# 动态监控文件的末尾的100行数据, 实际开发中, 一般用于查看日志. 
tail -10 文件路径		# 查看文件最后10行, 不是动态查看.

# 扩展: head, 查看文件前n行.
head -n 数字 文件路径

vi编辑命令

# 命令模式(vim 文件路径就会进入到该模式)
i			# 当前位置插入
o			# 向下插入一行
dd			# 删除当前行
ndd			# 快速向下删除n行
yy			# 复制当前行
nyy			# 快速向下复制n行
p			# 粘贴
gg			# 回到文件顶部
G			# 回到文件末尾
/			# 查找
u			# 撤销
ctrl + r	# 反撤销.
esc			# 回到命令模式

# 输入模式
正常写即可, 就是编辑模式

# 底线模式
:q		# 退出不保存
:q!		# 强制退出, 不保存
:wq		# 保存并退出
:wq!	# 强制保存并退出
:set nu # 设置行号
:set nonu # 取消行号
:数字	   # 跳到指定的行
:noh	# 取消高亮

麒麟系统 重启MySQL 麒麟系统重启网络服务_麒麟系统 重启MySQL_02

创建普通用户

# 创建普通用户
useradd -m 用户名		# -m表示引用root账号的配置信息
passwd 用户名			# 设置密码

# 切换用户
su 用户名		# 细节: root可以直接切其它用户, 无需密码    其它用户切root,要(root的)密码

# 普通用户借调权限
sudo 正常写Linux命令		# 细节: 需要通过root账户给该账号先配置, sudo认证.

# 配置sudo认证
vim /etc/sudoers		# 细节: 用root账号配置

用户组相关

用户组

# 创建用户组
groupadd [-g 组的编号] 用户组名

# 删除用户组
groupdel 用户组名	# 如果组是跟随账号同步创建的, 则删除账号的时候会同步删除该组.

# 查看所有的用户组
getent group		# 组格式: zhangsan:x:1000:   组名:密码(无,x):组的编号(id)

用户

# 创建普通用户
useradd -m -g 组的编号 用户名		# -m表示引用root账号的配置信息, -g是指定该用户所在的组
							     # 如果不指定分组, 则会创建1个和该账号名一模一样的组.
passwd 用户名					   # 设置密码

# 删除用户
userdel -r 用户名			# -r 表示把 /home目录下的 (该账号的)文件夹也同步删除掉.

# 查看用户信息
id 用户名		

# 例如: wangwu:x:1002:2000::/home/wangwu:/bin/bash
# 解释: 用户名:密码(无,x):用户id:组id:描述信息(空):该账号的家目录:默认使用的shell解析器


# 修改用户的组
usermod -aG 组信息 用户名		# append group

用户权限相关

# 修改权限, 格式:  chmod [-R] 权限 要修改权限的文件或者目录
chmod u=rx, g=wx, o=r 1.txt
chmod +x 1.txt
chmod 655 1.txt
chmod -R 777 aa		# aa是目录

# 修改属主, 属组.
chown [-R] [用户][:][用户组]

chown zhangsan hello.txt		# 改变所属 用户
chown :itheima hello.txt		# 改变所属 用户组
chown lisi:itcast hello.txt		# 改变属主, 属组

# 总结
chmod 777 文件或者目录的路径

麒麟系统 重启MySQL 麒麟系统重启网络服务_麒麟系统 重启MySQL_03

Linux的常见快捷键

# 终止执行
ctrl + c
# 登出, 退出.
ctrl + d
# 查看历史命令
history
# 重新执行某个历史命令
!命令的编号
# 定位到行首
ctrl + a
# 定位到行尾
ctrl + e
# 往前1个单词
ctrl + ←
# 往后1个单词
ctrl + →
# 清屏
clear 或者 ctrl + 字母L

Linux系统安装软件的方式

# 方式1: yum方式, 全称: Yellow dog Updater, Modified
特点:
	1. 会自动联网下载包.
	2. 会自动解决包之间的依赖关系.
	3. 前提: 你的宿主机 和 虚拟机都要联网.
格式:
	yum [-y] install | remove | search 安装包的名字
例如:
	yum -y install wget
	yum -y remove wget
	yum -y search wget
	
# 扩展: 理解即可. 
# 方式2: rpm方式, 会自动下载包, 但是需要手动解决依赖.   
# 全称: RedHat Packet Management(小红帽的包管理器)
# 例如: 安装MySQL软件.

# 方式3: 上传, 解压, 修改配置文件即可.
# 例如: 安装JDK.

systemctl-软件关闭开启相关命令

# 格式:
systemctl [start|stop|restart|status|disable|enable] 服务名

# 例如:
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

# 细节: 我的虚拟机刚才还好好的, 也没做啥, IP咋就变成 127.0.0.1了?
# 答案: 主网络服务介入了.  只要禁用主网络服务, 然后重启网络即可.
systemctl stop NetworkManager		# 关闭主网络服务
systemctl disable NetworkManager	# 关闭主网络服务
systemctl restart network			# 重启(副)网络服务
ifconfig							# 查看ip

软连接

# 软连接, 类似于 windows中的 快捷方式.
# 格式: ln -s 要被链接的文件或者目录路径 软连接名
# 例如:
ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 ip

# 硬链接, 相当于备份文件. 提高容错率的.
# 格式: 同上, 没有-s, 即: ln 要被链接的文件或者目录路径 硬连接名
ln 1.txt 2.txt		# 则2.txt的内容, 会随着1.txt的改变而同步改变.

ip地址相关

# 如何查看IP
ifconfig

# 查看主机名
hostname

# 修改主机名
vim /etc/hostname

# 修改ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33

# 配置域名映射, 即: 以后就可以直接写英文了, 它会自动关联的IP.
windons系统: C:\Windows\System32\drivers\etc\hosts
Linux系统:   /etc/hosts

# 配置映射的代码如下
192.168.88.161 node1.itcast.cn node1

# 细节, 配置后: 重启电脑有效.

网络相关

# ping命令, 测试网络连接的.
ping [-c n] 要测试的主机域名

# wget命令, 可以根据URL下载其对应的资源
wget http连接地址

# curl命令, 以模拟浏览器,向域名发送请求, 获取数据. 

# 端口号相关命令,  端口号: 程序在设备上的唯一标识.
范围: 0 ~ 65535, 其中 0 ~ 1023不要用, 已经被占用或者用作保留端口.

netstat -anp | grep 要查看的具体端口号.	  # all network port

# 例如:
netstat -anp | grep 3306

进程相关

# 进程: 可执行程序, 文件. 

# 格式:
ps -ef				  # 查看本机所有的进程.
ps -ef | grep 进程名	# 查看本机指定的进程
kill -9 进程的自身id	   # 强制关闭某些进程.

环境变量的作用

# Linux系统的环境变量
记录这Linux系统运行时的一些核心信息.

# 如何查看Linux的变量
env		# 来源于: environment 单词

# 如何查看环境变量
env | grep PATH
或者 cat /etc/profile

# 如何设置环境变量
export 变量名=变量值 	# 临时设置
vim /etc/profile	# 永久设置, 细节: 设置后记得 source /etc/profile刷新下, 立即生效.

# 为啥要配置环境变量? 目的:
配置好的环境变量, 在任意的路径下都能使用, 
例如:  /usr/bin, /usr/sbin下的cd, ls, ifconfig 等命令在任意的路径下都能使用.

# 如何定义Linux的变量?
变量名=变量值
# 例如: name='zhangsan'

# 如何打印变量值
echo ${变量名}		# 细节: 如果变量名是单独用的, 可以省略大括号.

上传和下载

# 1. 需要先安装插件.
yum -y install lrzsz		
# 2. 上传
rz	然后选择要上传的文件
或者 直接拖拽, 注意乱码问题.

# 3. 下载
sz 要下载的文件名(路径)

压缩和解压缩

# 掌握 tarball 命令
# 格式: tar [-c -v -x -f -z -C] 参数1 参数2...
# 格式解释:
	-c 	# create, 创建, 压缩
	-v  # verbose, 显示(压缩/解压)过程
	-x	# 解压缩
	-z	# 打成 *.tar.gz包, 不过不写就是 *.tar包
	-f	# file, 文件的意思.
	-C	# 指定解压位置, 即: 解压到哪里.
	
# 例如: 把1.txt, 2.txt, 3.txt打成压缩包
cd /root/mytest
tar -cvf my1.tar 1.txt 2.txt 3.txt			# tar包
tar -zcvf my2.tar.gz 1.txt 2.txt 3.txt		# tar.gz包

# 解压缩
tar -xvf my1.tar					# tar包, 解压到当前位置.
tar -zxvf my2.tar.gz -C /root		# tar.gz, 解压到指定目录, 这里是 /root