解锁式学习
1人加入学习
(0人评价)
Linux基础
价格 免费
该课程属于 949-刘同学-python方向-python数据分析-就业:否 请加入后再学习

1. 虚拟机重启错误:

由于磁盘有损坏

修复磁盘:

step1:回车后输入root密码

step2:fsck /dev/sda2

step3:fix<y>? yes

step 4:reboot

 

#### shell基础编程

1. shell程序介绍

(1)shell程序时已文件形式存放批量的linux命令集合,该文件能够被shell解释执行,这种文件就是shell脚本程序,shell文件是文本文件

(2)shell程序通常由一段Linux命令,Shell命令、控制语句以及注释语句构成

(3)shell脚本是纯文本文件,可以使用任何编译器编写,通常以.sh作为后缀名

(4)第一行:指定用哪个程序来编译和执行脚本

#!/bin/bash

#!/bin/sh

(4)除第一行外,使用#表示注释

(5)执行脚本的三种方式

① $ ./test.sh

② $ . test.sh

③ $ sh test.sh

2. 变量的使用

(1)变量名必以字母或下划线开头,后面可以跟字母,数字或下划线。

(2)对大小写敏感

(3)变量的赋值(等号两边不能有空格):$ x=123

变量值的回显:$ echo ${sex}或$ echo $sex

(4)变量作用域

本地变量:只在创建它们的shell程序可用

环境变量(全局变量):在shell的所有用户进程中可用,如果父shell进程产生了子shell进程,则环境变量可被“继承”并复制。环境变量按照惯例需要大写

(5)清除变量:unset variable

(6)显示所有变量:set

3. 位置参量

(1)位置参量是一组特殊的内置变量,通常被shell脚本用来从命令行接收参数,或被函数用来保存传递给它的参数

(2)执行shell脚本时,用户可以通过命令行向脚本传递信息,跟在脚本后面的用空格隔开的字符串都成为位置参量

(3)脚本使用这些参数时,需要通过位置参量引用:$1表示第一个参数,$2表示第二个参数,从${10}开始,需要用花括号括起来

(4)表示位置参数的个数:$#

(5)以单个字符串显示所有位置参量:$*

(6)脚本运行的当前进程号:$$

(7)表示最后一个后台运行的进程的进程号:$!

(8)显示前面最后一个命令的退出状态,0表示没有错误,其他任何值表示有错误:$?

应用中通常会在关键步骤后判定$?,以确定关键步骤的执行是否正常。尤其是调度系统里需要监控sh返回码

shell脚本的返回码取决于最后一个命令的返回码

(9)如果位置参数中有空格,需要用引号引起

 

4. 数组

$ arr=(zhangsan lisi wangwu)  //数组赋值

$ echo ${arr[0]}  //读取数组中第一个元素

$ echo ${arr[*]}  //显示数组中的所有字符

