此系列文章是探索大数据道路的记录,有些记录是为了备忘,有些记录是为了学习心得内容,有些是为了给大家提供一个好的学习资料。持续更新中…大家也可以到我的私人blog查看该系列文章。blog.cuteximi.com ,也可以关注【码省理工】公众号与我交流技术。
时刻提醒自己!
6:00 - 8:00
Linux centos的官方问答:网址
镜像地址:地址
8:00 - 10:00
概述学习的内容,其实主要是 hadoop 和spark ,这两部分都要扎扎实实的学习。Linux 和 Nginx 都要熟练,这是基础。
10:00 - 12:00
介绍Linux系统以及安装Linux系统。(pass)
安装版本为 centos 6.5 的 mini 版本。
14:00 - 16:00
文件系统,对文件的操作。
涉及到创建,复制,删除,重命名。对于文件和文件件差不多。注意的是,对文件夹进行删除或者复制操作的时候,要使用参数 -r ( 或 -R )。
文件的创建有很多种方式,比如 touch, vi, echo 等都可以创建一个文件。使用 echo 的时候可以使用 >
对文件的内容进行覆盖或者可以使用 >>
对文件的内容进行追加。删除文件的时候要注意参数的时候,使用 -f 参数可以强制删除文件。
命令有很多,记不住的时候,可以百度,google或者使用man 命令查看,最小化安装的 centos 是没有这个 man 命令的,可以使用 yum install man
来进程安装,加上参数 -y
可以自动同意一些 yes/no的安全性提示。
man cp 就会出现 cp 这个命令的说明手册。
16:00 - 17:00
一些 vi 的命令记录:
vi filename 直接新建或者打开一个文件,鼠标停在第1行行首。
vi +4 filename 如上,只不过光标停在第四行行首。
vi + filename 如上,只不过光标停留在最后一行行首。
vi /tsl filename 打开文件,并将光标定位到 tsl 这个字符那里。
vi /正则表达式 filename
进入底部命令行模式:
:set nu 或者 :set number
ctrl + g 是显示光标所在的位置。
替换:
?/str1/str2/ 单行替换第一个匹配的字符
?/str1/str2/g 全行替换
:%s/str1/str2/g 全文替换
复制粘贴删除:
yy
p
P
dd
ndd
:,$-1d 删除当前行到倒数第一行。
o 在下一行插入
O 在上一行插入。
I 行首
A 行末
图形化编辑器,能干的事情, vi 也能完成相应的功能。
vi编辑器,其实我很早就在是使用了这个编辑器了,因为用来这么长时间,也一直是那几个常用的命令。工具是用来生产的,这就足够了。一般模式,插入模式,底部命令行模式。
vim 是 vi 的高级版。
linux(5/12)
学习 linux 记住一句话,“一切皆文件”,什么都好办了。
很多人一说到Linux, 就会说自由。但是你真的而理解这种自由吗?这种自由是一种权力,能够决定你的计算机干什么,获取这种自由的唯一方式就是知道你的计算机在做什么。自由就是你的计算机没有任何秘密,你可以从计算机那里了解一切,只要你用心去寻找。
Linux 的作者 linus 是一个很牛逼的大神,昨天还看了2005年他在 Google 做讲座的视频,那时他在宣传 git (一个分布式的版本控制系统),大神就是大神,整场都在 diss svn 以及 cvs 模式的版本控制工具,甚至还骂在坐的 Google 工程师蠢货…。因为他们问的问题要么太蠢,要么是质疑 git 为什么要采用分布式,习惯了使用集中式方式的他们简直被 linus 骂成了猪。黑客与画家,创造者等词联系在一起就不会那么难理解了吧。我们凡人是不懂得。。?
黑客崇尚自由,这与 Linux 系统特别匹配,对这个系统你得负责,你得知道你在干什么。
扯那么多…开始正题,记录一下 linux 的学习过程。
环境说明:
1.安装 VMware Fusion略。
2.安装 centos 系统: 开头跳过检查(skip)。
3.配置网卡。
编辑网卡: vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.235.100 #设置 IP 地址
NETMASK=255.255.255.0 #设置子网掩码
GATEWAY=192.168.235.2
DNS1=114.114.114.114
重启网卡:
service network restart
在这也可以配置DNS:
vi /etc/resolv.conf
nameserver 网关
4.关闭防火墙.
iptables -F
5.配置 host 以及hostname
host映射是在 /etc/hosts文件下进行配置:
初始是这样的,记录着本地回环地址与host的映射。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# 可以自己添加,比如
192.168.1.11 node1
192.168.1.12 node2
hostname是主机的标识,在 /etc/sysconfig/networking 中进行配置:
NETWORKING=yes
HOSTNAME=node01
1.目录结构
首先得清楚 linux 系统都有那些约定俗成的目录,各自的目录都一般放什么文件。
bin: 存放二进制可执行文件(ls,cat,mkdir等)
sbin: 存放二进制文件,只有root用户才能访问
dev: 存放设备文件
usr: 存放系统应用程序,其中 /usr/local 是本地管理员软件安装目录
etc: 存放配置文件
lib: 存放一些共享类库和内核模块
tmp: 存放一些临时文件
var: 用于存放运行时需要改变数据的文件
boot: 存放开机所需的文件,开机时载入开机管理程序(bootloader),并映射到内存中。
home: 存放用户的东西
mnt:挂载目录
opt: 额外安装的可选软件的目录
文件的类型:
普通文件、目录文件、设备文件、链接文件、管道文件、套接字文件。
孰能省巧,多练几遍
孰能省巧,多练几遍
配置 host 以及hostname
host映射是在 /etc/hosts文件下进行配置:
初始是这样的,记录着本地回环地址与host的映射。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# 可以自己添加,比如
192.168.1.11 node1
192.168.1.12 node2
hostname是主机的标识,在 /etc/sysconfig/networking 中进行配置:
NETWORKING=yes
HOSTNAME=node01
【问题描述】
mac 下如何保存ssh的连接信息,实现自动登录。
【问题思路】
在 windows 下有一款比较好用的 xshell
工具,但是 mac 下没有对应的替代品。但是有一款优秀的客户端 iTerm2
。
【解决方案】
1.可以在【偏好设置】里面对应的【Profiles】页点击+号增加新的 profile 。
2.封装一个脚本,如下:
#!/usr/bin/expect -f
set timeout 60 # 设置超时时间
set username [lindex $argv 0] # 设置用户名
set password [lindex $argv 1] # 设置密码
set host [lindex $argv 2] # 设置ip或者域名
set port [lindex $argv 3] # 设置端口号
spawn ssh -p $port $username@$host # 启动一个的新的线程
# 模式 判断
expect {
"*yes/no" { send "yes\r";exp_continue }
"*password:" { send "$password\r" }
}
expect "$*" { send "pwd\r" }
interact
其中,Expect是一个用来处理__交互__的命令。借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成。提供了 send , expect , spawn ,interact 等命令。
说明:spawn 是用来启动一个进程的,在它之后的expect 和 send 都是与该进程交互的。interact 起到干预的作用。
3.在1步骤中的新建的 profile 中新增命令行的内容:
expect ~/.ssh/config_big_data/node01 root 123**4 cq.x***.te*h 4**2
因为上述连接涉及安全信息,故部分字符串被 * 代替。
依次为:expect 脚本 username@password host port
4.总结,这种方式应该是比较有效的方式了,其实还可以把公钥传到服务器,采用秘钥的验证方式登录。
参考文章:
1.expect原理详解
2.expect脚本传参
【问题描述】
克隆虚拟机之网卡配置
【问题思路】
网卡的 mac 地址冲突。修改一下 mac 地址即可。
【解决方案】
方案1:
注释掉eth0,然后将下面的eth1改名为eth0,复制下此eth0的mac地址
reboot -h now或者 intit 6
方案2:
rm -rf /etc/udev/rules.d/70-persistent-net.rules
intit 0
修改网卡ip即可。
【问题描述】
服务器之间如何实现免密登录,以及原理
【问题思路】
SSH以__非对称加密__实现身份验证,所以它是比较安全的。
身份验证有多种途径,例如①其中一种方法是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录;②另一种方法是人工生成一对公钥和私钥,通过生成的密钥进行认证,这样就可以在不输入密码的情况下登录。任何人都可以自行生成密钥。公钥需要放在待访问的电脑之中,而对应的私钥需要由用户自行保管。认证过程基于生成出来的私钥,但整个认证过程私钥本身中不会传输到网络中。
【解决方案】
如何新建密钥对呢?
1.查是否已存在密钥对,打开终端(Terminal):
输入:ls -al ~/.ssh
查看是否输出密钥对,如果有的话,会输出如下文件信息:id_rsa 和 id_rsa.pub
-rw------- 1 taoshilei staff 1679 Jun 25 22:34 id_rsa
-rw-r–r-- 1 taoshilei staff 403 Jun 25 22:34 id_rsa.pub
2、如果没有,则需要我们手动创建
输入:ssh-keygen -t rsa -b 4096 -C "your_email"
ssh-keygen 是生成秘钥的工具之一。
SSH supports several public key algorithms(公开秘钥算法) for authentication keys.
1.rsa - A key size of at least 2048 bits is recommended for RSA; 4096 bits is better.
2.dsa - DSA in its original form is no longer recommended.(不推荐使用)
3.ecdsa - Only three key sizes are supported: 256, 384, and 521 (sic!) bits.(大多数ssh客户端支持)
4.ed25519 - Support for it in clients is not yet universal. (还没有普及)
The algorithm is selected using the -t option and key size using the -b option.
-t 参数指定加密算法,-b 参数指定长度
用法如下:
ssh-keygen -t rsa -b 4096
3.将公钥发送到服务器
使用 ssh-copy-id 工具。
用法:
ssh-copy-id -i 公钥位置 user@host
之后会提示输入密码进行认证。
在这之后,公钥就会被添加到 服务器上的 ~/.ssh/authorized_keys 文件了里面。
一旦在服务器上配置了公钥,服务器会允许任何具有私钥的客户端进行连接用户登录,在登录的过程中,客户端会通过数字签名交换来证明拥有私钥。
免密登录图解
创建密钥并添加到服务器上。
登录认证流程
值得注意的是:服务端的 .ssh目录权限必须是700(rwx------),authorized_keys文件的权限是600(rw-------)
部分参考
https://www.ssh.com/ssh/keygen/#sec-What-Is-ssh-keygen