linux基础


一,linux

一,操作系统版本

http://archive.cloudera.com/cdh5/

001.jpg-27.5kB
hadoop支持以上4类(debian redhat sles ubuntu)操作系统,在企业中用的最多的还是redhat(cent os),其次是
sles.

二,虚拟化工具 VMWare

一,VMWare的安装
1,安装操作系统
创建虚拟机
??安装centos6.5操作系统
2,导入已经存在的操作系统
二,linux用户

linux安装时,有一个默认的管理员用户root/1234

[hadoop002@hadoop002 opt]$ 用户名@主机名 当前目录
有2个字符:
\#:表示当前用户是root用户
\$:表示当前用户是普通用户

查看IP地址:ifconfig
001.jpg-55.1kB

查看主机是否能连接网:

ping www.baidu.com
设置固定的IP地址
??1,修改配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0 

替换为

DEVICE=eth0
BOOTPROT=static
IPADDR=192.168.44.100  //根据具体情况而定
GATEWAY=192.168.44.2   //根据具体情况而定
NETMASK=255.255.255.0   //根据具体情况而定
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=none
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"

??2,设置网卡地址
001.jpg-33.2kB
??3,重启网络即可

三,linux的一些基本命令

1,清理屏幕
#|$clear
2,创建普通用户和设置密码(在linux系统下,默认情况下,创建一个用户的同时会给用户在系统的目录下创建一个属于自己的用户目录,该目录称为用户主目录  /home/hadoop002也可以用“~”代替)
# useradd beifeng
# passwd beifeng
3,用户的切换(管理员切换到普通用户不需要密码,普通用户切换到管理员用户需要密码)
#|$ su beifeng
4,显示当前用户所在的目录
$|# pwd
5,查看主机名称
$|# hostname
6,设置主机名称
# hostname beifeng.com.cn

注意:hostname方式修改主机名称只能在当前使用,当机器重新启动启动以后,主机名称会发生变化。原因:在linux系统中,系统的配置信息都是来自于文件中,此种方式不会改变配置文件内容。
7,读取linux系统上的文件内容的命令

#|$ cat /etc/sysconfig/network
8,编辑文件内容
 #|$ vi /etc/sysconfig/network

注意:按“i”键进入编辑模式,”esc”->”:q!”:退出不保存,”esc”->”:wq!”:退出并保存
9,关闭系统

# halt
10,重启系统
# reboot
11,安全重启
# init 6
12,查看当前目录
 ls --list
 ls -l
 ll
 ls -a  #查看当前目录下的所有文件包括隐藏文件
. :表示的是当前目录 .. :表示的是上级目录
13.切换目录
cd 

四,远程连接工具

主机名称和IP地址的映射:
????a,修改windows的hosts文件:C:\Windows\System32\drivers\etc\hosts

192.168.252.131   xingyunfei001.com.cn   xingyunfei001
192.168.252.129   xingyunfei.com.cn   xingyunfei
192.168.252.132   hadoop002.com.cn   hadoop002

????b,修改linux系统的hosts:

vi /etc/hosts

192.168.252.132 hadoop002.com.cn hadoop002
远程命令行工具:secureCRT 远程ftp:FileZiila 远程编辑工具:
UltraEdit
NotePad++ 远程界面工具
Xmanage

五,深入讲解linux的命令

用户和组
–linux系统上,创建用户的时候。默认情况会给我们创建一个用户组(用户组和用户的名称相同)。
///////////////////
??linux系统下面,文件类型(常见的三种类型)
????文件(-)
????目录(/)
????连接(类似windows下的快捷方式)(l)
??文件权限:
????可读(r)
????可写(w)
????可执行(x)
???? -:表示没有任何权限
??文件权限的数字表示:
???? R—2*2
???? W—2*1
???? X—1
??文件的归属:
????*拥有者(owner o)
????*属于组(group g)
????*其他人(other o)

drwxrwxr-x 5 hadoop002 hadoop002 4096 Mar 22 03:18 workspace3
第一部分:drwxrwxr-x
??十个字符,代表不同的意义:
????d:文件类型(文件夹)
????wxr
????rwx
????r-x
??后面的9个字符,分为三组(一个文件对用户来说分为三部分,拥有者,所属组,其他人),表示此文件针对不同用户的权限
第二部分:hadoop002 hadoop002
??第一个字符串表示的是文件的拥有者
??第二个字符串表示的是文件的所属组
第三部分:4096—文件大小
第四部分:Mar 22 03:18—创建日期
第五部分:workspace3—文件名称
//////////////////
设置文件对不同用户的权限:
字符形式:

#chmod g-w workspace3  //同组用户不能有写的权限
#chmod o-r workspace3  //其他用户不能读

数字形式:

