一.Linux介绍
Linux是一套免费使用和自由传播的类Unix统操作系,是一个基于POSIX和UNIX的多户用、多任务、支持多线程和多CPU的作系操统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
1.1 Linux主要特性
基本思想
Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。
完全免费
Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
完全兼容POSIX1.0标准
这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。
多用户、多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
良好的界面
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
支持多种平台
Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
1.2 常用Linux版本
Red Hat:RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server收费版本. 红帽企业级Linux
Fedora Core:由原来的Redhat桌面版本发展而来,免费版本
Centos:RHEL的社区克隆版本,免费
SuSE:最华丽的Linux发行版, 企业服务器端 X windows和程序应用方面做的确实不错。尤其与Microsoft的合作关系,应该是在所有的Linux发行版本中最亲密的。
Debian运行起来极其稳定,这使得它非常适合用于服务器
Ubuntu:是Debian的一款衍生版,也是当今最受欢迎的免费操作系统, 最流行的linux桌面系
Fedora: 想尝试最先进的技术,等不及程序的稳定版出来。其实,Fedora就是红帽公司的一个测试平台;产品在成为企业级发行版之前,在该平台上进行开发和测试。
二.Linux安装和目录结构
安装
虚拟机:VMware workstation11 Linux系统:CentOS-6.5-x86_64-bin-DVD1.iso | 不带系统的笔记本或者台式 类似win7 win8.1 win10 mac 等操作系统 |
选择 新建虚拟机 | |
选择 自定义 | |
选择 稍后安装操作系统 | |
选择 linux Centos64位 | |
选定存储地址 | |
Cpu颗数 | |
默认内存1g | |
选择仅主机模式 | |
默认 | |
默认 | |
磁盘50G | |
默认 | |
完成 | |
编辑虚拟机设置 | |
选择ISO镜像文件 | |
开机 | |
选 第一个 | |
Skip跳过 | |
下一步 | |
英语 | |
英语 | |
选择基础存储设备 | |
不保存任何数据 | |
主机名称 默认 | |
时区 选 亚洲 上海 | |
Root 管理员密码 | |
选择自定义磁盘 | |
创建分区 | |
创建boot分区 一般300Mb | |
创建swap分区 一般是内存的2倍 | |
创建/ 根分区 | |
格式化硬盘 | |
下一步 | |
桌面即可 | |
可以自定义安装包 | |
在语言上 选中中文支持 | |
重启 | |
继续 | |
同意 | |
继续 | |
是 | |
日历 | |
完成 | |
登录 | |
完成 |
(Ifconig、hostname、service iptables status、setup)
vmware虚拟机下的三种上网方式bridged,nat,host-only
3.1 bridged (桥接方式 , 默认使用vmnet0虚拟网卡):
选择这种模式,虚拟机等同于网络内的一台物理主机,可对手动设置IP,子网掩码,DNS,且IP地址要和主机的IP在同一网段内。这样,虚拟机就和主机如同连在一个HUB上的两台计算机,只要主机能上网,虚拟机也会在这种模式下上网。
3.2 nat (网络地址转换模式 , 默认使用vmnet8虚拟网卡)
选择NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网,NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。
3.3 (仅主机模式 , 默认使用vmnet1虚拟网卡)
选择host-only模式,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。同时,虚拟系统和宿主机是可以相互通信的。
4.使用host-only方式(主要使用这种)
将Windows上的虚拟网卡改成跟Linux上的网卡在同一网段
注意:一定要将widonws上的WMnet1的IP设置和你的虚拟机在同一网段,但是IP不能相同且不能超出IP范围255值。
4.1 Linux环境配置(windows下面的防火墙也要关闭)
4.1.2修改主机名 (修改主机名需要重启虚拟机 reboot 或 init 6)
vim /etc/sysconfig/network
4.1.3修改IP(三种方式) (重启网卡 service network restart)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static" ###
HWADDR="00:0C:29:BF:45:8B"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="99339c27-0884-46c0-85d5-2612e5c1f149"
IPADDR="192.168.1.200" ###
NETMASK="255.255.255.0" ###
GATEWAY="192.192.1.1" ###
4.1.4 修改主机名和IP的映射关系
vim /etc/hosts
192.168.1.200 hadoop001
4.1.5关闭防火墙
查看防护墙状态
service iptables status
关闭
service iptables stop
查看防火墙开机启动状态 (查看是否看机自启动服务,几种启动方式) cat /etc/inittab
chkconfig iptables --list
关闭开机启动
chkconfig iptables off
4.2.1 windows方面配置:将本地网络共享给vmnet1虚拟网卡。
4.2.2 修改vmnet1虚拟网卡中的ip、网关、dns等信息,ip保证和虚拟机同一网段即可。
4.2.3如果window物理机主机ping不通虚拟机主机名名的,需要修改 C:WindowsSystem32driversetchosts 映射文件。如:192.1681.1.100 hadoop001
Linux目录结构
目录 | 作用 |
/ | Linux系统的根目录,一般只存放目录 |
/bin和/usr/bin | 命令(二进制)文件目录,包含可供root用户和普通用户所使用的Linux命令和二进制文件,包含shell解析器等 |
/boot | 系统引导和内核目录,存放引导装载文件 |
/dev | 设备目录,存放各个硬件设备的信息,例如光驱、硬盘等 |
/etc | 系统级别的配置文件存放的目录,一般由配置管理员来使用 |
/home | 所有普通用户的家目录 |
/lib、/usr/lib、 /usr/local/lib | 系统使用的函数库的目录 |
/lost+fount | 在ext2和ext3文件系统中,系统崩溃时记录信息的目录 |
/opt | 给主机额外安装软件所摆放的目录 |
/proc | 重要的需要放置在内存中的数据 |
/root | root用户的的根目录 |
/sbin、/usr/sbin /usr/local/sbin | 放置的是系统管理员(root)才能使用的命令,普通用户只能进行查看,而/bin目录中的命令普通用户也可以使用 |
/tmp | 存放应用程序产生的临时数据不能在此目录下存放重要数据 |
/var | 系统一般运行时需要改变的数据 |
|
|
/usr | 应用程序相关目录命令、函数库、共享包、内核源码 |
快捷键
man command
Command --help
Info command
基本操作和命令
Ctrl+R 查找历史输入过的命令
Ctrl+C ctrl+z 终止或退出当前操作
Table键的使用
1. 自动补全命令或目录
2. 在某个目录下只有一个目录的时候可以不用输入首字母直接敲table即可自动补全目录
3. 双击table时一般为显示所有命令或者列出某个目录下的所有目录和文件
三. Linux Shell操作
Linux系统级别命令
3.1查看当前Linux系统信息
uname -a 显示系统及版本的所有信息
uname -r 显示内核版本
uname -m 显示计算机是多少位系统
cat /proc/version (Linux查看当前操作系统版本信息)
cat /etc/issue 或cat /etc/redhat-release(Linux查看版本当前操作系统发行版信息)
3.2查看系统小版本
cat /etc/redhat-release
3.3查看当前主机名
hostname
3.4查看第一个网卡
ifconfig eth0
3.5查看和设置系统时间
date
date -s "2015-5-8 19:48:00"
设置时区
执行tzselect命令-->选择Asia-->选择China-->选择east China - Beijing, Guangdong, Shanghai, etc-->
TZ='Asia/Shanghai'; export TZ
3.6 :设置系统时间同步到硬件时钟
hwclock --systohc
3.7 查看进程
ps -fe | grep redis
3.8:显示当前在运行的进程包括对CPU 内存使用量
top -s
3.9管道:|
cmd1 | cmd2 将cmd1输出结果交给cmd2命令来执行
3.10 grep过滤
# grep //输出包含指定字符串的行
-i //忽略大小写
-v //取反
--color //突出显示查找字符串
3.11 重新启动Linux操作系统
reboot
Init 6
3.12 关闭Linux操作系统
shutdown -h now
init 0
3.13 图形和命令行转换
vi /etc/inittab
init 3 命令行模式
init 5 图形化
3.14 显示守护进程目录树
Pstree 或者 pstree -p (显示pid)
3.15 显示所有正在运行的进程
ps -aux
3.16 显示所有正在运行java 进程/
jps
3.17结束正在运行的指定进程(参照33)
kill -9 pid
3.18 linux 不进去系统更改root密码
1.在grub选项菜单按e进入编辑模式
2.编辑kernel那行 输入” 1”(空格1),然后按enter键。
3.按b重启
4.进入后执行下列命令
root@#passwd root (配置root的密码)
Enter new unix password:输入新的密码
root@#init 6
3.19 wget url 通过命令下载网页
wget http://192.168.21.41/lrzsz.rpm
Linux磁盘与U盘操作
3.20 显示系统的磁盘空间用量
df -h //显示磁盘分区信息
mkfs.ext3 /dev/sdb1 //格式化硬盘分区
fdisk -l //查看磁盘分区
fdisk /dev/sdb //硬盘分区51显示磁盘分区
Du -h -s 目录 //查目录使用大小
3.21 挂载
mount -t vfat /dev/sdb1 /media/umnt //挂载
umount /media/umnt //卸载
//linux文件格式
ext4 ext3 ext2 vfat(fat32)
//windows文件格式
fat32 ntfs
Linux账号与组操作
3.22 账户
超级账户 root uid = 0
普通账户 uid > = 500
系统账户 uid = 1 ~ 499
/etc/passwd //保存账户的信息
/etc/shadow //保存账户密码信息
/root //root用户家目录
/home/xxx //普通用户xxx的家目录
3.23 添加和删除用户 useradd
# useradd //创建用户
-u 指定uid
-d 指定宿主目录
-s 指定使用shell
-e 指定用户过期时间
-g 指定基本组
-G 指定附加组
# useradd openlab
# gpasswd -a openlab gropenlab //将用户加入到组中
# gpasswd -d openlab gropenlab //将用户从组中删除
# echo "123456" | passwd --stdin feige //不通过交互信息,直接改用户密码
# userdel //删除用户 不删除用户文件
# userdel -r //连主目录一起删除
# id openlab //显示用户信息
3.24 :创建用户组
groupadd manager
3.25 创建用户
useradd -G manager tom
useradd -G manager tom2
3.26 更改密码方式1
passwd tom
3.27更改密码方式2
echo "root" | passwd --stdin root //不通过交互信息,直接改用户密码
3.28 删除指定的账号
userdel tom2
3.29锁定帐户 tom2 禁止其登录
usermod -L tom2
3.30切换当前用户帐户为 admin
su - admin
3.31. 显示当前登录用户帐户
whoami
3.32 查看系统文件判断添加用户组添加用户操作是否正确
cat /etc/passwd
cat /etc/group
Linux下文件权限介绍
3.33查看当前位置
pwd
3.34显示当前目录的文件列表
ls -l /data0
3.35递归显示/目录的文件列表
ls -R /data0
3.36显示文件或文件夹详细信息
权限:读取写入可执行
归属关系: 所有者所属组其他用户
-|rw-|---|---. 1 root root 1771 4月 28 2015 anaconda-ks.cfg
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨
①:文件类型
- 文件
d 目录
l 链接
②:所有者权限(u)
r 读 4
w 写 2
x 执行 1
③:所属组权限(g)
r 读 4
w 写 2
x 执行 1
④:其他用户权限(o)
r 读 4
w 写 2
x 执行 1
⑤:所有者
⑥:所属组
⑦:文件大小
⑧:最后修改时间
⑨:文件名
Linux文件文件夹操作
3.37 创建文件夹和文件 (指定目录和不指定目录的区别)
mkdir /tmp/test01 //创建空文件夹
mkdir /data1/hadoop/hdfs/name -p //创建多级文件夹
touch /tmp/test01/file.txt //创建空文件
vi file.log //创建空文件并进如编辑模式
echo > file.txt //创建file.txt并输入空到该文件中
3.38 复制文件
cp /tmp/file1.txt /opt
3.39 复制目录
cp -r /tmp/test01 /opt
3.40移动,剪切,重命名
mv /opt/test01 /tmp
mv /opt/file1.txt /tmp/file2.txt
3.41 删除
rm //删除文件
rm -r //删除目录
rm -f //强制删除
rm –rf folder //常用命令 不可恢复
3.42文件内容查看
cat -n //查看内容时显示行号
cat /etc/redhat-release //不显示行号
cat -n /etc/passwd //查看内容时显示行号
3.43设置文件所有者拥有对文件读写执行权限
chmod 777 /data0/my.cnf
3.44 目录文件显示多行可上下翻查
less /etc/passwd
3.45 显示文件的头10行或尾10行
tail //默认查看文件尾10行
head //默认查看文件头10行
-n 数字 //查看指定头几行
# tail /etc/passwd
# head /etc/passwd
# tail -n 2 /etc/passwd
# head -n 3 /etc/passwd
# head -n 12 /etc/passwd | tail -n 5
3.46 重定向 > >>
> 先清空文件内容,后写入新的内容
# ls -l /root > /tmp/file1.txt
>> 追加新的内容,旧的内容不会消除
# ls -l /root >> /tmp/file1.txt
3.47 屏幕打印 echo
echo "No Hello World..." //打印到屏幕
echo “hello word” /data0/my.cnf //打印到文件
echo “hello word” >> /data0/my.cnf //打印追加到文件
3.48 文本编辑器 VIM
vim file
:q //退出
:w //保存
:wq //保存退出
:q! //强制退出
3.49 打包 tar原理
-z 压缩
-c 打包
-x 解包
-f 必须要
-C 指定解包位置
-v 输出信息
3.49 打包tar案例(tar命令平常就代替了gz命令)
//将一个文件打包
# tar -cvf folder.tar file1.txt
//将多个文件打成一个包
# tar -cvf folder.tar file1.txt file2.txt
# tar –cvf file.tar *.jpg (常用方法)
//解包到当前目录
# tar -xvf folder.tar (常用方法)
//解包到指定目录
# tar -xvf folder.tar -C /home/sss
//将多个文件打包并压缩
# tar -zcvf file.tar.gz folder1 floder2
//将文件解包并解压缩
# tar -zxvf file.tar.gz (常用方法)
3.50 使用tar备份指定目录/data0/内容包括子目录中内容备份至 /data3/data0.tar.gz
tar -zcvf /data3/data0.tartar.gz /data0
3.51恢复tar 文件中的内容/data3/data0.tar.gz 至 /data2
tar -zxvf /data3/data0.tar.gz -C /data2
3.52 给shell命令起别名
vi /etc/bashrc
在文件最后一行添加
alias cls=’clear’
保存退出后输入 #source /etc/bashrc 生效
3.52修改指定文件文件的所属组所有者为hadoop用户/data3/data0.tar.gz
chown -r hadoop:hadoop /data3/data0.tar.gz
3.53 which cmd 查找cmd命令所在路径
# which reboot
3.54 locate 文件查找-效率很快(用的是数据库)
# locate httpd.conf //查找文件按所在
# updatedb //更新数据库,使之生效
3.55 find 文件查找-效率很慢
#find / -name httpd.conf
find 路径 条件
# find / -name httpd.conf
find 路径 条件 -exec cmd {} ;
# find / -name httpd.conf -exec ls -l {} ;
Linux 别名设置和取消(暂时性,终端或者是服务器关闭即失效):
查看命令别名:alias 设置命令别名:alias 别名='命令' 取消命令别名:unalias 别名
Linux 别名设置和取消(永久生效):
办法就是将别名的设置加入~/.bashrc文件,然后重新载入下文件就可以了。
$ vim ~/.bashrc
在文件最后面加入别名设置,如:alias rm=’rm -i’,保存后重新载入:
$ source ~/.bashrc
这样就可以永久保存命令的别名了。因为修改的是当前用户目录下的.bashrc文件,所以这样的方式只对当前用户有用。如果要对所有用户都有效,修改/etc目录下的bashrc文件就可以了。细看~/.bashrc文件,会发有这样一段代码:
if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
这个代码的意思就是加载.bash_aliases文件,centos已经帮我们考虑好了,所以也可以在用户根目录下新建一个文件.bash_aliases存放命令别名设置。
注意:alias这个命令是shell的内建命令,可以根据自己的使用习惯设置一些别名,需要注意的就是和其他命令冲突的情况。
Linux网络与安全级别操作
3.56 主机名配置文件
# vim /etc/sysconfig/network
HOSTNAME=teacher.tarena.com
# hostname teacher.tarena.com //临时修改
3.57主机与IP地址映射文件
# vim /etc/hosts //解析文件
10.0.0.10 www.baidu.com www
3.58 常见服务端口
web tcp 80
telnet tcp 23
ssh tcp 22
ftp tcp 20/21
smtp tcp 25
pop3 tcp 110
imap tcp 143
dns tcp/udp 53
可以参考/etc/services
3.59关闭防火墙
/etc/init.d/NetworkManager stop
# chkconfig NetworkManager off
# iptables -F
# chkconfig iptables off
# service iptables save
克隆后所需要进行的操作:
3.60虚拟机改ip地址
1.vim /etc/udev/rules.d/70-persistent-net.rules
//eth0删掉 eth1改成eth0
2.vi /etc/sysconfig/network-scripts/ifcfg-eth0 注意MAC地址和UUID
手工配置
DEVICE=eth0
TYPE=Ethernet
UUID=d06a4eee-dd5c-45e5-afbc-38a8a8440bd9
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
HWADDR=00:0C:29:74:E7:3E
IPADDR=192.168.10.11
PREFIX=24
GATEWAY=192.168.10.254
DNS1=192.168.10.254
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
3.61改主机名和映射文件
vi /etc/sysconfig/network
vi /etc/hosts
service network restart
给虚拟机打一个快照(相当于在某个时刻点给该虚拟机照一张照片),类似window恢复。
3.62 更改环境变量
export JAVA_HOME=/home/bigdata/jdk/
export HADOOP_HOME=/home/bigdata/hadoop/
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:
export PATH=$PATH:$JAVA_HOME/bin:/home/bigdata/protoc/bin:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:
使之生效
#source /profile
3.63设置SSH
telnet:明文 ssh:加密 ssh 默认端口22
# ssh root@192.168.10.11
# ssh -l root 192.168.10.11
3.64 上传文件 scp
# scp /tmp/love.txt root@192.168.10.11:/root/
# scp -P 30741 /tmp/love.txt root@192.168.1.11:/tmp/
3.65 下载文件 scp
# scp root@192.168.10.11:/root/love.txt /tmp/ //只发目录
# scp -P 30741 root@192.168.1.11:/tmp/love.txt /tmp //对指定端口发生文件
# scp -r /tmp/hadoop root@192.168.1.11:/tmp/ //目录下的所有文件
3.66操作新linux系统流程
- 检查vmware上该虚拟机的网卡是否开启
- 检查vmware虚拟机的vm1网卡是否设置ip地址
- 关闭NetworkManager网络管理服务
- 关闭防火墙
- 更改ip地址
- 更改主机名称和主机映射
- 使用连接工具(xshell)进行连接
- 如果出现问题按照以上流程检查
四.远程连接工具
SecureCRT,远程命令行工具
FileZilla FTP Client,远程FTP工具
everedit或者UE或者Notepad,远程文本编辑工具