$ echo ${#arr[*]}  //显示数组中字符个数

$ arr[0]=zhaoliu  //更改第一位元素

 

5. date(时间)

(1)e.g.以年月日时分表的形式展示时间

$ date +%Y/%m/%dT%H:%M:%S

(2)显示时间变量

date1=$(date +%Y/%m/%dT%H:%M:%S)

echo ${date1}

(3)显示两天前的日期

date2=$(date --date='2 days ago' +%Y/%m/%d)

echo ${date2}

(3)显示一天后的日期

date3=$(date --date='-1 days ago' +%Y/%m/%d)

//或

date3=$(date --date='1 days' +%Y/%m/%d)

echo ${date3}

(4)查看日历

$ cal 12 2020

6. 判断

【1】文档类型的判断

(1)判断某个文件是否存在:test -e filename

或:[-e filename]

(2)判断某个文档是否存在且为档案:test -

f filename

(3)判断某个文件是否存在且为目录:test -d filename

【2】文档权限的判断

(1)判断某个文档是否有可读权限:-r

(2)判断某个文档是否有可写权限:-w

(3)判断某个文档是否有可执行权限:-x

【3】两个整数间的判定

(1)两数值相等:-eq

(2)两数值不等:-ne

(3)n1大于n2:-gt

(4)n1小于n2:-lt

【4】判定字符串的数据

(1)判断字符串是否为0,若为空则true:test -z string

(2)判断字符串是否非0莫若为空则false:test -n string

(3)判断str1是否等于str2,若相等则返回true:test str1=str2

(4)判断str1是否不等于str2,若相等则返回false:test str1!=str2

(5)if判断

if...; then...;

elif...;then...;

else...;

fi

7.循环

【1】for循环

(1)

for var in 1 2 3 4 5

do

    echo ${var}

done

(2)

num=10

s=0

for((i=0; i<${num}; i=i+1))

do

    s=$((${s}+${i}))

done

【2】while循环

while[condition]

do

    程序段落

done

【3】until循环

until[condition]

do

    程序段落

done

【4】while read line 从文件或命令中逐行读取

(1)

cat file | while read line

do

echo $line

done

(2)cat 'ls ./*.txt' | while read line

do echo $line

done

 

[展开全文]

系统管理

1. 系统信息查看命令

uname:显示系统

uname -r:显示内核版本

cat /proc/cpuinfo:服务器信息

cat /proc/meminfo:查看内存信息 

date:显示系统日期起

data -R:显示时区时间

cal 2015:显示某年的日历表

date -s:设置日期和时间(必须要root用户)

2. 磁盘相关

df -lh:查看磁盘的使用情况

dh -sh:预估使用空间的大小

fdisk -l:挂载(只能在root目录下使用)

fsck  /dev/sda3:自动修复磁盘(使用root用户)

mount:查看挂载磁盘信息

mount /dev/sdb1 /data01:挂载某个设备

nmount /dev/sdb1:写在磁盘

3. 内存相关

free -m:看系统内存使用情况

M:各个进程内存的详细使用情况

4. linux下软件安装三种方式

① RPM命令

  * rpm -qa|grep ××:检查某个软件是否安装

  * rpm -e --nodeps ××:卸载已安装的软件

  * rpm -ivh ×××.rpm:安装软件

② tar包(不推荐用源码编译方式安装软件)

  * tar

    * tar -zxvf ××.tar.gz:解压到当前目录

    * tar -zxvf ××.tar.gz -C dir:解压到指定目录

    * tar -zcvf zzzz.tar.gz dir:压缩

  * 源码

  * 编译

  * zip软件的解压

    * unzip ××.zip:解压

    * zip ××.zip:解压

③ yum(需要配置源,自动解决软件包依赖关系以及各个软件的安装顺序)

 

如何设置普通用户的sudo权限

$ su

# vi/etc/sudoers

    在第一行细啊添加内容:

beifeng ALL = (root)NOPASSWD: ALL

 

防火墙

  * $ sudo service iptables status:查看防火墙的状态

  * $ sudo service iptables stop:关闭防火墙

  * $ sudo service iptables start:重启防火墙

  * $ sudo service iptables off|on:永久关闭|开启防火墙

  * SELINUX 禁用

$ sudo vi /etc/sysconfig/selinux

SELINUX = disabled

sudo reboot

 

定时任务

在linux中,自带的调度功能,crontab

针对用户:每个用户都可以调度自己的任务

e.g.在beifeng用户下创建定时任务,每分钟执行一次,将时间写入到指定文件中

$ crontab -e

### first crobtab

* /1 * * * * /bin/date >> /home/beifeng/bf-log.txt

列出当前所有的定时任务

$ crontab -l

* /1 * * * * /bin/date >> /home/beifeng/bf-log.txt

删除所有的定时任务

$ crontab -r

 

crontab的基本定义

语法:* * * * * command

说明:

(1)六个字段之间使用逗号隔开

(2)第一个星:代表执行的分钟(1-59)

每十分钟:*/10

(3)第二个星:代表执行的小时(0-23)

每两小时:*/2

(3)第三个星:代表执行的日(1-31)

(3)第四个星:代表执行的月(1-12)

(3)第五个星:代表执行的是周几(0-6)

e.g.1 每天21:30执行

30 21 * * * cmd01

e.g.2 每个月1,11,21的2:30执行

30 2 1,11,21  * * cmd02

e.g.3 每周六或者周日,1:45执行

45 1 * * 6,0 cmd03

e.g.4 每天20:00至23:00,每半个小时执行一次

0,30 20-23 * * *cmd04

e.g.4 每天每一个小时执行一次

* * /1 * * cmd05

 

 

 

[展开全文]

用户和组

linux系统行,创建用户的时候,默认情况会给我们创建一个用户组(名称与用户名称相同)

 

文件

在linux系统下面,文件类型(常见三种类型)

  * 文件:_

  * 目录(类似win7下的文件夹):d

  * 链接(类似win7下的快捷方式):l

    * 创建连接 $ ln

        * 软链接 soft link

        * 硬链接 hard link

区别:删除链接时是否删除源文件

e.g. 创建一个软链接

  $ ln -s file/dir linkName

      创建一个硬链接,相当于拷贝一个文件

          * 使用场景:保证一致性

 

 

文件搜索

  * find

    find ~/ -name file

    find ~/ -name file\*

 

 

 

文件权限:

  * 可读 r

  * 可写 w

  * 可执行(脚本,比如shell脚本) x

  * 特殊字符 - 表示没有任何权限

  * 权限的数字表示方法

  * 二进制数字之和的方式:

r = 4,w = 2, x = 1

 

 

文件的归属

  * 拥有者 u

  * 属于组 g

  * 其他人 o

 

 

为什么是三组?

因为一个文件对于用户来说,三个部分

  * 拥有者

  * 所属组

  * 其他人

 

第一部分:

-rw-rw-r--是个字符,代表不容的意义

第一字符:表示文件的类型

后面的九个字符分为三组,不表示此文件针对不同用户的权限关系

第二部分:

  * 第一个字符串:文件的拥有者

  * 第二个字符串:文件所属组

 

 

 

* man  查询语句作用

*对命令行来说,有自动补全功能,Tab 

如何设置文件对不同用户的权限

    需要使用root用户

# chmod命令

    change mode

e.g:需求:对于同组用户来说,仅仅可读,对于其他用户来说,既不可读,也不可写

① 字母形式修改

# chmod g-w hive-select-log.sql

# chmod o-r hive-select-log.sql

②数值形式修改

# chmod 664 hive-select-log.sql

 

 

拷贝文件:

$ cp hive-select-log.sql /home

              原文件                目标

 

 

改变文件的拥有者和所属组

命令

    # chown

    # chgrp

如果针对目录

    # chown -R

案例:将/home/hive-select-log.sql 拥有者和所属设置为senior用户和senior组可使用一条命令操作完成:

# chown senior: senior /home/hive-select-log.sql

 

 

 

 

如果针对一个目录设置权限呢?目录中有很多文件,需要同样的权限设置

-R, --recursive 递归

      change files and directories recursively

  # chmod -R 664 /opt/softwares

 

 

 

文件创建

  * 使用touch命令

    $ touch test.data

  * 使用vi/vim方式

    $ vi test.data

  * 对文件的内容进行追加

    $ echo '001' >>text.txt

  * 编辑文件内容 vi/vim

    快捷键(在vi查看模式下)

       * dd:删除光标所在的行的内容

       * ZZ:保存文件内容

       * x:表示将光标处的字符删除

       * o:在光标的下一行插入数据

 

查看文件内容的常见方式

  * cat:查看文件的全部内容,文件内容比较少时用

  * more:翻页查看,文件内容比较大时用

  * tail:看文件末尾内容,通常与-f参数连用,适合于查看服务实时动态日志信息

    e.g. tail -f abcd.log

           tail -200f yyy.log

  * head:文件开头,文件格式,查看内容模板样式

 

 

文件的拷贝,移动,重命名

  * 拷贝:cp source dest

其中dest可以是文件,也可以是一个目录

(1)拷贝一个文件到目录中

    $ cp test.txt test-dir

(2)拷贝一个文件的内容到文件中(新文件)

    $ cp test.txt cp-tsts.txt

(3)拷贝一个目录

    $ cp -r test-dir test-dir2

  * 移动或重命名:mv src dest

    * 重命名 src和dest在同一目录下 

      $ mv test-dir/ sub-dir

      $ mv test.txt/ test.log

      * 移动 src和dest不同一目录下,或者

      $ mv test-dir2/ sub-dir/test-dir

 

 

文件的删除

$ emdie test-dir

rmdir 注意删除的目录必须是空目录

$ rm -rf src

使用的时候:src最好是绝对路径,确定好以后再删除

 

 

 

 

创建目录

  * mkdir test

  * 创建多级目录

    $ mkdir -p ~/data/dfs/tmp

[展开全文]

Linux用户(多用户)

对于Linux系统安装时,有一个默认的超管管理员用户root

root/123456

虚拟机链接网络,可以是内网或外网,有一个IP地址即可,外面系统(win7)能够远程连接即可

 

[root@promote Desktop]#

 用户名  主机名称   目录名称 

 

最后有两个字符:

  #:表示当前用户是root用户,超级管理员用户,对系统进行配置,管理的时候,用配置用户

  $:表示用户属于普通用户

 

查询ip地址:# ifconfig

类似于在win系统下,查看ip地址的命令:ipconfig

自动获取ip地址 --可以连接互联网

 

自动获取ip地址有时会进行改变,需要设置固定的ip地址 

手动设置ip地址以后,虚拟机不能链接到互联网

 

 

linux基本命令

清理屏幕:

# clear

创建用户

#useradd beifen

对linux下每个用户,都有密码

#passwd beifen

在linux下,默认情况下,创建一个用户的同时会给用户在系统的目录下创建一个属于自己的用户目录,该目录称为用户主目录

用户名规则:/home/username,用户主目录可以用~进行表示

 

linux系统的显示主机名称:

 1. 查看主机名称

 #|$ hostname

 2. 设置主机名称

 # hostname hadoop-senior.ibeifeng.com

此种方式设置主机名称,仅仅在当前使用没有问题,当重启机器时,主机名称会变化

原因:在linux系统中,系统的配置信息都是来自于文件中,这种设置方式没有写在文件中,所以会变。

永久不会变的方法:

  # cat  /etc/sysconfig/network

# cat 读取linux系统上文件内容的命令

linux下编辑工具VI

  #vi filename

  进入编辑插入模式

       i  --编辑

       hostname = hadoop - senior.ibeifrn.com

       :wq -- 保存

        esc -- 退出

 不保存文件

        :q!

 重启系统

 *关机

       #halt

  *重启

       #reboot

       #reboot

 

远程链接工具

    辅助进行系统使用,方便操作

四大远程链接工具

    远程链接的四要素

        *ip地址

        *用户名

        *密码

        *协议ip

    *远程命令行工具

         SecureCRT

         注意事项,当第一次远程链接到linux系统时,进入当前用户的主目录

         远程FTP

         File Transfer Protocol

          远程编辑工具:

          NotePad++

           ULtraEdit

          远程界面工具:

           Xmanager4 

 

 

 

 主机名和ip地址的映射

      hadoop - senior.ibeifeng.com

      192.169.217.110

      配置文件

      /etc/hosts 

      192.168.217.110  hadoop-senior.ibeifeng.com  hadoop-senior

  win7系统

        c:\windows\system32\drivers\etc\host

         192.168.217.110 hadoop-senior.ibeifeng.com  hadoop-senior

 

 

切换用户

#|$  su - beifen

直接切换到root用户 $  su

从管理员用户切换到普通用户不需要密码,从普通用户切换到管理员用户需要密码

显示当前用户所在目录

$|# pwd

 

当前目录下有哪些文件

ls   - list

ls-l

ll   - 详细信息

lt   - 按时间顺序

ls-a   -显示多有目录,多了一些以.开头的文件,隐藏文件

特殊目录标识符:

. :一个点,表示的是当前目录

.. :两个点,表示上级(父亲)目录。

切换目录:

ds dirName

创建文件:

touch

[展开全文]

授课教师

高级算法工程师
老师

课程特色

考试(5)
图文(1)
视频(4)
作业(3)

最新学员

学员动态

巴拉巴拉 的作业"每日作业"已被批阅
巴拉巴拉 的作业"每日作业"已被批阅
巴拉巴拉 的作业"每日作业"已被批阅
巴拉巴拉 开始学习 每日作业