目录
Linux
1. Linux 简介
- Bell 实验室 Ken Thompson 创造了 C 语言,并根据 Multics 项目开发出 Unix。Linux 是基于 Unix 的开源免费的多用户操作系统,由 Linus Torvalds 开发和维护其核心代码。
- 内核版本:在 Linus Torvalds 领导下的内核小组开发维护的系统内核的版本号,主要处理与 CPU 和内存的交互。
- 发行版本:一些个人/组织/公司在内核版基础上进行二次开发而重新发行的版本号。主流的发行版本如下:
- CentOS 是对 redhat 的完整复制,前者免费但是不提供技术支持。
2. VMware 虚拟机
a. 安装虚拟机
- 安装成功后,会多出二个网卡:VMNet1 和 VMNet8。
b. 备份与还原
c. 基础操作
ctrl + alt 跳出虚拟机
alt + 回车 跳过自动检查映射文件
ifconfig 获取 IP地址
CMD: ping IP地址 测试链接虚拟机
3. SecureCRT 远程链接工具
- 连接 Linux 的 Windows 客户端工具有很多,企业中常用的有 secureCRT、Putty、xshell、SSH Secure 等。
a. 基础操作
左击选中,右击粘贴
ctrl + l 或 clear 清屏
ctrl+c 强行终止程序执行
b. pwd 查询所在路径
/root 或 / 表示根目录
~ 表示当前用户目录
l 开头是 link,即快捷方式
d 开头是文件
4. Linux 目录结构
- root 目录:超级管理员所在的目录,用 ~ 表示
- home 目录:普通用户所在的目录
- usr 目录:安装用户文件所在的目录
- etc 目录:Linux 系统管理和配置文件所在的目录
5. 文件夹(目录)操作命令
a. ls 文件结构
ll -a
-l 以详细形式查询当前目录下所有文件和目录,不包括隐藏文件和目录
-a 以精简形式查询当前目录下所有文件和目录,包括隐藏文件和目录
ls 以精简形式查询当前目录下的内容
ls -l 或 ll 以详细形式查询当前目录下的内容,d表示目录,-表示文件;此命令可以简写为ll
ls -a 以精简形式查询当前目录下的隐藏内容
ls -la 或 ll -a 以详细形式查询当前目录下的隐藏内容,la和al都可
b. cd 跳转
/ 跳转到根目录路径
cd 绝对路径或相对路径
cd ~ 或 cd 当前用户目录
cd / 根目录
cd - 上一次访问的目录
cd .. 上一级目录
c. mkdir 创建
mkdir -p
--help 获取帮助
-p 文件夹名称 一次性创建多级目录,如果目录存在不会覆盖
mkdir aaa 在当前目录下创建aaa目录,相对路径
mkdir ./bbb 在当前目录下创建bbb目录,相对路径
mkdir /ccc 在根目录下创建ccc目录,绝对路径
mkdir /ddd/eee 在根目录下创建ddd目录和eee子目录
d. find 搜索
find 指定路径 -name '关键字'
find / -name 'b' 查询根目录下(包括子目录),名为 b 的目录和文件
find / -name 'b*' 查询根目录下(包括子目录),名以 b 开头的目录和文件
find / -name '*.cfg' 查询根目录下(包括子目录),扩展名是 cfg 的目录和文件
e. mv 修改
mv 原目录 新目录 修改(伪改名)
mv aaa aaaa 将当前目录下的aaa目录修改为aaaa
mv ./aa ./aaa 同上,./代表相对路径,可以省略
f. mv 剪切
mv 原目录位置 新目录的位置 剪切(支持改名)
mv ./aaa /aa 将当前目录下的aaa目录,移动到根目录下,且修改名为aa(在根目录时/可以省略)
mv aaa usr 将当前目录下的aaa目录,移动到已存在的目录usr目录下,在/usr目录下名字为aaa
mv aaa usr/aa 将当前目录下的aaa目录,移动到已存在的目录usr目录下,且修改名为aa
g. cp 复制
cp -r 目录 目录的新位置 复制(支持改名)
-r 递归复制,将指定目录下的文件与子目录一并处理
cp -r /aaa /usr 将/目录下的aaa目录复制到已存在的目录usr目录下,在/usr目录下名字为aaa
cp -r /aaa /usr/aaaa 将/目录下的aaa目录复制到已存在的目录usr目录下,且修改名为aaaa
h. rmdir 删除
- 只能删除空文件夹,也就是说只能逐个删除,所以很少用 rmdir。
-p 删除目录及其父目录
rmdir bbb/ccc 删除bbb目录下ccc目录
rmdir -p bbb/ccc 删除bbb目录和ccc子目录
6. 文件操作命令
a. touch 创建
touch a.java 在当前目录中创建a.java文件
touch b.txt 在当前目录中创建b.txt文件
touch c.xml 在当前目录中创建c.xml文件
b. cat more less head tail 查看
cat a.java 查看a.java文件的最后一页内容
more a.java 从第一页开始,按回车键换行,按空格健翻页,q退出
less a.java 从第一页开始,按回车键换行,按空格健翻页,支持使用PgUp和PgDn翻页,q退出
head a.java 查看a.java文件的前10行内容
tail a.java 查看a.java文件的后10行内容
head -n 7 a.java 查看a.java文件的前7行内容
tail -n 7 a.java 查看a.java文件的后7行内容
技巧
输文件名称时,按tab会自动补全
如果查看页面数据:cat
如果查看多页数据:less
回车:下一行
空格:下一页
PGUP:上一页
PGDN:下一页
q退出
查看头部几行:head
查看尾部几行:tail
c. rm 删除
rm -rf 目录或文件
-r 递归处理,将指定目录下的所有文件及子目录一并处理,它会询问你,y表示是删除,n表示不删除
-f 强制删除,它不会再询问你
rm -rf a.java 强行式删除当前目录下的a.java文件
rm -rf ./a* 强行式删除当前目录下以a开头的所有文件
rm -rf / 删库,慎重使用
d. Vi Vim 编辑
- Linux 下的 Vi 是一种文字编辑器,后来的升级版本是 Vim,一般使用 Vim。 Vi 分为三种模式:命令行、插入、底行模式。
简单使用
vim a.java
i 切换到插入模式
esc 切换到命令行模式
:wq! 保存并退出 | :q! 直接退出
切换到插入模式
i 在当前位置前插入
I 在当前行首插入
a 在当前位置后插入
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行
切换到命令行模式
按Esc键
yy 复制当前行
p 粘贴
dd 删除当前行
G 到文件的最后一行
gg 到文件的第一行
切换到底行模式
按 :(冒号)
:wq 保存退出
:q 退出vi(文件无修改的情况下)
:q! 不保存强制退出.
非正常退出,无法编辑
rm -rf 隐藏临时文件夹(如.a.java.swp)
7. 文件压缩命令
- Windows 打包和压缩是一起的,而 Linux 打包和压缩是分开的。
Windows 的压缩文件的扩展名:.zip或.rar
Linux 中的打包文件扩展名:.tar
Linux 中的压缩文件扩展名:.gz
Linux 中打包压缩的文件扩展名:.tar.gz
a. tar -zcvf 将文件打成压缩包
语法
tar -zcvf 打包压缩后的文件名 要打包的文件 打包并压缩
tar -cvf ***.tar a.java b.java c.xml d.txt 打包
tar -zcvf ***.tar.gz a.java b.java c.xml d.txt 打包并压缩
tar -zcvf haha.tar.gz ./* 将当前目录下的所有文件打包压缩成haha.tar.gz文件
参数解释
-z 调用gzip压缩命令进行压缩
-c 打包文件
-v 显示运行过程
-f 指定文件名
支持通配符*的使用
tar -cvf ***.tar *.java *.java *.xml *.txt 打包当前目录下指定类型的所有文件
rm -rf ./*.java 强制式删除当前目录下所有扩展名为java的文件
b. tar -zxvf 解压缩包获得文件
语法
tar -zxvf 压缩文件 解压后的文件放在当前目录中
tar -zxvf 压缩文件 –C指定目录 解压后的文件放入指定目录中,注意-C是大写字母C,后面不用接空格符
tar -xvf haha.tar.gz -C/usr/local 解压haha.tar.gz这个压缩文件,里面的文件释放到/usr/local目录下
tar -xvf haha.tar.gz 解压haha.tar.gz这个压缩文件,里面的文件释放到当前目录下
参数解释
-z 自动识别压缩或解压
-x 取出文件中的内容
-v 输出文件清单
-f 文件名由命令台设置
8. 文件权限命令
- Linux 中对每个目录和文件都做了规定,只能由满足条件的用户才能操作,这个规定叫权限。
语法
chmod [参数] [<权限范围><符号><权限代号>]
chmod -R 777
参数解释
-R 递归处理,将指定目录下的所有文件及子目录一并处理
权限范围
u:User,即文件或目录的拥有者。
g:Group,即文件或目录的所属群组。
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
a:All,即全部的用户,包含拥有者,所属群组以及其他用户。
符号解释
+ 添加权限
- 取消权限
= 重置权限
权限代号
r:读取权限,数字代号为"4"
w:写入权限,数字代号为"2"
x:执行或切换权限,数字代号为"1"
-:不具任何权限,数字代号为"0"
命令
chmod u+x 1.txt 给1.txt的拥有者添加执行权限,这种写法稍微有点麻烦,开发中一般使用数字代号
chmod 755 1.txt 给1.txt的拥有者设置读写执行权限,给所属组添加读和执行权限,给其他用户添加读和执行权限
chmod -R 777 a.txt 给所有人添加对此文件操作的所有权限
9. 其他命令
a. pwd 显示工作目录
语法
pwd
b. ps -ef 查看进程
语法
ps -au 显示客户端打开的程序进程
ps -ef 当前用户打开的程序进程
参数解释
-a 显示所有用户通过终端启动的所有进程
-A 显示所有进程
-u 显示所有用户通过终端启动的所有进程详细信息
-x 显示所有用户通过终端和非终端启动的所有进程详细信息
-e 此参数的效果和指定"A"参数相同,显示所有程序
-f 显示UID,PPID,C与STIME栏位
- 主要是为了看 PID(Processing IDentification)或 PPID(Parent PID)
c. kill pid 杀死进程
- 中括号 [ ] 包括的无法被删除
语法
kill 进程号 温柔杀,正常退出
kill -9 进程号 暴力杀,直接退出
d. grep 文本搜索
语法
grep [参数] 搜索字符串 文件名
参数解释
默认 大小写敏感
-i 搜索时不区分大小写
-n 显示匹配行及行号
-v 显示不匹配行(reverse)
-vn 显示不匹配行及行号
命令
grep as 123.txt 在123.txt文件中搜索as字符串,大小写敏感,显示行
grep -n as 123.txt 在123.txt文件中搜索as字符串,大小写敏感,显示行及行号
grep -v as 123.txt 在123.txt文件中搜索as字符串,大小写敏感,显示没搜索到行
grep -i as 123.txt 在123.txt文件中搜索as字符串,大小写不敏感,显示行
grep -ni "Q q" 123.txt 在123.txt文件中搜索Q q字符串,大小写不敏感,显示行及行号
e. | 管道
语法
xx | xx 一个命令的输出用作另一个命令的输入
命令
ls --help | more 分页查询帮助信息
ps -au | grep system 在ps -au的结果中,搜索字符串system
f. poweroff 关机
语法
poweroff 需要手动开启虚拟机和登录,并重新连接
g. reboot 重启
语法
reboot 可以正常连接,刷新连接即可,不需要远程登录
10. Linux 网络
a. 网络(卡)服务
- 查看当前网络的状态,并启动和停止网络服务。
查看ip
ifconfig :CentOS6版本
ip addr :CentOS7版本
修改网卡ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33
概要信息如下
DEVICE=ens33 #网卡名称
TYPE=Ethernet #网卡类型 以太网
ONBOOT=yes #是否开机就使用此网卡 在我们安装的时候都已经配置好
BOOTPROTO=dhcp #启动网卡时指定获取IP地址的方式
常用取值:dhcp (自动获取ip地址,网关,子网掩码等信息无需设置)
常用取值:static (静态ip,如需要访问网络,需要自己设置ip地址等信息)
其他取值:none (不指定)
IPADDR=192.168.200.133 #ip地址
GATEWAY=192.168.200.2 #网关
NETMASK=255.255.255.0 #子网掩码
DNS1=8.8.8.8 # Google提供的公用DNS
重启网卡服务
systemctl status network 查看指定服务的状态
systemctl stop network 停止指定服务
systemctl start network 启动指定服务
systemctl restart network 重启指定服务
b. 防火墙服务
- 防火墙类似于一个安全卫士管家,它能对你访问它人电脑,它人访问你的电脑,进行拦截并处理,有的阻止,有的放行,有的转发。
① 防火墙设置
开启防火墙
systemctl start firewalld
重启防火墙
systemctl restart firewalld
关闭防火墙
systemctl stop firewalld
设置开机启动
systemctl enable firewalld
停止并关闭开机启动
systemctl disable firewalld
查看防火墙状态
systemctl status firewalld 或者 firewall-cmd --state
查看防火墙开机时是否启动
systemctl list-unit-files | grep firewalld 类似于Windows的services.msc
② 端口设置
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent
更新防火墙规则
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=80/tcp 指定端口防火墙状态
firewall-cmd --zone=public --list-ports 全部端口防火墙状态
删除
firewall-cmd --zone=public --remove-port=80/tcp --permanent
常用端口
8080 tomcat
80 http协议
443 https协议
22 ssh远程连接
3306 mysql
6379 redis