一、Linux 介绍
1.1、什么是Linux
Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux出现于1991年,是由芬兰赫尔辛基大学学生Linus Torvalds和后来加入的众多爱好者共同开发完成。
企鹅是南极洲的标志性动物,根据国际公约,南极洲为全人类共同所有,不属于当今世界上的任何国家,当今任何国家无权将南极洲纳入其版图。
Linux选择企鹅图案作标志,其含意也是表明:开源的Linux,为全人类共同所有,任何公司无权将其私有。
Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机。
1.2、什么是CentOS
CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。
CentOS官网:http://www.centos.org/
CentOS搜狐镜像:http://mirrors.sohu.com/centos/
CentOS网易镜像:http://mirrors.163.com/centos/
CentOS北京理工大学镜像:http://mirror.bit.edu.cn/centos/
CentOS 6.4下载地址:
http://mirrors.sohu.com/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-bin-DVD1.iso
http://mirrors.sohu.com/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-bin-DVD2.iso
二、VMware
2.1、VMware介绍
VMware(简称VMW)是一个 “虚拟PC”软件公司,主要提供服务器、桌面虚拟化的解决方案。
VMware Workstation是VMV的主要产品,它是一种虚拟机软件,我们常说的VMware其实指的就是它。
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响 ,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类软件。
流行的虚拟机软件有VMware、Virtual Box和Virtual PC,它们都能在Windows系统上虚拟出多个计算机。
WMware Workstation界面如下:
2.2、VMware安装(略)
2.3、VMware网络模式
2.3.1、三种模式
- 桥接模式
相当于独立虚拟出一台电脑,和宿主是平行关系。
虚拟机和宿主机使用的是同一块网卡。
- Host-only
虚拟机可以访问虚拟机,可以访问宿主机,除此之外的机器不能访问。
宿主机器可以访问虚拟机,其他机器不能访问。
- NAT
虚拟机可以访问虚拟机,也可以访问宿主机,也可以访问外网。
宿主机器可以访问虚拟机,其他外部机器不能访问虚拟机。
网络连接,需要使用网卡进行连接。VMware有三种网络模式,需要三块网卡:
- 桥接模式,对应的是PC机的物理网卡;
- 宿主模式,对应的是虚拟的net1网卡;
- NAT模式,对应的是虚拟的net8网卡;
3.2、SSH客户端安装
SSH客户端就是使用了SSH协议来连接远程服务器的客户端。SSH协议就是安全外壳协议,使用该协议连接远程服务器,无需重复输入用户名\密码。
使用这种协议的客户端有多种:SecureCRT 、xshell等。
3.3、Linux目录结构
四、Linux常用命令
4.1、操作文件及目录命令
4.1.1、ls
用途:显示文件和目录列表(list)
常用参数:
- -l:查看列表详细信息。
- -a:查询文件列表并显示隐藏的目录及文件。
ll:等价于ls -l命令
[root@redis01 ~]# ll
总用量 1528
-rw-r--r--. 1 root root 36582 10月 8 23:25 08.jpg
-rw-------. 1 root root 1639 10月 19 19:56 anaconda-ks.cfg
-rw-r--r--. 1 root root 48546 10月 19 19:56 install.log
-rw-r--r--. 1 root root 10726 10月 19 19:55 install.log.syslog
drwxrwxr-x. 6 root root 4096 10月 28 00:55 redis-3.0.0
-rw-r--r--. 1 root root 57856 10月 8 21:50 redis-3.0.0.gem
-rw-r--r--. 1 root root 1358081 10月 8 21:50 redis-3.0.0.tar.gz
drwxr-xr-x. 2 root root 4096 10月 21 04:55 公共的
drwxr-xr-x. 2 root root 4096 10月 21 04:55 模板
drwxr-xr-x. 2 root root 4096 10月 21 04:55 视频
drwxr-xr-x. 2 root root 4096 10月 21 04:55 图片
drwxr-xr-x. 2 root root 4096 10月 21 04:55 文档
drwxr-xr-x. 2 root root 4096 10月 21 04:55 下载
drwxr-xr-x. 2 root root 4096 10月 21 04:55 音乐
drwxr-xr-x. 2 root root 4096 10月 21 04:55 桌面
[root@redis01 ~]#
4.1.2、pwd
用途:显示当前目录(print working directory)
4.1.3、clear
作用:清屏
Ctrl+L 命令也可以完成清屏操作。
4.1.4、cd
作用:切换目录(change directory)
[root@redis01 local]# pwd
/usr/local
[root@redis01 local]# cd /root/
[root@redis01 ~]# pwd
/root
[root@redis01 ~]#
常见用法:
cd 目录:目录跳转
cd ~、cd:回到当前用户的root目录
cd -:后退上次命令的目录
cd ..:退到上级目录
cd /:到根目录
4.1.5mkdir
用途:创建目录(make directoriy)
常用参数:
-p 父目录不存在情况下先生成父目录 (parents)
mkdir room2/box/xiao-box -p
4.1.6、cp
用途:复制文件或目录(copy)
常用参数:
-r 递归处理,将指定目录下的文件与子目录一并拷贝(recursive)
cp redis-3.0.0 room1/ -r
4.1.7、mv
用途:
移动文件或目录
文件或目录改名(move)
文件重命名:
[root@localhost-0723 house]# mv roo3 room3
移动目录:
[root@redis01 room1]# mv door/ ../room2/
4.1.8、rm
用途:删除文件(remove)
常用参数:
-r 同时删除该目录下的所有文件(recursive)
-f 强制删除文件或目录(force)
[root@localhost-0723 house]# rm -rf room2
4.1.9、touch
用途:创建一个空的文件
[root@localhost-0723 house]# touch file1
4.1.10、tar(重点)
用途:解压缩文件
常用参数:
-c 建立一个压缩文件的参数指令(create)
-x 解开一个压缩文件的参数指令(extract)
-z 是否需要用 gzip 压缩
-v 压缩的过程中显示文件(verbose)
-f 使用档名,在 f 之后要立即接档名(file)
压缩命令:tar -zcvf 压缩之后的文件名 要压缩的文件或目录
tar -zcf tomcat.tar.gz apache-tomcat-7.0.47
解压缩命令:tar –zxf 要解压的文件名称 -C 要解压的目标目录
tar -zxf tomcat.tar.gz -C /usr/local
4.1.11、echo
用途:将内容写入指定文件,如果目标文件不存在,同时会把文件创建出来。
语法:echo 123 >> hello2.txt
用途:显示变量的值
语法:echo $PATH
4.1.12cat
用途:显示文本文件内容 (catenate)
[root@localhost-0723 house]# cat hello2.txt
123
4.1.13、head/tail
用途:查看文本中开头或结尾部分的内容
用法:
head -n 5 a.log 查看a.log文件的前5行
tail -f b.log 循环读取(fellow)
[root@redis01 ~]# head -n 20 install.log
安装 fontpackages-filesystem-1.41-1.1.el6.noarch
warning: fontpackages-filesystem-1.41-1.1.el6.noarch: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
安装 m17n-db-1.5.5-1.1.el6.noarch
安装 ca-certificates-2010.63-3.el6_1.5.noarch
安装 setup-2.8.14-20.el6.noarch
安装 liberation-fonts-common-1.05.1.20090721-5.el6.noarch
安装 xkeyboard-config-2.6-6.el6.noarch
安装 xml-common-0.6.3-32.el6.noarch
安装 iso-codes-3.16-2.el6.noarch
安装 filesystem-2.4.30-3.el6.i686
安装 dejavu-fonts-common-2.30-2.el6.noarch
安装 lucene-2.3.1-5.9.el6.noarch
安装 control-center-filesystem-2.28.1-38.el6.i686
安装 paktype-fonts-common-2.0-8.el6.noarch
安装 mesa-dri-filesystem-9.0-0.7.el6.i686
安装 autocorr-zh-3.4.5.2-16.1.el6_3.noarch
安装 tzdata-2012j-1.el6.noarch
安装 mozilla-filesystem-1.9-5.1.el6.i686
安装 tzdata-java-2012j-1.el6.noarch
安装 foomatic-db-filesystem-4.0-7.20091126.el6.noarch
[root@redis01 ~]# tail -20f install.log
安装 nano-2.0.9-7.el6.i686
安装 libitm-4.7.0-5.1.1.el6.i686
安装 attr-2.4.44-7.el6.i686
安装 nfs4-acl-tools-0.3.3-6.el6.i686
安装 scl-utils-20120927-2.el6.i686
安装 wdaemon-0.17-5.el6.i686
安装 mtr-0.75-5.el6.i686
安装 traceroute-2.0.14-2.el6.i686
安装 setserial-2.17-25.el6.i686
安装 vconfig-1.9-8.1.el6.i686
安装 rfkill-0.3-4.el6.i686
安装 rdate-1.4-16.el6.i686
安装 bridge-utils-1.2-10.el6.i686
安装 eject-2.1.5-17.el6.i686
安装 strace-4.5.19-1.17.el6.i686
安装 b43-fwcutter-012-2.2.el6.i686
安装 latrace-0.5.9-2.el6.i686
安装 trace-cmd-1.0.5-10.el6.i686
安装 crash-trace-command-1.0-4.el6.i686
*** FINISHED INSTALLING PACKAGES ***
4.1.14、ln
用途:建立链接文件(link)
常用参数:
-s 对源文件建立符号连接,而非硬连接(symbolic)
注意:源文件删除,建立的硬链接文件依然可用,而建立的软链接文件作废。
[root@redis01 room1]# echo 123 >> f1
[root@redis01 room1]# ln f1 f2
[root@redis01 room1]# ll
总用量 8
-rw-r--r--. 2 root root 4 10月 30 06:27 f1
-rw-r--r--. 2 root root 4 10月 30 06:27 f2
[root@redis01 room1]# ln -s f1 f3
[root@redis01 room1]# ll
总用量 8
-rw-r--r--. 2 root root 4 10月 30 06:27 f1
-rw-r--r--. 2 root root 4 10月 30 06:27 f2
lrwxrwxrwx. 1 root root 2 10月 30 06:27 f3 -> f1
4.2、系统命令
4.2.1、find
用途:在文件系统中查找指定的文件
语法:find 目录 -name 文件名称
例子:find /usr/local/ -name "redis.conf"
4.2.2、grep (重点)
用途1:在指定的文本文件中查找指定的字符串
语法:grep 文本内容 文件名称
例子:grep linux install.log
用途2:在前边命令的结果中查找内容
语法:命令 | grep 文本内容
例子:ll | grep install
4.2.3、|
用途:管道
例子:ls -l | grep java
说明:
ls -l 命令的输出,会作为grep java命令的输入。
4.2.4、ps(重点)
用途:显示瞬间的进程状态
常用参数:
-a 显示所有用户的所有进程(包括其它用户)
-u 按用户名和启动时间的顺序来显示进程
-x 显示无控制终端的进程
例子:
ps aux | grep java
ps -ef | grep java
4.2.5、kill(重点)
用途:杀死一个进程
语法:kill pid或者kill -9 pid(强制终止)
4.2.6、su
用途:切换用户
语法:su - 或者 su
例子:su itcast
注意:
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
- 当需要返回到原来用户时,使用exit指令。
- 如果 su – 没有带用户名,则默认切换到root用户。
4.2.7、sudo
用途:获取临时目标用户权限,默认是root用户
语法:sudo cd /root
注意:
使用sudo命令获取临时,不需要知道目标用户的密码,只需要输入当前用户密码。
4.2.8、whoami
用途:查看当前用户
语法:whoami
4.2.9、which
用途:查看可执行文件在哪
语法:which 命令
例子:which mkdir
4.2.10、mount
用途:挂载外设、挂载目录
语法:mount <源目录> <目标目录>
例子:mount /usr/local/mnt /mnt/temp
4.2.11、umount
用途:解除挂载
语法:umount <目标目录>
例子:umount /mnt/temp
4.2.12、dirname
用途:显示文件所在目录
语法:dirname <目录/文件>
例子:dirname /usr/local
4.2.13、hostname
用途:查看当前主机名
语法:hostname
4.2.14、top
用途:显示当前系统中耗费资源最多的进程
语法:top
4.2.15、Ctrl+c
用途:退出命令
4.2.16、df
用途:显示文件系统磁盘空间的使用情况
4.2.17、free
用途:显示当前内存和交换空间的使用情况
4.2.18、shutdown
用途:关机/重启
常用参数:
-r 关机后立即重启
-h 关机后不重新启动
例子:
shutdown -r 10 10分钟后重新启动
halt 关机后关闭电源
reboot 重新启动
4.3、帮助命令
4.3.1、help
用途:查看帮助文档
语法:help 命令
例子:help if
4.4、固定IP网络配置
4.4.1通过界面配置
进入Linux的系统界面,点击右上角的网络连接编辑网络选中要编辑的网卡(比如eth0)点击编辑,出现以下界面:
4.4.2通过配置文件配置
配置文件路径:/etc/sysconfig/network-scripts/ ifcfg-eth0
网络配置如下:
DEVICE=eth0
TYPE=Ethernet
UUID=b7a77d66-3d3e-40d7-bf4f-16eb5dacf3cb
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
HWADDR=00:0C:29:43:0B:D4
IPADDR=192.168.25.159
PREFIX=24
GATEWAY=192.168.25.2
DNS1=192.168.25.2
LAST_CONNECT=1443527057
~
4.4.3通过setup命令界面配置
[root@redis01 ~]# setup
五、VIM文本编辑器
vi / vim是Unix / Linux上最常用的文本编辑器而且功能非常强大。
5.1、VIM工作模式
5.2、插入命令
i | 在光标前插入 |
---|---|
I | 在光标当前行开始插入 |
I | 在光标当前行开始插入 |
a | 在光标后插入 |
A | 在光标当前行末尾插入 |
o | 在光标当前行的下一行插入新行 |
O | 在光标当前行的 |
5.3、定位命令
:set nu | 显示行号 |
---|---|
:set nonu | 取消行号 |
gg | 到文本的第一行 |
G | 到文本的最后一行 |
:n | 到文本的第n行 |
5.4、删除命令
x | 删除光标所在处字符 |
---|---|
nx | 删除光标所在处后的n个字符 |
dd | 删除光标所在行。ndd删除n行 |
dG | 删除光标所在行到末尾行的所以内容 |
D | 删除光标所在处到行尾的内容 |
:n1,n2d | 删除指定范围的行 |
5.5、复制粘贴
yy | 复制当前行 |
---|---|
p | 粘贴 |
5.6、替换和取消命令
u | undo,取消上一步操作 |
---|---|
Ctrl + r | redo,返回到undo之前 |
r | 替换光标所在处的字符 |
R | 从光标所在处开始替换,按Esc键结束 |
5.7、退出命令
:q | 退出vi(没有做任何修改时) |
---|---|
:q! | 强制退出不保存 |
:w | 保存不退出 |
:wq | 保存后退出 |
六、用户和组账户管理
linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。
6.1、配置文件
保存用户信息的文件:/etc/passwd
保存密码的文件:/etc/shadow
保存用户组的文件:/etc/group
保存用户组密码的文件:/etc/gshadow
用户配置文件:/etc/default/useradd
6.2、用户和用户组关系
每个用户至少属于一个用户组
每个用户组可以包含多个用户
同一个用户组的用户享有该组共有的权限
6.3、操作用户命令
6.3.1、useradd
用途:添加用户
常用参数:
-u 指定组ID(uid)
-g 指定所属的组名(gid)
-G 指定多个组,用逗号“,”分开(Groups)
-c 用户描述(comment)
-e 失效时间(expire date)
命令演示:
[root@redis01 home]# useradd hello2
增加用户时直接加上组
指令(基本语法)
useradd –g 用户组 用户名 //增加一个用户 zwj, 直接将他指定到 wudang
6.3.2、passwd
用途:修改用户密码
语法:passwd 用户名
命令演示:
[root@redis01 home]# passwd hello
更改用户 hello 的密码 。
新的 密码:
无效的密码: 它基于字典单词
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@redis01 home]#
6.3.3、usermod
用途:修改用户,即user modify
常用参数:
-l 修改用户名 (login)usermod -l a b(b改为a)
-g 添加组 usermod -g sys tom
-G添加多个组 usermod -G sys,root tom
–L 锁定用户账号密码(Lock)
–U 解锁用户账号(Unlock)
命令演示:
[root@redis01 home]# usermod -l hello3 hello2
6.3.4、userdel
用途:删除用户,即user delete
常用参数:
-r 删除账号时同时删除目录(remove)
命令演示:
[root@redis01 home]# userdel -r hello3
6.3.4、id
用途:查询用户信息指令
id 用户名
命令演示:
案例1:请查询root 信息
6.4、操作用户组命令
6.4.1、groupadd
用途:添加用户组
常用参数:
-g 指定gid
命令演示:
[root@redis01 home]# groupadd g1
[root@redis01 home]# groupadd -g 333 g2
6.4.2、groupmod
用途:修改用户组
常用参数:
-n 更改组名(new group)
命令演示:
[root@redis01 home]# groupmod -n newg1 g1
6.4.3、groupdel
用途:删除用户组
命令演示:
[root@redis01 home]# groupdel newg1
6.4.4、groups
用途:显示用户所属组
语法:groups 用户名
命令演示:
[root@redis01 home]# groups hello
hello : hello
6.4.4、练习
7、权限管理
7.1、三种基本权限
Linux的三种基本权限如下:
r 读权限(read)
w 写权限(write)
x 执行权限 (execute)
Linux的权限管理策略如下图所示:
7.2、更改操作权限
语法:chmod [options] mode files
注意:只能[文件属主]或[特权用户]才能进行文件权限的更改。
-
mode
可以是数字形式
可以用who opcode permission英文表达式表示。
注意:可指定多个mode,以逗号分隔。 -
options
-c,–changes
只输出被改变文件的信息。
-f,–silent,–quiet
当chmod不能改变文件模式时,不通知文件的用户。
–help
输出帮助信息。
-R,–recursive
可递归遍历子目录,把修改应到目录下所有文件和子目录。
–reference=filename
参照filename的权限来设置权限。
-v,–verbose
无论修改是否成功,输出每个文件的信息。
–version
输出版本信息。
7.2.1、通过who opcode permission英文表达式修改权限
- who
u:用户
g:组
o:其它
a:所有用户(默认)
- opcode
+:增加权限
-:删除权限
=:重新分配权限
- permission
r:读
w:写
x:执行
s:设置用户(或组)的ID号
t:设置粘着位(sticky bit),防止文件或目录被非属主删除
u:用户的当前权限
g:组的当前权限
o:其他用户的当前权限
命令演示:
[root@redis01 ~]# chmod u+x file
7.2.2、通过数字修改权限
可以使用三位[八进制数字]来表示权限,比如:777,751等,就可以表示权限。
第一位数字指定属主的权限。
第二位数字指定用户组的权限。
第三位数字指定其他用户的权限。
每个位置的数字是通过4(读)、2(写)、1(执行)三种数值的和来确定的。
如:
6(4+2)代表有读、写权限。
7(4+2+1)代表有读、写和执行的权限。
还可设置第四位,它位于三位权限序列的前面,第四位数字取值是4,2,1,代表意思如下:
4:执行时设置用户ID,用于授权给基于文件属主的进程,而不是给创建此进程的用户。
2:执行时设置用户组ID,用于授权给基于文件所在组的进程,而不是基于创建此进程的用户。
1:设置粘着位。
命令演示:
[root@redis01 ~]# chmod 751 house
7.2.3、常用修改权限方式
$ chmod u+x file 给file的属主增加执行权限
$ chmod 751 file 给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
$ chmod u=rwx,g=rx,o=x file 上例的另一种形式
$ chmod =r file 为所有用户分配读权限
$ chmod 444 file 同上例
$ chmod a-wx,a+r file 同上例
$ chmod -R u+r directory 递归地给directory目录下所有文件和子目录的属主分配读的权限
$ chmod 4755 设置用户ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限,并且该文件除了属主,不能被其用户进行删除或移动操作。
八、常用软件的安装
8.1、rpm软件包管理
RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括RedHat、CentOS、SUSE等Linux的分发版本都有采用,可以算是公认的行业标准了。RPM文件在Linux系统中的安装最为简便。
8.2、rpm命令使用
语法:rpm -ivh gcc-c+±4.4.7-3.el6.x86_64.rpm
常用参数:
i:安装应用程序(install)
e:卸载应用程序(erase)
vh:显示安装进度;(verbose hash)
U:升级软件包;(update)
qa: 显示所有已安装软件包(query all),结合grep命令使用
[root@redis01 ~]# rpm -qa|grep mysql
mysql-libs-5.1.73-5.el6_6.i686
mysql-server-5.1.73-5.el6_6.i686
mysql-5.1.73-5.el6_6.i686
mysql-community-release-el6-5.noarch
8.3、yum命令使用
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
例子(需要上网):
yum install gcc-c++
yum remove gcc-c++
yum update gcc-c++
8.5、防火墙
永久关闭:
[root@bogon bin]# chkconfig iptables off
[root@bogon bin]# chkconfig iptables on
临时关闭:
[root@bogon bin]# service iptables stop
[root@bogon bin]# service iptables start
修改防火墙规则:
[root@bogon bin]# vim /etc/sysconfig/iptables