linux学习内容总结

linux 学习内容总结:

linux 的基本介绍和安装(MobaXterm 连接跳板机)  ,linux的常用命令和权限调整,shell编程注意点,linux定时任务

linux的基本介绍

 Linux是一款广泛应用于服务器的操作系统。操作系统是硬件基础上的第一层软件,而应用软件需要安装到操作系统上才能用。 Linux 的特点: 安全    免费开源    多用户  一个用户的操作不会影响到其他用户   十分稳定而且有效率。而且作为服务器,linux 具有目前最好的生态系统,服务端的各种软件都为它而设计,默认操作系统环境为linux。

llinux 学习环境 :

采用 VMware Workstation Pro+CentOS 6.5 +MobaXterm(远程终端软件)

VMware Workstation Pro官网下载地址:

https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html

CentOS 6.5下载详解:

http://blog.csdn.net/u012453843/article/details/52819756

在VMwareWorkstationPro上安装CentOS6.5 来模拟真实的物理机器。VMware是一种虚拟机,可以在其上安装windows,也可以安装linux,数量不限。由于linux在服务器上,而服务器却在遥远的地方,所以一般不直接在其上操作,在者,也并不方便,所以在学习中采用了MobaXterm 。

如果在使用MobaXterm 时需要使用跳板机,如何加入

创建seesion:

添加跳板机秘钥文件:

在VMware安装CentOS成功之后, 登陆后修改net连接方式。nat方式是给虚拟机一个块独立的网卡 稳定 ip不变 。具体步骤:鼠标在虚拟机上右键- 》设置-》网络适配器 -》右侧选自定义vmnet8 保存虚拟机-》编辑-》虚拟网络编辑器-》更改设置-》将net8改成NAT模式  应用 确定退出  很多情况下改为 并没有生效 可以先改成桥接或其他 -》保存 然后再改回 -》保存  

修改网络成功之后,右键桌面,在弹出的列表中选择 open in Terminal,输入命令 ping+电脑的ip地址,如果成功,则说明你的net修改成功。然后再输入命令  ifconfig ,把显示的ip地址  用户 密码加入到MobaXerm 连接中即可。

linux 常用命令:

  1. cd 切换目录  cd / 根目录
                  cd ~ 家目录
           cd a/b/c   相对路径:当前目录下的a文件夹下的b文件夹下的c
           cd /a/b/c  绝对路径:根目录下的a 文件夹下的b文件夹下的c
           cd ..  回到上一级目录       cd - 回到上一层目录
  2. 查看目录
       ls 选项 -a 全部 包括隐藏文件
               -R 级联显示
       ll 详细查询 -h kb显示文件大小
  3. 创建文件夹
       mkdir  创建文件夹 mkdir -p 连续创建多层文件夹
  4. rm 删除命令 rm 删除文件 rm -r 删除文件夹
  5. cp 复制 可以复制到当前 目录 或其他目录 同时可以修改文件名  
       cp 要复制的文件名 目标目录/文件名      eg  cp file /usr/men/tmp/file1  把file文件复制到该目录下,并且把file 文件改名为file1
       cp -r 复制目录   eg      cp -r /usr/men  /usr/zh   将/usr/men下的所有文件复制到/usr/zh中
  6. mv 移动 改名    源文件被移至目标文件有两种不同的结果:
    1. 如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
    2. 如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。 详见:http://man.linuxde.net/
  7.  touch  文件名  Linux不分扩展名  创建文件
                已存在的文件名 更新  

  8. vim 编辑器 i 写入
       按esc退出
       :-> wq 保存并退出
       :-> q!强制退出

  9.   cat 查看文本内容
       cat a >  b 将a的内容给b
       cat a >> b 将a的内容追加给b

  10. tar  打包压缩   打包:将一大堆文件或目录变成一个总的文件  压缩:通过压缩算法将大文件变成一个小文件
          两个功能 一个压缩 一个是解压缩
          选项  -c 压缩   创建新的备份文件 
                 -x 解压缩  从备份中还原文件
                 -f  指备份文件  
                 -v 显示指令执行过程     -z  指以-gzip压缩                      压缩     tar -czvf    压缩后文件名  目标文件
                  解压缩   -xzvf 目标名
                 -xzvf 目标名 -C 目标目录

  11. pwd  显示当前所在位置

  12. date 指令 显示或者设置系统日期时间  格式  date <+时间日期格式>:指定显示时使用的日期时间格式   eg:  date +"%Y-%m-%d"   具体见http://man.linuxde.net/date

  13. cut  指令  用来显示行中指定部分,显示文件内容    格式    cut (选项)(参数) 选项有: -d : 指定字段的分隔符 通常使用的为“TAB”  -f :显示指定字段内容 

  14. |  两段可以放置不同的命令   把前一个命令的输出作为后一个命令的参数

用户和组的权限命令:

基本知识:

权限:通过ll或ls -l 可以查看文件的类型和权限 ,一共有10位 第一位是类型位 d 表示为目录 —表示为文件 剩下9位 每三位一组 分别表示 所属用户 (u)组 ( g) 其他 (o ) 。 权限的表示 x代表可执行 w代表可写 r代表可读 。更方便的可以使用 1 2 4来表示执行写读 这样他们的和结果组合形式只有一种可能。
所以我们还可以使用三个数字来表示755用户本身具有所有权限而组和其他都只具有执行和读权限 。

