Linux基础知识
目录
1、VI文本编辑器
学会使用vi编辑器是学习Linux系统的必备技术之一,因为一般的Linux服务器是没有GUI界面的,Linux运维及开发人员基本上都是通过命令行的方式进行文本编辑或程序编写的。vi编辑器是Linux内置的文本编辑器,几乎所有的类unix系统中都内置了vi编辑器,而其它编辑器则不一定,另外很多软件会调用vi编辑进行内容编写,例如crontab定时任务。较之于其它编辑器或GUI编辑器,vi编辑速度是最快的。VIM是它的增强版本,VI有三种基本工作模式,分别是:
命令模式(command mode)、或者叫一般模式
插入模式(insert mode)、或者叫编辑模式
底行模式(last line mode)、或者叫命令行模式
1、最基本用法
vi huangbo.txt
1、首先会进入“一般模式”,此模式只接受各种命令快捷键,不能编辑文件内容 2、按i键,就会从一般模式进入编辑模式,此模式下,敲入的都是文件内容 3、编辑完成之后,按Esc键退出编辑模式,回到一般模式 4、再按:,进入“底行命令模式”,输入wq命令,回车即可保存退出 |
2、移动光标
10、):移动到句子结束 11、0:移动光标到下一句句首 12、$:移动光标到本行行尾 13、{:移动到段落开始 14、}:移动到段落结束 15、H:屏幕顶端 16、L:屏幕底端 17、M:移动到屏幕中央位置 18、gg:直接跳到文件的首行行首 19、G:直接跳到文件的末行行首 20、最强光标移动: % : 匹配括号移动,包括(, {, [.(你需要把光标先移到括号上) *: 匹配光标当前所在的单词,移动光标到下一个匹配单词 #: 匹配光标当前所在的单词,移动光标到上一个匹配单词 |
3、常用操作
一些有用的操作(在一般模式下使用):
a 在光标后一位开始插入 A 在该行的最后插入 i 在光标前 I 在该行的最前面插入 o 在光标当前行下插入一个空行,光标位于空行行首 O 在当前行插入空行 dd 删除光标所在行 3dd 删除从当前行开始的3行 yy 复制光标所在行 3yy 复制从当前行开始的3行 p paste 粘贴 u undo 撤销 |
4、查找并替换
(在底行命令模式中输入) 1显示行号 :set nu 2 隐藏行号 :set nonu 3 查找关键字 :/you ## 效果:查找文件中出现的you,并定位到第一个找到的地方,按n可以定位到下一个匹配位置(按N定位到上一个) 查询的时候被匹配上的字符串会被高亮,可以在命令模式下使用:noh取消高亮 4、直接跳转到N行 :N |
5、替换操作
:1 s/sad/bbb 将第一行的第一个sad替换为bbb :1,5 s/sad/bbb 将第一行到第五行的第一个sad替换为bbb :1,. s/sad/bbb 将第一行到光标行的第一个sad替换为bbb :.,$ s/sad/bbb 将光标行到缓冲区最后一行的sad替换为bbb :s/sad/bbb 查找光标所在行的第一个sad,替换为bbb :s/sad/bbb/g 查找光标所在行的所有sad,替换为bbb :%s/sad/bbb 查找文件中所有行第一次出现的sad,替换为bbb :%s/sad/bbb/g 查找文件中所有的sad,替换为bbb |
6、其他小技巧
r 替换光标处一个字符 R 进入替换模式,从光标处连续替换 s 删除当前字符,进入插入模式 S 删除当前行,进入插入模式 f + s 光标行内向后查找第一个出现的字符s F + s 光标行内向前查找第一个出现的字符s ~ 大小写转换,只转换光标处字符 |
7、真正的宝藏
VIM详解:http://linux.ctolib.com/cheat-sheets/view/Vim-command.html
2、网络管理
2.1、ifconfig命令
ifconfig命令主要用于配置网络接口,如果不加任何参数,则ifconfig命令用于查看当前所有活动网络接口的状态信息,如下图:
图中的eth0表示活动的以太网接口,对应的描述信息中给出了网络的整体状况信息包括网络类型、MAC地址、IP地址、子网掩码等等,lo表示本地回环网络地址
ifconfig其他常用使用
-a 显示所有网络接口,包括停用的 -s 短格式显示网络信息,同netstat -i -v 显示详细信息,在网络出错的情况下适用 interface 指定网络接口 up 启用网络接口 down 关闭网络接口 |
启用网络:ifconfig eth0 up
禁用网络:ifconfig eth0 down
2.2、网络配置
- 认识一下Vmware中的虚拟机和宿主机进行通信三种网络方式,它们分别是:
Bridged(桥接模式)
NAT(网络地址转换模式)
Host-Only(仅主机模式)
- Bridged(桥接模式)
桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致
- Host-Only(仅主机模式)宿主
在Host-Only模式下,虚拟网络是一个全封闭的网络,它唯一能够访问的就是主机。其实Host-Only网络和NAT网络很相似,不同的地方就是 Host-Only网络没有NAT服务,所以虚拟网络不能连接到Internet。主机和虚拟机之间的通信是通过VMware Network Adepter VMnet1虚拟网卡来实现的。
- NAT模式
使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟系统里访问互联网。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。
- 我们采用NAT网络模式工作。接下来教大家怎么配通网络,使虚拟机既能访问宿主机,也能访问互联网。
①、先看“子网IP”,这表示的就是我们的子网网段,我的是把他修改成“192.168.123.0” ②、再看“子网掩码”,这里写固定的“255.255.255.0”即可 ③、再看“NAT设置”:按右图设置 ④、再看“DHCP设置”,可以配置起始IP段
|
2.3、修改主机名
- 查看主机名
[root@hadoop01 ~]# hostname |
- 暂时性修改一次主机名,使用hostname命令即可
[root@hadoop01 ~]# hostname hadoop02 |
重新登录,你就会发@符号的主机名就会变成hadoop02,不然不会马上变
这种修改方式,只会生效一次,下一次重启之后就失效了。
- 下面带大家永久修改主机名
[root@hadoop02 ~]# vi /etc/sysconfig/network |
修改一下,使HOSTNAME等于你要修改成的主机名,然后保存退出
4、重启生效
2.4、配置主机映射(域名和IP映射)
- 编辑配置文件/etc/hosts
[root@hadoop02 ~]# vi /etc/hosts |
- 往里面加入映射关系
我加的是192.168.123.202对应到hadoop02(主机名),如果有多个加入多个即可
上面两行是自带的,不用理会
- 保存退出即可
- 检查是否配置成功,是否生效
2.5、其他常用网络管理命令
- ping命令
常用来测试网络连接是否正常
2、host命令
host命令用来进行DNS查询
先确定能ping通www.baidu.com
然后用host命令可以查看到www.baidu.com的主机host
然后通过浏览器访问该地址:
3、netstat命令
netstat命令可以显示网络接口的很多统计信息,包括打开的socket和路由表
以下是常用命令选项
-a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化成数字 -l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名 -r 显示路由信息,路由表 -e 显示扩展信息,例如uid等 -s 按各个协议进行统计 -c 每隔一个固定时间,执行该netstat命令 |
例子:
1、列出所有端口,包括监听和未监听的:netstat -a
2、列出所有TCP端口:netstat -at
3、列出所有UDP端口:netstat -au
4、列出所有监听状态的TCP端口:该命令最重要用来查看哪个程序占用了哪个网络端口号
netstat -nltp
命令详解:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html
2.6、防火墙
防火墙根据配置文件/etc/sysconfig/iptables来控制本机的“出、入”网络访问行为
其对行为的配置策略有四个策略表
- 基础必备技能
查看防火墙状态 | service iptables status |
开启防火墙 | service iptables start |
关闭防火墙 | service iptables stop |
关闭防火墙开机自启 | chkconfig iptables off |
设置防火墙开机自启 | chkconfig iptables on |
- 扩展知识
iptables -L -n 列出iptables规则并显示规则编号 iptables -L -n --line-numbers
iptables -L -n -t nat
#清除所有规则 iptables -F
service iptables restart
#保存配置 service iptables save
iptables -A INPUT -p tcp --dport 22 -j DROP
#删除规则 iptables -D INPUT -p tcp --dport 22 -j DROP
加入一条INPUT规则开放80端口 iptables -I INPUT -p tcp --dport 80 -j ACCEPT |
3、Linux系统启动级别管理
使用runlevel命令可以查看系统运行的级别
[root@hadoop01 ~]# runlevel |
修改系统默认启动级别:
[root@hadoop02 ~]# vi /etc/inittab |
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode ## 没有图形界面的全功能的多用户的启动级别
# 4 - unused
# 5 - X11 ## 有图形界面的启动级别
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault: ## 配置默认启动级别
## 通常将默认启动级别设置为:3
4、CRT使用
给大家推荐一个命令终端工具SecureCRT,类似的远程终端工具有XShell,Putty等等
5、用户和组
5.1、用户和组的概念
在最开始介绍Linux系统的时候有介绍过说Linux是一个多任务多用户的操作系统,当我们在使用ls -l命令的时候我们看到如下信息:
上面七个红框的信息分别是:
apps:表示文件或者目录,具体的文件类型是由该行最前面的那个符号表示 drwxrwxr-x:该文件的类型和权限信息 6:链接数,如果是文件则是1, 如果是文件夹则表示该文件夹下的子文件夹个数 第一个hadoop:文件或者目录的所属者 第二个hadoop:所属用户组 4096:文件或者目录的大小,是目录的话一般都是4096 Mar 24 11:20:文件的最后编辑时间 |
通过以上信息得知,每个文件都设计到用户和组的权限问题
在Linux中,用户是能够获取系统资源的权限的集合,组是权限的容器
Linux用户类型
用户类型 | 描述 |
管理员root | 具有使用系统所有权限的用户,其UID 为0 |
系统用户 | 保障系统运行的用户,一般不提供密码登录系统,其UID为1-499之间 |
普通用户 | 即一般用户,其使用系统的权限受限,其UID为500-60000之间. |
与Linux用户信息相关的文件有两个:分别是/etc/passwd和 /etc/shadow
查看文件/etc/passwd文件的内容,选取第一行:root:x:0:0:root:/root:/bin/bash root:用户名 x:密码占位符,密码保存在shadow文件内 0:用户id,UID 0:组id,GID root:注释信息 /root:用户家目录 /bin/bash:用户默认使用shell
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志 |
Linux用户组类型
用户组类型 | 描述 |
系统组 | 一般加入一些系统用户 |
普通用户组 | 可以加入多个用户 |
私有组/基本组 | 当创建用户时,如果没有为其指明所属组,则就为其定义一个私有的用户组,起名称与用户名同名,当把其他用户加入到该组中,则其就变成了普通组 |
与Linux用户组信息相关的文件有两个:分别是/etc/group和 /etc/gshadow
查看文件/etc/group文件内容,选取一个普通组行:hadoop:x:500: hadoop:组名 x:组密码占位符 500:组id |
5.2、用户操作
Linux中的用户管理主要涉及到用户账号的添加、删除和修改。所有操作都影响/etc/passwd中的文件内容
- 添加用户
useradd spark
usermod -G bigdata spark ## 设置组
usermod -c "mylove spark" spark ## 添加备注信息
一步完成:useradd -G bigdata -c "mylove" spark
- 设置密码
passwd spark
根据提示设置密码即可
- 修改用户
修改spark登录名:usermod -l storm spark
将spark添加到bigdata和root组:usermod -G root,bigdata spark
查看spark的组信息:groups spark
- 删除用户
userdel -r spark
加一个-r就表示把用户及用户的主目录都删除
5.3、组操作
前面我们知道,组是权限的集合。在linux系统中,每个用户都有一个用户组,没有指定时都默认为私有组,私有组名同用户名一致,建立用户组的好处是系统能对一个用户组中的所有用户的操作权限进行集中管理。组管理涉及组的添加、删除和修改。组的增加、删除和修改实际上就对/etc/group文件的更新
- 添加一个叫bigdata的组
groupadd bigdata
- 查看系统当前有那些组
cat /etc/group
3、将hadoop用户添加到bigdata组中
usermod -G bigdata spark
或者
gpasswd -a spark bigdata
这两个命令的区分记忆技巧:
命令是什么,就证明对什么做操作,所以最后的参数就是命令的操作对象,中间的可选项表示要干嘛
4、将spark用户从bigdata组删除
gpasswd -d spark bigdata
5、将bigdata组名修改为bigspark
groupmod -n bigspark bigdata
6、删除组
groupdel bigdata
5.4、为用户配置sudoer权限
普通情况下,使用普通用户进行一些简单的操作就OK,但是普通用户和root用户的区别就在于root用户能对系统做任何事,但是普通用户就不行。处处受限。那么假如在某些情况下,普通用户想拥有更大的权限做更多的事情,虽然有权限限制,但也不是不可以。部分操作还是可以赋予更高的权限让普通用户做一次。这就需要给普通用户配置root权限了。意思就是让普通用户使用root权限去做一些操作,这当然是需要配置的。
用root编辑 vi /etc/sudoers
在文件的如下位置,为hadoop添加一行即可
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
spark ALL=(ALL) ALL
然后,hadoop用户和spark用户就可以用sudo来执行系统级别的指令
[hadoop@hadoop01 ~]$ sudo useradd huangxiaoming
5.5、切换用户
在linux的系统使用过程当中,免不了会有多个用户来回切换使用。所以在此提供切换用户的使用操作:切换用户使用的命令是 su(switch user)
从普通用户切换到root用户:
[hadoop@hadoop01 root]$ su root ## 或者 [hadoop@hadoop01 root]$ su ## 然后根据提示输入密码即可 |
从root用户切换到普通用户
[hadoop@hadoop01 root]$ su hadoop ## 不用输入密码 |
退出登录
[hadoop@hadoop01 root]$ exit |
6、文件权限
- linux文件权限的描述格式解读
d rwx r-x r-x (也可以用二进制表示 111 101 101 --> 755)
d:标识节点类型(d:文件夹 -:文件 l:链接) r:可读 w:可写 x:可执行
u第一组rwx: ## 表示这个文件的拥有者对它的权限:可读可写可执行 g第二组r-x: ## 表示这个文件的所属组用户对它的权限:可读,不可写,可执行 o第三组r-x: ## 表示这个文件的其他用户(相对于上面两类用户)对它的权限:可读,不可写,可执行 |
- 修改文件权限
chmod g-rw haha.dat ## 表示将haha.dat对所属组的rw权限取消 chmod o-rw haha.dat ## 表示将haha.dat对其他人的rw权限取消 chmod u+x haha.dat ## 表示将haha.dat对所属用户的权限增加x chmod a-x haha.dat ## 表示将haha.dat对所用户取消x权限
也可以用数字的方式来修改权限 chmod 664 haha.dat 就会修改成 rw-rw-r-- 如果要将一个文件夹的所有内容权限统一修改,则可以-R参数 chmod -R 770 aaa/ |
- 修改文件所有权
<只有root权限能执行> chown angela aaa ## 改变所属用户 chown :angela aaa ## 改变所属组 chown angela:angela aaa/ ## 同时修改所属用户和所属组 |
7、压缩打包
- gzip压缩
gzip ma.txt
- gzip解压缩
gzip -d ma.txt.gz
或者 gunzip ma.txt.gz
- bzip2压缩
bzip2 ma.dat
- bzip2解压缩
bzip2 -d ma.dat.bz2
或者bunzip2 ma.dat.bz2
- 打包
tar -cvf ma.txt.tar ma.txt
追加打包:
tar -rvf ma.txt.tar ma.dat
表示将ma.dat文件追加到ma.txt.tar当中
- 解包
tar -xvf ma.txt.tar
- 打包并压缩
tar -zcvf ma.tar.gz /root/ma/
- 解包并解压缩(重要的事情说三遍!!!)
tar -zxvf ma.tar.gz
tar -zxvf ma.tar.gz
tar -zxvf ma.tar.gz
解包并解压缩到其他指定目录:
tar -zxvf ma.tar.gz
- 查看压缩包内容
tar -ztvf ma.tar.gz
10、打包并压缩成bz2
tar -jcvf a.tar.bz2
11、解压bz2
tar -jxvf a.tar.bz2
相关参数的解释:
z:gzip,通过gzip格式压缩或者解压缩 c:create,创建压缩文件 x:extract,解压缩文件,或者叫还原文件 v:verbose,显示过程 f:file,指定文件 t:list,列出文件 j:支持bzip2压缩和解压缩 |
8、Linux开关机和重启
开机:开机键
关机:shutdown,halt,init 0,poweroff
重启:reboot,init 6
Shutdown命令详解:
shutdown -h now ## 立刻关机
shutdown -h +10 ## 10分钟以后关机
shutdown -h 12:00:00 ##12点整的时候关机