#chmod 664 workspace3  //自己和组可读可写,其他的只读
改变文件拥有者和所属组
#chown hadoop002 xx.txt    //修改文件的所有者
#chown hadoop002:hadoop002 xx.txt    //修改文件的所有者和所有组
#chgrp hadoop002 xx.txt    //修改文件的所有组

#chown -R hadoop002 xx    //修改文件目录的所有者
#chgrp -R hadoop002 xx    //修改文件目录的所有组
文件的创建

touch xxx.txt
vi xxx.txt


追加文件类容
echo 'xxxxxxxxx' >>xxx.txt

编辑文件

vi xx.txt  //dd:表示删除贯标所在的一行
           //ZZ:保存文件内容
           //x:删除光标处的字符
           //o:光标下一行插入内容
vim xx.txt
查看文件的内容
cat xx.txt  //查看文件的全部内容
more xx.txt  //翻页显示文件内容
tail -200f xx.txt //查看末尾的内容,适用于查看服务实时动态日志信息
head xx.txt //查看头部的内容,适用于查看文件的格式
创建目录,文件拷贝,移动,重命名
mkdir filename   //创建一个目录
mkdir -p /file/file/file   //创建多级目录

“`
cp test.txt Desktop/ //拷贝一个文件到一个目录
cp -r directoryname directoryname //讲一个目录的所有内容拷贝到另外一个目录
cp test.txt xxx.txt //拷贝一个文件的内容到另一个文件内容

```
mv test.txt test.log  //重命名,两个文件在同一个目录下
mv test.txt /opt   //移动,两个文件不再同一个目录下
文件的删除
rmdir test   //删除目录,test必须是空目录,不然删除不成功
rm -rf src   //强制递归删除  src最好是绝对路径
创建连接(ln)
软连接 soft link: ln -s file/dir file
ln -s xx.txt xx.soft

硬连接 hard link:ln file/dir file

ln xx.txt xx.soft

使用场景:
hadoop/conf hbase/conf
core-site.xml ln->core-site.xml
这样的好处保持数据的一致性

搜索文件
find /opt -name xxx.txt  //搜索某一个文件
find /opt -name xxx\*    //  \转义字符
一些系统命令
uname   //查看操作系统
uname -r  //查看内核版本 
cat /proc/cpuinfo   //查看cpu的信息
cat /proc/meminfo   //查看内存信息
date   //查看日期
date -R   //查看日期和时区
# date -s 2016-03-28   //设置系统日期
# date -s 16:55:40   //设置系统时间
cal 2016   //显示日历表
df -lh   //查看磁盘信息
du -sh /home   //查看某个目录的可用空间
# fdisk -ls
# fsck /dev/sda3  //修复磁盘
# mount   //查看挂在信息
# mount /dev/sdb1 /data01   //挂载磁盘到某个目录下
# unmount /dev/sdb1   //卸载某个磁盘
free   //查看内存使用情况
top   //查看进程的内存使用情况
cd /etc/sysconfig/network-scripts/    //该目录下都是网卡相关信息
设置普通用户的sudo权限
su root
chmod u+w /etc/sudoers   //添加写权限
vi /etc/sudoers  
--linux ALL=(root)NOPASSWD:ALL   //在第一行添加
chmod u-w /etc/sudoers
查看和设置防火墙
sudo service iptables status  //查看防火墙的状态
sudo service iptables stop  //临时停止防火墙
sudo chkconfig iptables off|on   //永久性设置防火墙状态
sudo service iptables start  //启动防火墙
selinux设置
sudo vi /etc/sysconfig/selinux
--SELINUX=disabled   //禁用
sudo reboot    //重启机器生效

六,linux环境下的软件安装方式

第一种安装方式:rpm
rpm -qa|grep java   //检查某个软件是否安装
rpm -e --nodes xxxxxx    //卸载已经安装的软件
rpm -ivh xxxxx.rpm   //安装软件
第二种:tar包安装
unzip xxxxx.zip   //解压zip软件
zip xxxxx.zip file   //压缩zip文件
tar -zxvf xxxxx.tar.gz    //解压到当前目录
tar -zxvf xxxxx.tar.gz -C dir    //解压到指定目录
tar -zcvf xxxxx.tar.gz dir    //压缩指定文件
第三种安装方式:yum安装
–需要配置源
–解决了软件包的依赖关系以及各个软件的安装顺序

七,linux下的定时任务crontab

1,创建一个定时任务

crontable -e     //创建定时任务
--*/1 * * * * /bin/date >> /home/linux/crontab001.txt
tail -f /home/linux/crontab001.txt
crontab -l    //显示目前所有的定时任务
crontab -r    //删除所有的定时任务

语法:* * * * * command :
1) *—–执行的分钟1-59

