Linux
一、配置虚拟机
企业级应用:RHEL/CentOS
桌面平台:Ubuntu
开源服务器:CentOS
1.配置网络
路径可以通过TAB键自动补齐
vi /etc/sysconfig/network-scripts/ifcfg-ens33
2.克隆虚拟机
链接克隆:
- 当前节点文件夹只存储差异性数据
- 相同数据存放在原始节点上
- 优点:节省硬盘空间
- 缺点:耦合性大
完整克隆:
- 就是基于原始节点完全拷贝到新节点的文件夹中
- 优点:耦合性抵
- 缺点:硬盘空间使用大
- 推荐使用完整克隆
3.修改配置与关机
修改主机名
hostname 主机名 本次有效,重启无效
vi /etc/hostname 修改完成后需要重启生效。
修改主机域名
vi /etc/hosts
将来我们需要把所有的虚拟机都配置hosts文件
192.168.163.101 node01
192.168.163.102 node02
关闭虚拟机
shutdown -h now 立刻关机
4.日期与时间
查看时区
ll /etc/localtime
/etc/localtime -> …/usr/share/zoneinfo/America/Los_Angeles
设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date
查看当前系统时间
cal 查看日历
cal 2020
修改时间
date -s 11:11:11
date -s 2019-11-11
date -s ‘2019-11-11 11:11:11’
5.日期自动同步
首先安装时间同步的服务
yum -y install ntp
自动同步网络时间中心
ntpdate cn.ntp.org.cn
二、Linux的文件系统
-
/ Linux文件系统的根目录
-
/bin 软连接 /usr/bin 普通用户和管理员都能运行的文件
-
/boot 引导分区
-
/dev /media /mnt 第三方挂载目录
-
/etc Linux操作系统配置文件所在地
-
/home 普通用户家目录
-
/lib 软连接 /usr/lib Linux操作系统所需的系统资源
/lib64 软连接 /usr/lib64
-
/opt 类似Windows系统的非系统盘
-
/proc Linux操作系统内存相关的文件
-
/root 超级管理员root的家
-
/run Linux操作系统进程相关的文件
-
/sbin 软连接 /usr/sbin 管理员才能运行的命令文件
-
/srv 类似Windows系统的非系统盘
-
/sys Linux操作系统的相关文件
-
/tmp 临时目录,每次服务器重启会自动清空
-
/usr 类似Windows系统的系统盘
-
/var 动态数据文件 例如日志数据库文件
1.Linux的文件操作
cd:改变当前工作目录
cd -P 如果切换的目标目录是一个符号链接,则直接切换到符号链接指向的目标目录(不走软链接,走真实地址)
cd -L 如果切换的目标目录是一个符号链接,则直接切换到符号链接名所在的目录(走软链接,cd /xxx 默认就是 -L)
ls/ll:显示出指定目录下所有的文件,文件的类型如下:
-:普通文件
d:文件夹
l:软连接
mkdir:创建文件目录
mkdir -p 会自动创建文件父目录
touch:如果没有就创建一个文件,如果该文件已经存在,修改文件的三个时间,将三个时间改为当前时间
access 访问时间
modify 修改文件内容时间
change 修改文件元数据信息时间
rmdir:删除空文件夹,可以安全的删除文件目录
rm:删除当前⽬录中的⽂件或者是⼦⽬录
rm -rf 删除文件夹
cp:拷贝文件或者文件目录
cp 源文件 目标目录
cp -r 拷贝文件夹下所有的内容
mv:移动⽂件到指定⽬录
kill-9 暴⼒杀死 kill-15 温柔杀死
pwd:显示当前⽬录的全路径名称
uname:显示当前操作系统的基本信息
stat:修改查看⽂件状态
vi或者vim:打开⽂件
ping:测试与指定主机的连接状态
ln:[选项] 源文件 目标文件 建立链接 默认硬链接
-s :建立软链接文件。如果不加 “-s” 选项,则建立硬链接文件;
-f :强制创建。如果目标文件已经存在,则删除目标文件后再建立链接文件;
df -h: 分区信息
2.读取文件信息
cat
将整个文档加载到内存中,并进行一次性显示
除非后面使用管道,传递数据
tac
将整个文档加载到内存中,并进行一次性按行逆序显示
more less
分页查看文档内容
快捷键:
回车 下一行
空格 下一页
b 回退
q 退出
head
从文章开始读取N行
默认如果超过10行读取10行,否则读取现在行数
head -5 profile
tail
从文章末尾读取N行
head -3 profile | tail -1
利用管道只读取第N行
管道的作用就相当于把前面的结果以参数的方式传递给后面的命令
读取新增数据
ping www.baidu.com >>baidu
tail -F baidu
如果f:
它会监听指定inode的文件数据变化,但是当文件被删除后
即使创新创建,inode也会发生变化,于是监听失败
如果F
他会监听指定名字的文件,如果文件被删除后,重新创建
他会重新监听新文件的数据变化,监听不受影响
find
查找指定的文件
find 要查找的范围 -name 名字
find /etc -name profile
basename
剔除目录部分,只显示文件名
basename /etc/rc.d/rc.local
dirname
剔除非目录部分,只显示目录名
dirname /etc/rc.d/rc.local
3.VI和VIM编辑器
正常打开
vi profile
打开文件,并将光标置于第8行
vi +8 profile
打开最后一行
vi + profile
按n查找下一个,按N查找上一个
打开指定搜索单词的位置
vi +/if profile
三种模式
命令模式:每一个按键都有其具体的功能。
使用 Vim 编辑器打开文件时,默认处于命令模式。此模式下,可使用方向键(上、下、左、右键)或 k(上)j(下)h(左)l(右)移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。
G :跳转至文件末尾。
gg :跳转至文件第一行。
数字gg :跳转到指定行,例如: 2gg ,跳转到第 2 行。
^ :跳转至行首。
$ :跳转至行末。
w :跳到下个单词处。
数字w :跳转到指定个数的单词处。
yw :复制一个单词。
3yw :复制三个单词。
yy :复制一行。
3yy :复制三行。
p :粘贴复制内容。
6p :粘贴 6 次。
dw :删除一个单词。
3dw :删除三个单词。
dd :删除一行。
3dd :删除三行。
u :回退到上一步的操作。
Ctrl + r :回退 u 执行的操作。
. :重复上一步操作。
x :剪切当前光标处字符。
3x :剪切三个字符。
r :替换,然后输入一个字符替换,例如:r1,光标处字符会被替换为 1。
3r :替换三个字符。
kjhl :方向键,分别对应上下左右。
ZZ :保存并退出。
ZQ :不保存退出。
Ctrl + s :锁屏。
Ctrl + q :解锁。
编辑模式:输入什么就是什么。
底行模式:保存文件或对文件中的指定内容执行查找或替换等操作。
:set nu :打开行号。
:set nonu :关闭行号。
/要查找的内容 :搜索指定的字符串。
n :查找下一个。
N :查找上一个。
s/要查找的内容/替换为的内容/修饰符 :替换字符串。
/i :忽略大小写。
/g :替换当前行所有,不加 /g 只替换当前行的第一个。
3,8s/abc/lucky/g :替换指定行,不加 /g 只替换指定行的第一个。
%s/要查找的内容/替换为的内容/g :替换全文,不加 % 表示只替换光标所在行。
:w :保存。
:q :退出。
:wq :保存并退出。
q! :强制退出,不保存。
如果上次异常退出(比如文件正在编辑忽然断电或者直接把 Shell 窗口关闭了)会保留同名隐藏文件
o :只读模式打开文件。
e :读写模式打开文件。
r :通过 .swp 文件恢复文件内容。
d :删除 .swp 文件。
q :退出文件。
a :终止操作(也会退出文件)。
4.计算机间的数据传输
已知主机列表文件叫 known_hosts 在 /root/.ssh/known_hosts 。
Window - Linux
lrzsz
需要手动安装:yum -y install lrzsz
rz:将文件从window上传到Linux
sz 文件:将文件从Linux传输到Window
安装完 lrzsz 插件以后,还支持使用鼠标拖拽文件至 Xshell 的方式来上传文件
xftp
较为通用的文件传输方式
Linux - Linux
scp
scp 表示安全复制,该命令可以在两个位置之间安全地复制文件和目录。使用 scp,可以复制文件:
从本地系统到远程系统;
从远程系统到本地系统。
使用 scp 传输数据时,文件是加密的,因此任何敏感内容都不会在传输过程中被篡改。
scp 源数据地址(source) 目标数据地址(target)
常用选项:
-C (大写):允许传输过程中压缩,可提高效率
-r :递归传输整个目录(如果传输的是文件则不需要这个参数)
-p (小写):保留源文件的修改时间和访问权限等
-P (大写):指定远程主机的 ssh 端口
-l :limit 限制传输带宽 KB/s, -l 1 表示限制每秒 1kb 的传输效率
-v :详细模式,打印有关其进度的调试消息的选项,这有助于调试连接、身份验证和配置问题(调试可以使用)
rsync
rsync 也是一个比较实用的命令,用于通过远程 Shell 在两个位置之间同步文件,它通传输源和目标之间的差异来提供更快的文件传输。使用前需要先安装命令(传输的双方都必须安装 rsync)
增量备份和在拷贝目录时,排除掉目录中的某些文件这两个场景 scp 就满足不了
scp 源数据地址(source) 目标数据地址(target)
# A端的~/test目录拷贝到B端的~目录,B端~目录下不会出现test目录,而是把A端的~/test目录下的所有文件拷贝到B端的~目录
-r :递归传输目录下所有文件
-a :归档模式,保持所有文件属性。递归同步并保留符号链接、组、所有者和权限,它比 -r 更常用
-v :显示 rsync 过程的详细信息, -vvvv 可以获取更加详细的信息
-z :传输时进行压缩处理
-exclude=PATTERN :排除不需要传输的文件格式
-exclude-from=FILE :排除 FILE 中指定格式的文件
-bwlimit :限制 I/O 带宽 KB/s
–partial :恢复因某些原因而中断的传输
–progress :显示传输进度
-P (大写):由两个参数组成。 --partial :恢复某些原因而中断的传输, --progress :显示传输进度
–delete :从目标目录中删除无关文件。例如某一端删除了某些文件,使用该参数后另一端对应的文件也会被删除
区别
scp 通过安全的 SSH 连接进行文件传输(总是安全的),rsync 不是加密传输,rsync 必须通过 SSH 传输才能安全;
如果要传输大文件,并且传输在完成之前断开连接,rsync 会从中断的地方继续传输,而 scp 没有;
rsync 默认是只拷贝有变动的文件,scp 是全量拷贝,所以 rsync 很适合做增量备份。
5.文件压缩
tar
主要针对的文件是 lucky.tar.gz
解压缩
tar -zx(解压)v(过程)f(文件) lucky.tar.gz
压缩
tar -zc(压缩)f(文件) tomcat.tar.gz(压缩后的名字) apache-tomcat-7.0.61(源文件)
tar -zxf tomcat.tar.gz -C /opt/
-C 指定解压缩的文件目录
zip和unzip
安装
yum install zip unzip -y
压缩
zip -r tomcat.zip apache-tomcat-7.0.61
解压缩
unzip tomcat.zip
三、Linux的网络信息
1.网络相关命令
ifconfig
查看当前网卡的配置信息
这个命令属于 net-tools中的一个命令,但是Centos7中minimal版并没有集成这个包,所以7的时候需要自己手动安装
如果没有ifconfig ,可以使用ip addr 临时代替
netstat
查看当前网络的状态信息
一个机器默认有65536个端口号[0,65535]
这是一个逻辑的概念,将来我们需要使用程序监听指定的端口,等待别人的访问
一个端口只能被一个程序所监听, 端口已经被占用
netstat -anp
netstat -r 核心路由表 == route
ping
查看与目标IP地址是否能够连通
telnet
查看与目标IP的指定端口是否能够连通
yum install telnet -y
telnet 192.168.31.44 22
curl
restful 我们所有的资源在网络上中都有唯一的定位
那么我们可以通过这个唯一定位标识指定的资源
2.主机间的相互免秘钥
1.生成密钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
运行以上命令后会在 ~/.ssh/ 目录下生成一对密钥对。
2.拷贝公钥
把自己的公钥传递给对方主机即可,这个公钥文件必须放在对方主机的~/.ssh/authorized_keys 文件中。
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.163.102
注意:第一次建立连接时会弹出一个警告,需要输入 yes 将该主机添加到当前设备的已知主机列表中。这个警告是可以忽略的,一会我
们讲如何忽略。
查看对方主机的 ~/.ssh/authorized_keys
传输文件测试是否已免密
3.SSH 公钥检查
SSH 连接远程主机时,会检查主机的公钥。如果是第一次该主机,会显示该主机的公钥摘要,提示用户是否信任该主机。
当选择接受,就会将该主机的公钥追加到文件 ~/.ssh/known_hosts 中。
为了方便关闭严格的密钥检查
本次生效: ssh -o StrictHostKeyChecking=no root@node01
永久生效:修改 /etc/ssh/ssh_config 文件的配置,在 Host * 节点下配置以下信息:
# 严格的密钥检查 no
StrictHostKeyChecking no
SSH 对主机公钥的检查等级是根据 StrictHostKeyChecking 变量来配置的:
StrictHostKeyChecking=no :最不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网建议使用。如果访问的计算机的公钥在本地不存在,会自动添加到文件中(默认是 known_hosts ),并且给出一个警告
StrictHostKeyChecking=ask :默认的级别,就是出现刚才的提示。如果连接和公钥不匹配,给出提示,并拒绝登录。
StrictHostKeyChecking=yes :最安全的级别,如果连接和公钥不匹配,拒绝连接,不会提示详细信息。
四、用户-组-权限
1.用户
useradd 命令可以用来创建新的用户或更改用户的信息。帐号建好之后,再用 passwd 设定帐号的密码。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。
useradd [选项] [用户名]
-D :改变新建用户的预设值
-c :添加备注文字
-d :新用户每次登陆时所使用的家目录
-e :用户终止日期,日期的格式为 YYYY-MM-DD
-f :用户过期几日后永久停权。当值为 0 时用户立即被停权,而值为 -1 时则关闭此功能,预设值为 -1
-g :指定用户对应的用户组
-G :定义此用户为多个不同附属组的成员
-m :用户目录不存在时则自动创建
-M :不建立用户家目录,优先于 /etc/login.defs 文件设定
-n :取消建立以用户名称为名的群组
-r :建立系统帐号
-u :指定用户 id
新增用户(默认会创建同名的组和家目录)
useradd 用户名
设置密码
passwd 用户密码
查看用户
id 用户名
cat /etc/passwd
cat /etc/shadow
修改用户
# 修改用户名(组名称和家目录是不会被修改的)
usermod -l newname oldname
# 锁定用户(禁止登录)
usermod -L 用户
# 解锁用户
usermod -U 用户名
删除用户
userdel -r 用户名
切换用户
su - 用户名
注意:使用 su 命令时,有 - 和没有 - 是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。
2.组
修改用户的组:
# -g 修改主组(只能一个)
[root@node01 ~]# usermod 用户名 -g 组名
# -G 修改附属组(可以多个)
[root@node01 ~]# groupadd 组名
[root@node01 ~]# groupadd 组名
[root@node01 ~]# usermod 用户名 -G 组名,组名
3.权限
权限分别对应了用户、组、其他,那我们就可以直接修改文件所属信息来达到权限的控制。