zoukankan      html  css  js  c++  java
  • Linux 学习

    1.1 文件创建

    命令 含义
    touch *.txt 重建空文件
    echo 111>a.txt 新内容覆盖
    echo 111>>a.txt 新内容追加
    ll -h 以可读的方式展示文件大小

    1.2 vi 使用

    Vi命令
    i 进入编辑模式
    o 在下一行新行进入编辑模式
    dd 删除当前行
    yy 赋值当前行
    pp 粘贴
       

    1.3 查看文件命令

    • 查看文件内容 cat
    • 分页查看 more
    • 分页查看(功能更强大)less b上翻一页 空格下翻一页 ↑上一行 ↓一行 gg跳到文档开头 G跳到文件末尾 /查询

    1.4 动态查看文件命令

    tail -f  (按文件id)查看文件
    tail -F (按文件名)查看文件
    tail -n 查看后n行
    head -n 查看头n行

    1.5 文件压缩解压缩

    gzip a.txt 压缩文件
    gunzip aa.gz 解压文件
    tar -cvf aa.rar a.txt b.txt 打包多个文件到一个文件中
    tar -xvf aa.rar -C 将打包文件解包
    tar -zxvf aa.gz  将压缩包文件解压缩
    tar -zcvf aa.rar.gz a.txt b.txt 打包压缩多个文件到一个文件中

    1.6 文件命令查找

    使用相对或绝对命令指定脚本文件,并注意文件有可执行权限
    /root/hello.sh ./hello.sh
    或者编辑/etc/profile 添加 PATH=$PATH:/root 将文件路径添加到查找路径中

    1.8 文件权限

    • useradd xiaozhao
    • passwd xiaozhao

    xiaozhao 创建一个文件,其他用户默认不能修改,但root用户除外
    root在xiaozhao目录下创建文件,xiaozhao无修改权限,但有删除权限

    1.9 文件权限配置

    -rwxr-xr--

    • 第一位 d:文件夹 -:文件 l:链接
    • rwx 文件拥有者权限
    • r-x 文件拥有者所在组权限
    • r-- 其他用户权限

    也可以用754表示,将二进制表示为10进制

    2.0 文件权限修改命令

    • chmod u+x a.txt 给文件拥有者添加可执行权限(u/g/o,+/-添加或去除)
    • chmod 777 a.txt 给文件设置权限
    • chown xiaozhao:xiaozhao a.txt 修改文件拥有者和拥有组

    2.1 权限管理(文件夹和文件)

    • r:对文件可读,文件夹是否可以ls
    • w:对文件可写,文件夹下是否可以增删文件
    • x:文件是否可执行,文件夹是否允许cd

    2.2 用户权限控制

    只能root操作才能操作

    1)增加用户

    • useradd spark
    • passwd spark

    2)删除用户

    • userdel spark (删除后用户用不了)
    • userdel -r spark (-r表示将用户和用户目录全部删除)

    3)查看用户组

    • groups 查看当前用户所在组
    • groups tomcat 查看Tomcat的组信息

    4)创建组

    • groupadd america
    • 将jerry添加在america组中 usermod -g america jerry
    • 将tomcat添加到sys和root组中 usermod -G sys,root tomcat

    5)删除组

    将Tomcat用户从root和sys组删除

    • gpasswd -d tomcat root
    • gpasswd -d tomcat sys

    6)修改用户名

    修改tom用户的登录名为tomcat
    usermod -l tomcat tom

    7)修改组名

    将america组修改为am
    groupmod -n am america

    2.3 用户sudo权限配置

    • su xiaozhang 切换到xiaozhang用户下,需要知道xiaozhang密码
    • exit 退出xiazhang账户回到原账户

    弊端:在xiaozhang下执行的文件或者操作,都属于xiaozhang,后期维护困难。
    而且可能会有意外,切换到root目录下,电脑未关,他人操作,造成危险

    若用户未在/etc/sudoers配置权限,执行sudo命令,会给系统管理员发邮件,并且用户执行不了,系统管理员可以在
    /var/spool/mail/root 下查看

    • root管理员给hadoop用户授予sudo权限

      用root编辑vi /etc/sudoers

    #为hadoop用户添加一行即可
    root ALL=(ALL) ALL
    hadoop ALL=(ALL) ALL
    • 然后hadoop用户就可以用sudo来执行系统级命令

        sudo useradd xiaohu

    2.4 外部数设备挂载

    含义:将外部设备内容映射到文件系统中
    可以挂载光盘、硬盘、磁盘、光盘镜像等

    • 挂载光驱
    1. mkdir /mnt/cdrom 创建文件夹用来挂载外部系统内容
    2. mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom

        将设备/dev/cdroom(-t iso9660 指定设备类型为iso9660)以只读(-o ro/loop)的方式挂载到/mnt/cdrom文件夹下

    • 挂载光盘镜像文件(.iso文件)
    1. mount -t iso9660 -o loop /home/hadoop/Centos-6.7.DVD.iso /mnt/cdrom
    2. 注意:挂载的资源再重启后就会失效,需要重新挂载,想自动挂载,需修改/etc/fstab配置文件,例如:

         /dev/cdrom /mnt/cdroom iso9660 defaults 0 0

    • 卸载 umount

        umount /mnt/cdrom

    2.5 磁盘空间查看

    • ll aaa 展示文件本身大小(描述性信息),当里面文件比较多的话,占用空间就会比较大
    • du -sh aaa 查看aaa文件夹有多大(-s(samary)汇总)
    • du -sh /* 查看根目录下所有子文件夹大小
    • df -h 显示磁盘盘(分区)剩余空间

    2.6 系统服务管理

    services.msc 查看windows大量后台服务

    • service --status-all # 查看系统所有的后台服务进程
    • service sshd status # 查看指定的后台服务(ssh服务)进程的状态
    • service sshd stop
    • service sshd start
    • service sshd restart

    配后台服务进程的开机自启

    • chkconfig --list # 显示服务开机开启状态
    • chkconfig httpd on # 让httpd服务开机自启
    • chkconfig httpd off # 让httpd服务开机不自启
    • chkconfig --list|grep httpd
    • chkconfig --level 35 httpd on #设置httpd服务在35模式下开机自启动


    2.7 进程管理

    • top 类似于任务管理器(展示消耗资源最多的进程资源占用情况)
    • free -m(/h)查看剩余的内存空间
    • ps -ef 查看所有进程
    • ps -ef|grep ssh(搜索指定进程,找出进程号)
    • kill -9 2358 #将指定进程号的进程杀死(9是不管什么原因都将进程杀死)
    • pstree 显示进程树
    • iptables 防火墙服务()

    2.8 软件安装及远程登录

    hostname xiaozhao 重命名主机名

    软件安装

    1)远程联网安装
    若服务器已联网,则可直接通过yum install 软件名安装即可
    若不知道自己应该安装那个,可通过yum list|grep ssh查看远端仓库存储的文件

    原理:远端搭建一个web服务器,将软件包放在指定目录下,同时提供软件包目录索引,远程通过http访问的方式,下载相应软件包
    及相关依赖

    2)本地安装

    若服务器没有联网,则可通过搭建本地库的方式进行安装

    将光盘挂载到指定目录

    mount -t ios9660 -o loop /dev/cdrom /mnt/centosdvd1/

    cd /etc/yum.repos.d/
    失效原有加载配置
    rename .repo .repo.bak *(将当前文件夹下所有以.repo结尾的文件修改为.repo.bak)
    cp centos_demia.repo.bak local.repo
    vi local.repo

    baseurl=file:///mnt/centosdvd1 设置加载地址
    gpgcheck=0 设置免校验
    enable=1 设置生效

    yum install openssh-clients.x86_64 -y(跳过询问,默认执行)安装ssh客户端

    ssh (xiaozhao/root/)192.168.33.101

    • exit 注销
    • halt 关机
    • reboot重启
    • ipconfig 查看ip地址
    • secureCRT 是一个SSH客户端

    虚拟机克隆
    1.停掉原虚拟机
    2.在vmwarede 的机器列表原虚拟机上点右键,选择管理--克隆
    3.在新机器中修改网卡硬件信息,及网卡的ip配置(因为克隆后会生成一块新的网卡信息,老的网卡信息也保留,我们要删除老的网
    卡信息)

    • 修改网卡硬件信息:

        vi /etc/udev/rules.d/70-persistent-net.rules
        删除eth0那一条,更改eth1为eth0

    • 修改ip配置

        vi /etc/sysconfig/network-scripts/ifcfg-eth0

    • 删除HWADDR,UUID
    • 更改IPADDR的值

    因为两个机器在相同的网关下,所以可以ping通,也可以跟windows主机ping通

    2.9 ssh 免密登录


    原理:假如有两台机器 client01,server01,现在client01想免密登录到server01上
    1.client01用户生成一对公钥 ssh-keygen
    2.client01将公钥拷贝到目标机器server01上 ssh-copy-id 192.168.33.101
    3.目标机器server01将client01的公钥放入授权池中~/.ssh/authorized_keys

    免密登录流程
    1.client01通过ssh命令登录到server01 ssh 192.168.33.101
    2.server01检查授权池中是否有client01对应的公钥
    3.server01用公钥加密一个随机字符串发送到登录方client01
    4.client01用私钥解密字符串并发送回server01
    5.server01验证成功,建立远程连接

    rm -rf * 删除当前文件夹下的所有文件

    • 远程登录

        sh root@192.168.33.101
        ssh 192.168.33.101

    • 远程拷贝文件

        scp aa.txt 192.168.33.101:/root
        scp -r aaa/ 192.168.33.101:/root(远程拷贝目录)

    • 远程执行命令

        ssh 192.168.33.101 "echo 1111 > /root/666.txt"

    3.0 网络管理

    主机名配置

    • 查看主机名 hostname
    • 修改主机名 hostname hadoop(临时修改)
    • 长久修改主机名(重启后永久生效)

        修改配置文件 /etc/sysconfig/network
        hostname=hadoop

    IP地址配置

    域名配置

    你在浏览器中输入www.baidu.com解析过程如下:
    1.首先在从域名映射文件hosts中查找域名对应的ip,若找到,则访问。若未找到则执行2
    2.系统访问网络配置中的DNS服务器配置,找到对应的域名服务器,由域名服务器返回要访问的IP地址(所以要想通过域名访问,一
    定要配置DNS服务器)

    secureCRT 是一个windows上的SSH客户端,
    如果不想通过ip访问 ssh 192.168.33.101,
    可通过修改windows下的host文件设置域名对应的IP地址,(192.168.33.101 hadoop)
    以后就可以通过域名访问了(ssh hadoop)

    网络服务管理
    后台服务管理

    • service network status 查看网络服务状态
    • service network stop 停止网络服务
    • service network start 启动网络服务
    • service network restart
    • service --status-all 查看所有服务状态

    设置后台服务的自动启动管理

    • chkconfig 查看所有拂去其自启配置
    • chkconfig iptables off 关掉指定服务的自动启动
    • chkconfig iptables on 开启指定服务的自动启动

    防火墙管理

    • 关闭防火墙:service iptables stop
    • 查看防火墙:service iptables status
    • 启动防火墙:service iptables start
    • 禁止防火墙开机自动启动:chkconfig iptables off

    系统中网络进程的端口监听

    • netstat -nltp 查看正在执行的网络程序(tomcat/redis等)监听端口
    • -n 打印程序名字
    • -l 查看监听端口的程序
    • -t 基于tcp
    • -p 打印端口

    httpd 静态资源服务器

    • yum list|grep httpd
    • yum install httpd.x86_64
    • service httpd start
    • service httpd status
    • netstat -nltp

    web服务器搭建流程:

    cd /var/www/html
    vi hello.html 写文件
    通过浏览器访问创建的html页面
    service iptables start 开启防火墙,则不能访问
    service iptables end 关闭防火墙,可以重新访问

    httpd web服务启动后,可通过在浏览器地址栏中输入http:hdp01或http:ip地址,访问web服务器

    3.2 定时任务

    windows定时任务 附件-任务计划-创建任务
    linux crond定时任务

    • serive crond status 查看crond任务启动状态
    • crontab -e 编写任务执行计划(语法类vi,等同 vi /var/spool/cron/root)
    • crontab -r 删除定时任务
    • yum install crontabs 远程安装crontab软件
    • srevice crond start 启动服务
    • service crond stop 停止服务
    • service crond restart 重启任务
    • service crond reload 重新加载配置
    • service crond status 查看服务状态

    命令格式
    crond [-u user] file
    crond [-u user] [-e|-l|-r]

    • -u user 设定某个用户的crond服务,默认root当前用户的crond服务
    • -e 编辑某个用户的crontab 文件内容
    • -l 显示某个用户的crontab文件内容
    • -r 删除某个用户的crontab文件内容
    • file 是命令文件的名字。表示将file作为contab的任务列表文件载入定时计划中

    配置说明

    基本格式:
    *  *    *   *    *    command
    分  时  日   月   周   命令

    • 第1列表示分钟1~59 每分钟用* 或*/1表示
    • 第2列表示小时0~23(0表示0点) 7-9表示:8点到10点之间
    • 第3列表示日期1~31
    • 第4列表示月份1~12
    • 第5列表示星期0~6(0表示星期天)
    • 第6列表示命令

    配置实例:

    • */1 * * * * date>>/root/date.txt 每分钟指定一次date命令
    • 30 21 * * * /usr/local/etc/rc.d/httpd restart 每晚21:30重启apache
    • 45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart 每月1/10/22日4:45重启
    • 10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart 每周六、周日的1:10重启
    • 0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart 每天18:00至23:00之间每隔30分钟重启
    • 0 23 * * 6 /usr/local/etc/rc.d/httpd restart 每周六23:00重启
    • * */1 * * * /usr/local/etc/rc.d/httpd restart 每小时重启
    • * 23-7/1 * * * /usr/local/etc/rc.d/httpd restart 晚上11点到早上7点之间每小时重启
    • 0 11 4 * mon-wed /usr/local/etc/rc.d/httpd restart 每月4号与每周一至周三11:00重启
    • 0 4 1 jan * /usr/local/etc/rc.d/httpd restart 一月一号4点重启apache

    secureCRT 配置:

    • ctrl+l或clear清屏
    • alt+p 弹出sftp对话框,将jdk拖拽至对话框(效果类似于put命令)
    • 如果遇到中文字符地址,可以在当前对话框上右键单击选择session options->appearance 设置编码方式

    shell编程

    vi hello.sh

    #!/bin/bash
    ls

    两种执行方式
    1)chmod +x hello.sh 增加可执行权限
      ./hello.sh 执行hello脚本
    2) 用shell解析hello文件
      sh hello.sh

    set 显示当前进程中的所有变量
    unset A 撤销变量
    a=1
    a="hello wrold"
    echo $a
    echo $a"s"(不能用echo $a+"s")
    或echo ${a}s


    hello.sh文件内容:

    #!/bin/bash
    echo $a

    1)用./hello.sh输出不了a的内容
    用. ./hello.sh可以输出a的内容
    2)source hello.sh 让hello.sh在当前bash解析,否则会产生子bash来执行(相当于将儿子拉到父亲这一级来执行)
    3)export a="hello world" 让当前bash的自变量能被所有子bash访问
    ./hello.sh可以输出a的内容

    /etc/profile文件下
    export PATH=$PATH:$JAVA_HOME/bin 作用:让当前bash的所有子bash都能访问path
    source /etc/profile 作用:生效文件,要把当前变量定义发送到当前bash这一级

    算术运算:
    1)用expr
    格式expr m + n 或$((m+n)) 注意expr运算符间要有空格
    例如计算(2+3)*4的值
    1.分布计算

    S=`expr 2 + 3`
    expr $S*4 ## *号需要转义


    2.一步完成计算

    expr= `expr 2 + 3`*4
    echo `expr\`expr 2 + 3\`*4`

    2) 用(())

    ((1+2))
    (((1+2)*4))
    count=1
    ((count++))
    echo $count
    若想渠道运算结果,需要用$引用
    a=$((1+2))


    3) 用$[]

    a=$[1+2]
    echo $a

    4)用let

    i=1
    let i++
    let i=i+2

    if-else实例
    vi welcome.sh

    #!/bin/bash
    read -p "place enter your name:" NAME # read 从控制台读入,-p 控制台打印提示语句 , 输入变量赋值给NAME
    if [ $NAME = root ] # 所有都是命令,if是命令,[]也是命令(相当于test,用来判断是否),=两边也要有空格,否则三个变量 
    当成一个变量
    then
    echo "hello $NAME,welcome!"
    elif [ $NAME = edu360 ]
    then
    echo "hello $NAME,welcome"
    else
    echo "SB,GET OUT HERE!"
    fi

    注意:卸载一行的话,用;封号分割
    bash命令,上一行执行出错,下一行仍会继续执行,不会中断

    case 实例:
    vi casedemo.sh

    #!/bin/bash
    case $1 in
    start)
    echo "starting"
    ;;
    stop)
    echo "stoping"
    ;;
    *)
    echo "usage:{start|stop}"
    esac

    执行:sh casedemo.sh start

    for 实例:
    1.方式1

    for N in 1 2 3
    do 
    echo $N
    done

    for N in 1 2 3;do echo $N;done

    for N in {1..3};do echo $N;done

    2.方式2

    for ((i=0;i<=5;i++))
    do
    echo "welcome $i times"
    done

    for ((i=0;i<=5;i++));do echo "welcome $i times";done

    函数定义
    vi funcdemo.sh

    #!/bin/sh
    #func1.sh
    hello() ## 函数定义
    {
    echo "hello there today's day is `date +%Y-%m-%d`"
    return 2 ##返回值其实是状态码,只能在[0-255]范围内
    }
    echo "now going to the function hello"
    hello
    echo $? 获取函数的return值
    echo "back from the function"

    注:脚本语言不需要编译,所以先后顺序到一句执行一句,函数定义与执行有

    yy赋值当前行
    pp粘贴

  • 相关阅读:
    致 CODING 用户的元宵问候
    持续集成之理论篇
    基于 CODING 的 Spring Boot 持续集成项目
    使用 CODING 进行 Hexo 项目的持续集成
    使用 CODING 进行 Spring Boot 项目的集成
    三种前端模块化规范
    XSS和CSRF
    小问题填坑,关于obj.x和obj["x"]
    说一个闭包在实际开发中的应用
    关于return的分号自动插入问题
  • 原文地址:https://www.cnblogs.com/itbuyixiaogong/p/9705591.html
Copyright © 2011-2022 走看看