要讲述大名鼎鼎的Linux,必然要先从UNIX系统谈起,下面这幅图给出了Unix系统的进化图:
图片来源:http://baike.baidu.com/link?url=QfoqWtWGs-BjpnfEy_AUk7Bm3XHuf6JbN92HCOoUBfFfj8BuSDkbwmldtmUEmGRDUwqsQMIV4jCKHvdkSPr3Lq
从进化图中可以看到,目前所有的主流操作系统都源自Unix 6(1976),我们要讲的Linux系统只是类UNIX系统中的一种,它源自于Minix系统,由Linus Torvalds于1991年开发,那时候Linus Torvalds还是芬兰大学的一名学生,其信奉开源精神,将代码分布可互联网上,可以免费获取,自从该操作系统问世后,世界各地的程序员加入到该操作系统的维护、内核升级等工作中来,进行了大量艰辛的工作以使该操作系统能够与BSD版的Unix及System V Unix(SVR4)等商用操作系统的功能与新功能进行匹配。
Linux开源后也源生出了多种版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。常用的Linux操作系统有三种,它们分别是Redhat、 debian及Ubuntu:
由于本课程针对想从事大数据开发的初学者,后期也需要在Ubuntu中配置Intellij IDEA Spark、Scala开发环境,在Linux系统上进行Spark、Scala应用程序开发,因此之故本教程决定采用Ubuntu Desktop版本进行教学。
下图给出的是Linux操作系统分层视图:
引自:A Practical Guide to Linux Commands, Editors and Shell Programming
从上图可以看到,Linux大致可以分为四层,分别是硬件、内核、系统应用及用户软件层,分层结构具有较强的安全性,也为我们屏蔽了底层硬件的复杂性。所有的系统应用都是通过内核来与底层硬件打交道的。Linux主要有如下特点:
对于初学者,为方便Linux的学习,可以采用安装虚拟机的方式进行,目前流行的虚拟机有:
由于后期需要在本机上搭建Spark集群,建议机器配置内存12G以上,一般集群至少三台,SparkMaster 4G,SparkSlave01 2G,SparkSlave02 2G,本机4G,这样整体机器运行起来才会比较流畅。现在Ubuntu版本已经升到了ubuntu 15.04,但它太耗内存了,出于机器性能考虑,本教程采用Ubuntu 10.04版,VMware版本是8.0.0
VMWare下载后按默认安装即可,下面讲解一下如何安装Ubuntu 10.04
1 File->New Virtual Machine
3 选择Installer disc image file(ISO),选择Ubuntu 10.04 ISO文件
4 Personlize Linux,Full Name表示安装好的Linux hostname,Username,Password可以根据自己的需要做任意设置,然后下一步
5 设置虚拟机名称,然后next
6 设置磁盘容量,默认为20G,建议选择split virtual disk into multiple files,然后next
7 其它默认设置就可以,然后Finish
8 如此便完成Linux的配置,接下来便是系统安装过程,整个安装过程中无需人工干预,大约30分钟
1 命令行终端的使用
可以直接在图形用户界面上进行命令行的使用,Applications->Accessories->Terminal
也可以按Ctr+ALT+F1进入CLI(Command Line Interface)模式,
输入用户名和密码,可以得到如下界面:
切换回图形用户界面,用CTR+ALT+F8
2 超级用户root密码的设置
//采用sudo passwd命令修改root密码
xtwy@ubuntu:~$ sudo passwd
[sudo] password for xtwy:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
3 切换用户
//采用su(switch user)命令切换用户
xtwy@ubuntu:~$ su root
Password:
root@ubuntu:/home/xtwy#
//切换回xtwy
root@ubuntu:/home/xtwy# su xtwy
xtwy@ubuntu:~$
4 当前用户工作目录与根目录
//~表示用户当前工作目录
xtwy@ubuntu:~$
//可以用pwd(Print Working Directory)命令查看完整路径
xtwy@ubuntu:~$ pwd
/home/xtwy
//用cd(change directory)命令改变工作目录,例如切换到根目录
//在linux中,/表示根目录
xtwy@ubuntu:~$ cd /
xtwy@ubuntu:/$
//切换回当前用户的工作目录,可以用cd ~命令(~表示当前用户默认的工作目录)
xtwy@ubuntu:/$ cd ~
xtwy@ubuntu:~$
5 列出文件目录 ls命令的使用
//不加任何参数的ls命令,简易列出目录中的所有文件和目录
xtwy@ubuntu:~$ ls
Desktop Downloads Music Public Videos
Documents examples.desktop Pictures Templates
//ls -a 列出目录下的所有文件包括隐含文件
xtwy@ubuntu:~$ ls -a
. Downloads .gvfs .pulse-cookie
.. .esd_auth .ICEauthority .recently-used.xbel
.bash_logout examples.desktop .local .ssh
.bashrc .gconf Music .sudo_as_admin_successful
.cache .gconfd .nautilus Templates
.config .gnome2 Pictures .update-notifier
.dbus .gnome2_private .profile Videos
Desktop .gnupg Public .xsession-errors
Documents .gtk-bookmarks .pulse .xsession-errors.old
//列出目录下所有文件和目录的详细信息
xtwy@ubuntu:~$ ls -al
total 136
drwxr-xr-x 24 xtwy xtwy 4096 2015-08-20 23:58 .
drwxr-xr-x 3 root root 4096 2015-08-20 21:53 ..
-rw-r--r-- 1 xtwy xtwy 220 2015-08-20 21:53 .bash_logout
-rw-r--r-- 1 xtwy xtwy 3103 2015-08-20 21:53 .bashrc
drwx------ 4 xtwy xtwy 4096 2015-08-20 23:48 .cache
drwxr-xr-x 5 xtwy xtwy 4096 2015-08-20 23:35 .config
drwx------ 3 xtwy xtwy 4096 2015-08-20 23:31 .dbus
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Desktop
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Documents
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Downloads
-rw------- 1 xtwy xtwy 16 2015-08-20 23:31 .esd_auth
-rw-r--r-- 1 xtwy xtwy 179 2015-08-20 21:53 examples.desktop
drwx------ 4 xtwy xtwy 4096 2015-08-20 23:34 .gconf
drwx------ 2 xtwy xtwy 4096 2015-08-21 00:12 .gconfd
drwx------ 6 xtwy xtwy 4096 2015-08-20 23:32 .gnome2
drwx------ 2 xtwy xtwy 4096 2015-08-20 23:32 .gnome2_private
drwx------ 2 xtwy xtwy 4096 2015-08-20 23:50 .gnupg
-rw-r--r-- 1 xtwy xtwy 132 2015-08-20 23:34 .gtk-bookmarks
dr-x------ 2 xtwy xtwy 0 2015-08-20 23:34 .gvfs
-rw------- 1 xtwy xtwy 636 2015-08-20 23:34 .ICEauthority
drwx------ 3 xtwy xtwy 4096 2015-08-20 23:34 .local
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Music
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 .nautilus
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Pictures
-rw-r--r-- 1 xtwy xtwy 675 2015-08-20 21:53 .profile
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Public
drwx------ 2 xtwy xtwy 4096 2015-08-20 23:32 .pulse
-rw------- 1 xtwy xtwy 256 2015-08-20 23:31 .pulse-cookie
-rw------- 1 xtwy xtwy 218 2015-08-20 23:32 .recently-used.xbel
drwx------ 2 xtwy xtwy 4096 2015-08-20 23:50 .ssh
-rw-r--r-- 1 xtwy xtwy 0 2015-08-20 23:58 .sudo_as_admin_successful
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Templates
drwx------ 2 xtwy xtwy 4096 2015-08-20 23:35 .update-notifier
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Videos
-rw------- 1 xtwy xtwy 1681 2015-08-20 23:52 .xsession-errors
-rw------- 1 xtwy xtwy 2829 2015-08-20 23:32 .xsession-errors.old
//ls -l列出文件和目录的详细用户,不包括隐含文件和当前目录.、上级目录..
xtwy@ubuntu:~$ ls -l
total 36
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Desktop
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Documents
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Downloads
-rw-r--r-- 1 xtwy xtwy 179 2015-08-20 21:53 examples.desktop
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Music
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Pictures
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Public
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Templates
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Videos
上面四种是最为常用的ls命令,可以满足日常工作中的绝大部分需求,更多参数如下:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。 -b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。 -c 输出文件的 i 节点的修改时间,并以此排序。 -d 将目录象文件一样显示,而不是显示其下的文件。 -e 输出时间的全部信息,而不是输出简略信息。 -f -U 对输出的文件不排序。 -g 无用。 -i 输出文件的 i 节点的索引信息。 -k 以 k 字节的形式表示文件的大小。 -l 列出文件的详细信息。 -m 横向输出文件名,并以“,”作分格符。 -n 用数字的 UID,GID 代替名称。 -o 显示文件的除组信息外的详细信息。 -p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通 文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套
接字(sockets)。
-q 用?代替不可输出的字符。 -r 对目录反向排序。 -s 在每个文件名后输出该文件的大小。 -t 以时间排序。 -u 以文件上次被访问的时间排序。 -x 按列输出,横向排序。 -A 显示除 “.”和“..”外的所有文件。 -B 不输出以 “~”结尾的备份文件。 -C 按列输出,纵向排序。 -G 输出文件的组的信息。 -L 列出链接文件名而不是链接到的文件。 -N 不限制文件长度。 -Q 把输出的文件名用双引号括起来。 -R 列出所有子目录下的文件。 -S 以文件大小排序。 -X 以文件的扩展名(最后一个 . 后的字符)排序。 -1 一行只输出一个文件。
在需要时去查文档即可。