*/10   //每10分钟执行一次

2) *—–执行的小时 0-23
3) *—–执行的日 1-31
4) *—–执行的月 1-12
5) *—–执行的星期 0-6

30 21 * * * cmd01  //每天的21:30执行
30 2 1,11,21 * * cmd02  //每个月的1,11,21号的2:30执行
45 1 * * 6,0 cmd03 //每周六或周日的1:45执行
0,30 20-23 * * * cmd04 //20:00到23:00之间每半小时执行一次
* */1 * * * cmd05  //每个小时执行一次

八,shell基础编程

shell脚本概述
1,以文件形式存放的批量的linux命令集合,可以被shell解释执行
2,通常由一段linux命令,shell命令,控制语句和注释语句构成
3,通常以.sh作为后缀

shell程序
第一行:#!/bin/sh=======#!/bin/bash

变量命名
1,变量名称必须以字母或者下划线开头,后面可以跟字母,数字或者下划线。任何其他字符都标志变量名的结束。
2,变量名对大小写敏感
name=xingyunfei
echo $name
echo ${name}

3,变量赋值:等号两边不能有空格 如果要赋空值,可以在等号后面跟一个换行符
4,显示变量的值:echo variable或echo{variable}
5,清除变量:unset variable
- 变量类型
1,根据变量的作用域,变量可以分为本地变量和环境变量
2,本地变量只在创建他们的shell程序中可用。二环境变量则在shell中的所有用户进程中可用,通常也称为全局变量。(按照惯例需要大写)

位置参量
1,在脚本中使用位置参量时,需通过位置参量来引用。例如:1表示第一个参数,2表示第二个参数,第10个以后的位置参量以${10}来表示
vi param.sh

param.sh

#!/bin/bash
echo "hello $1   !!!!"
./param.sh xingyunfei
./param.sh "xingyunfei001 xingyunfei002"
. param.sh xingyunfei
sh param.sh xingyunfei

执行结果
001.jpg-15.9kB

位置参量列表:
001.jpg-30.7kBvcWxvrXEt7W72MLryKG+9tPa1+6689K7uPbD/MHutcS3tbvYwus8YnIgLz4NCiZuZGFzaDuzzNDyv9jWxre1u9jC6zpleGl0IE48YnIgLz4NCiZuZGFzaDs9Pc3Ls/bXtMysMLPJuaYgzuW07c7zPGJyIC8+DQombmRhc2g7PT3Ny7P217TMrLTz09owLsqnsNyjrMSztKbT0LTtzvM8L3A+DQrK/dfpDQo8cHJlIGNsYXNzPQ=="brush:java;"> arr=(001 002 003) echo ${arr[0]} echo ${arr[*]} //显示所有元素 echo ${#arr[*]} //显示数组的长度 arr[0]=000 //赋值 日期标准化

man date
date +%Y-%m-%d   //2016-03-28
date +%Y-%m-%dT%H:%M:%S  //2016-03-28T09:31:04

-创建datestu.sh

vi datestu.sh

-datestu.sh

#!/bin/bash
date1=$(date +%Y-%m-%d)
echo ${date1}

##2 days ago
date2=$(date --date="2 days ago" +%Y-%m-%d)
echo ${date2}

##2 days later
date3=$(date --date="-2 days ago" +%Y-%m-%d)
echo ${date3}

-执行

sh datestu.sh

001.jpg-5.1kB

判断

-1,test:
001.jpg-27.2kB

001.jpg-30.3kB

-2,判断符号[]
001.jpg-29.2kB

[linux@localhost ~]$ [ -z "$xingyunfei" ]; echo "22222222222"

-3,if判断
语法–单层判断:if[条件判断式];then 当条件判断成立时,可以进行的指令工作内容;
fi<====if结束
语法–多层,复杂判断:if[条件判断式];then 当条件判断成立时,可以进行的指令工作内容;
elif [条件判断式2] then 当条件判断不成立时,可以进行的指令工作内容;
else 当条件判断不成立时,可以进行的指令工作内容;
fi<====if结束

循环
-1,for循环
#!/bin/bash
for var in 1 2 3
do
    echo ${var}
done

001.jpg-3.8kB

#!/bin/bash
num=10
sum=0
for ((i=0;i<${num};i=i+1))
do
    sum=$((${sum}+${i}))
done

echo ${sum}

001.jpg-3.5kB

-2,while循环
语法1:

while[condition] <===判断条件  当条件成立时执行
do
    程序段落
done

语法2:

while until [condition] <===判断条件  当条件成立时终止循环
do
    程序段落
done
#!/bin/bash
file=/home/linux/crontab001.txt
cat ${file} | while read line
do
    echo ${line}
done

001.jpg-5.8kB

相关内容