修改权限:chmod  命令  修改权限  用+增加权限,用-删除某项权限。注:权限的调整只能在root用户登陆时

具体用法  

chmod u+x,g+w fileName  //为文件f01设置自己可以执行,组员可以写入的权限

chmod u=rwx,g=rw,o=r  fileName
chmod 764 fileName
chmod a+x fileName  //对文件f01的u,g,o都设置可执行属性  

更改一个文件夹的用户所属:

chmod  hadoop:hadoop  -R  fileName

shell编程注意点

  1. 变量的创建:直接使用字母为变量命令 使用等号赋值   注意变量和等号之间不可以有空格       使用$变量名  ${变量名} 引用变量名  eg a="hello"
  2. 数组的创建:同变量的创建类似,只是用小括号中的元素表示数组中的内容   eg  array=('hh'  'qq')
  3. 变量的输出:采用echo 输出变量中的内容  eg  echo $a

  4. 变量的比较:如果是数字,采用 -gt -lt -eq,如果是字符串  采用  ==  在两端 必须有空格

  5. 函数的编写:定义函数 语法:     function 函数名 () { 函数体 }     调用函数  函数名 参数1 参数2          $1 取第一个参 echo      输出结果 $(函数名取结果)     如果函数存在返回值,那么可以在函数中使用echo语句,将结果输出到标准输出上,所以在主程序中可以使用变量接收

  6. 文件的创建编写和执行:采用vim命令可以创建一个文件,同时修改文件中用户的权限,该文件必须是可执行的文件才可以执行;编写:第一行应该写 #!/bin/bash  表示什么文件版本 #表示注释;执行:./文件名 执行可执行文件   bash 文件名 强制执行文件

  if 语法:

              if [  ]  #中括号两段要有空格

              then  要执行的语句  

              elif [  ]  

             then 要执行的语句

             else  要执行的语句

             if      表示结束

case语法:case 变量 in
                  选项1) 要执行的语句;; #注意!两个分号
                   *) default
                 esac 表示结束

while语法: while [ $i -lt 10 ]
                       do   #表示循环体开始
                    done  #表示循环体结束
    注意 在变量自增的时候   如果直接 a=$num+1   字符串拼接  a中的内容就为 1+1
        num=$(($num+1)) #当数字计算 或者 num=$[$num+1]

for语法: for n in a b c d
                  do
                   $n
                 done

注:linux中的双小括号,中括号,小括号的用法区别:转载自 http://blog.csdn.net/ztf312/article/details/52317571点击打开链接

   

 小括号:

  1. 得到命令输出   a=$(cmd)  等同于 a=$`cmd` 便是将cmd 中得到的输出结果传递给变量a
  2. 初始化数组   array=(a b c)

双小括号(()):

  1. $((exp))  只要exp是符合c语言的运算规则的表达式,运算符
  2. 省去$的算数运算  for((i=1;i <5;i++));if(($i<6));a=5 ((a++));那么a的值被更改为6

中括号 []:

  1. 字符串比较  ==和!==
  2. 数字比较   -gt  -lt  -eq
  3. 数组索引    array[0]

linux中单引号,双引号的区别:

单引号:被单引号括起来的字符都作为普通字符出现

双引号:双引号括起来的字符除了 $ ,',",,保留本身意义外,其他也当作普通字符处理。

使用范例:

判断某个文件是否存在,如果不存在,创建该文件:

-f 可用于判断文件是否存在

-d 可用于判断目录是否存在

if [ ! -f ${WORKROOT}/source_log/logs/${day}/${log_name} ]; then
	touch ${WORKROOT}/source_log/logs/${day}/${log_name}
fi

 

判断某个字符的长度是否大于10:

if [ ${#WORKROOT} -lt 10 ]; then
        exit 1
fi

 

判断传入的参数个数:

if [ $# -eq 2 ];then
        day=$1
        hour=$2
elif [ $# -eq 1 ];then
        day=$1
        hour=`date -d -1hour +%H`

else
        day=`date --date='1 days ago' +%Y%m%d`
        hour=`date -d -1hour  +%H`
fi

shell 脚本实例

输出某一段时间中的每天:

#!/bin/sh
if [ $# -eq 2 ];then
date1=$1
date2=$2
fi

echo "date1: $date1"
echo "date2: $date2"

tempdate=`date -d "-0 day $date1" +%Y%m%d`
enddate=`date -d "-0 day $date2" +%Y%m%d`
tempdateSec=`date -d "-0 day $date1" +%s`
enddateSec=`date -d "-0 day $date2" +%s`
hour=`date -d -1hour +%H`
echo "####################################"
echo 'tempdateSec:'$tempdateSec
echo 'tempdate: '$tempdate
echo 'enddate: '$enddate
echo $hour
#for i in `seq 1 130`; do
for i in `seq 1 600`; do
  if [[ $tempdateSec -gt $enddateSec ]]; then
    break
  fi

  echo $tempdate
  sh realtime_daily.sh $tempdate
  if [[ $hour -eq 23 ]]; then
     sleep 5m
  fi
  sleep 10m
  tempdate=`date -d "$i day $date1" +%Y%m%d`
  tempdateSec=`date -d "$i day $date1" +%s`
done

猜你喜欢

转载自blog.csdn.net/learner_up/article/details/79018502