zoukankan      html  css  js  c++  java
  • linux学习笔记——基础命令

    最近看了一些老男孩linux运维视频,挺不错的,特此记录一下

    linux组成
    gun组件 shell等
    linux内核
    其他软件
    
    linux主要内核:
    linux kernel2.2 
    linux kernel2.4
    linux kernel2.6
    
    发行商:
    rehat
    suse
    centos
    ubuntu
    
    rehat9.0之后分版本收费
    分为rehat3.x rehat4.x rehat5.x rehat6.x
    Fedora :rehat的一个分支,可以认为是rehat的预发布版本
    
    Centos:rehat的另外一个分支,是把rehat里面收费的东西去掉,再编译发布
    
    CentOS是国内使用最多的一套linux系统
    
    ------------------------------------------------------------
    分区
    主分区,扩展分区,逻辑分区
    egg:
    5个分区(一般最多4个主分区)
    1p+le(4个L)P1 L5 L6 L7 L8
    2p+le(3个L)  P1 P2 L5L6L7
    3p+le(2L)
    p+e<=4
    e(扩展分区)最多只能有一个
    L(逻辑分区)只能从5开始
    IDE 接口 /dev/hd
             hda 第一块盘
              hda1 第一个分区
              hda2 第二个分区
             hdb 第二块盘
    SCI 接口:SAS/SATA/SSD
             /dev/sd*
             sda 第一块盘
             sda1
             sda2
             sdb 第二块盘
    linux的分区要求
    /根分区,只有一个,存放系统程序,及文件
    交换分区swap,相当于win的虚拟内存,内存不够的时候会用到
    /boot分区,linux系统的引导分区,一般100--200M
    
    文件系统
    ext2/ext3/ext4
    ext4效率更高,建议ext4
    
             
    uname -r 内核版本
    uname -a 所有
    
    ----------------------------------------------------------
    #表示超级管理员
    echo 111 1>xx.log 2>xc.log
    1> 表示正常输出
    2>表示错误输出
    
    
    命令 --help 命令的简单帮助
    man 命令    命令帮助
    help 命令  bash的内置命令帮助
    
    
    find /root/data -type f(文件) d(目录) filename
    find /root/data -type f -exec rm -f {} ;
    按照文件类型查找
    
    -exec 对前面的结果进行处理
    rm -f 对前面的查找的内容进行处理
    {} 表示查找的内容
    ;转移
    
    特殊字符按
     让一个有意义的字符按,脱掉马甲
    比如. 当前目录,.就代表点
    
    find /root/data -type f | xargs rm -f
    xargs 把查找到结果在后面一个个处理
    
    
    find /root -type f !-name "oldgirl.txt" | xargs rm -f
    linux 命令可以接多个参数,and的作用,! 非,取反
    -a and
    -o or
    find ./ -type d maxdepth 1
    maxdepth 1 查找的深度为一级
    
    find /log -type -f -name "*.log" -mtime +7 | xargs rm -f
    
    -mtime 文件的修改时间
    
    
    -----------------------------------------------------
    grep 过滤器,linux三剑客,老三
    
    grep -v "oldbody" test.txt -v 除了oldboy
    
    -B 匹配的行前面多少行
    -A 匹配的行后面多少行
    -C 匹配的前后多少行
    -E 可以过滤多个字符串
    grep -E "hicloud|hello" xx.log
    
    grep -C 'Exception' 20 root.log
    输出异常的前后20行
    grep --color=auto "Exception" root.log  过滤的字符加颜色输出
    
    
    
    -------------------------------------------------------
    cat >test.xtx<<EOF
    test
    hello
    EOF
    
    ----------------------------------------------------
    sed命令,三剑客老二,过滤(擅长取行)
    sed -n(取消默认完整输出) '/oldboy/p' test.txt
    sed -n(取消默认完整输出) '/过滤的内容/处理的内容' test.txt
    
    -i 改变文件内容
    
    p 打印
    d delete,删除
    
    sed -n "20,30p" xx.txt 取20--30行
    
    sed 's#oldboy#oldgirl#g' xx.txt 把oldboy 替换成oldgirl,并未改变文件实体
    
    -i 改变文件实体
    -r 不用转义
    
    g 代表全局替换
    # 可以用其他符号替换,比如= / @做分隔符
    
    fing ./ -type f -name "xx.txt" | xargs sed "s#olgboy#olggirl#g"
    
    eg:
    old fff
    2old fff
    3old fff
    sed -r 's#(.*) fff#1#g' xx.txt
    1 取的是(.*)
    old
    2old
    3old
    尽可能的往后匹配
    
    
    ----------------------------------------------------
    
    mkdir -p /data01/hicloud 递归创建
    
    
    yum update -y 更新所有软件到最新版本,线上系统最好不做
    
    yum remove 会删除所有依赖的包,所以最好不用
    
    
    
    
    rpm -qa tree 查询这个包(已经安装)
    
    tree /root/ 展示目录结构
    
    
    /bin/cp /mnt/test.txt /tmp/ 覆盖copy
    cp /mnt/test.txt /tmp/
    
    env  环境变量
    
    
    alias  别名
    ll='ls -l'
    cp='cp -i'
    
    全路径可以屏蔽这个别名,所以可以直接覆盖,不再提示
    
    定义别名
    alias rm='echo "rm can not be used "'
    
    unalias 取消别名
    
    别名的位置
    cat /root/.bashrc
    所有用户生效
    /etc/bashrc  /etc/profiles
    source /etc/profiles
    
    
    ----------------------------------------------
    
    ~  用户的家目录
    
    root用户就代表 /root
    zp 用户就代表zp
    
    seq 2 5 序列
    2
    3
    4
    5
    
    seq 1 2 10 只打印奇数
    seq 2 2 10只打印偶数
    
    seq -s ":" 5   -s是指定分隔符
    
    
    {1..10}
    {a..z}
    类似seq
    
    
    -----------------------------------------------------------------
    
    awk 三剑客的老大
        一门语言,擅长过滤(取列),打印,删除
      
    awk 'print $1' 文件 $1第一列,$2第二列
    
    egg:
    oldboy oldgirl
    ddd fff
    
    awk '{print $1}' xx.txt
    结果:
    oldboy
    ddd
    
    awk -F ":" 'print $1' xx.txt 指定分隔符
    
    awk -F "[, ]" '{print $1 " " $3}' xx.log
    多个分隔符
    
    $NF 最后一列
    awk 'if(NR<31 && NR>19) prinf $1 "
    "' test.txt
    
    ls -l | awk '/^d/' 过滤目录
    
    正则表达式
    [root@oldboy ~]# echo ---1:----2|awk -F '[-:]+' '{print $2}'?????
    
    1
    
    [root@oldboy ~]# echo ---1:----2|awk -F '[-:]+' '{print $3}'
    
    2
    
    [root@oldboy ~]# echo ---1:::::2|awk -F '[-:]+' '{print $3}'
    2
    
    
    awk也可以过滤
    [root@masters ~]# ifconfig eth0 | awk '/inet addr/'
              inet addr:192.168.1.106  Bcast:192.168.1.255  Mask:255.255.255.0
    
    
    ---------------------------------------------------
    cd - 切换到上次的目录
    bash  
    which 查找命令所在的路径,PATH的路径,
    linux里面大多数的命令都会在PATH里面去找
    which cp
    whereid -b useradd
    locate useradd
    
    linux 时间同步的问题
    date -s "xxx" 设置时间
    
    echo "ssssssss" >> /var/spool/cron/root
    /dev/null 空设备 黑洞
    
    文件描述符
    ulimit -n 查看文件描述符
    调整文件描述符
    ulimit -nSH 65535
    /etc/rc.local
    less 按屏或者行查看文件
    
    
    
    ==========================================================
    用户管理
    
    useradd oldboy
    /etc/passwd
    /etc/group
    /etc/shadow
    
    添加一个用户,信息会保存在这三个文件里面
    passwd oldboy 为oldboy设置密码
    
    su - root 切换到root环境
    su 直接切换,环境变量还是原来的用户
    所以要带-
    
    
    
    
    
    --------------------------------------------------------
    
    系统的优化
    SELinux 
    /etc/selinux/config
    /etc/inittaab 运行级别,一般3模式,没桌面
    init 3,切换运行级别
    
    开机自启动:
    1,setup
    2,chkconfig
    chkconfig --level 查看服务
    chkconfig --level 235 hicloud off
    把hicloud自启动235级别的关掉
    
    
    --------------------------------------------------------
    正则表达式
    .单个任意字符
    *重复前面多个字符
    .* 匹配任意字符
    ^ 以什么开头的,^old 代表以old开头
    $ 以什么结尾的, /$ 以/结尾的
    ^$ 空行
    
    grep "0*" root.log 匹配至少前面一个0的
    grep -o "0*" root.log 精确匹配的
    [abc] 匹配括号里面任意一个字符
    [a-z] 匹配a-->z
    [^a-z] ^在括号里面是取反,即排除a-z
    0{3} 重复前面000,
    grep -E "0{3}" root.log
    
    0{3,} 至少三次
    0{,3} 之多三次
    0{3,5} 至少三次
    
    
    
    sed -n "s#^.*ddr:##g" xx.log
    
    ^.*: 以目标前的匹配
    Bc.*$目标后的匹配
    第二个#之间不要写东西,相当于把匹配的替换成空的
    [root@masters log]# 
    [root@masters log]# ifconfig | sed -n "2p" | sed -r 's#(^.*dr:)##g' | sed -r 's#( Bc.*$)##g'
    192.168.1.106 
    
    
    [root@masters ~]# ifconfig eth0 | sed -nr 's#^.*dr:(.*) Bc.*$#1#gp'
    192.168.1.106 
    1 取值(.*)
    
    sed -ir 's#()#oldboy#g' xx.txt
    r 不用转义
    
    主要就是用在三剑客上面
    
    扩展的正则表达式:
    主要是用在Egrep 或者grep-E 
    
    + 重复一个或者一个以上的前面字符
    | 查找多个字符串
    
    
    -----------------------------------------------------------
    内核
    /etc/sysctl.conf
    
    
    
    -----------------------------------------------------------
    目录:
    /etc/sysconfig/network-scripts/  网卡目录
    /etc/init.d/network restart 网卡生效
    ifdown eth0 停掉网卡
    ifup eth0 启动网卡
    
    
    /etc/resolv.conf dns配置
    /etc/hosts  相当于局域网的dns,主机名和ip的解析
    ip  域名
    192.168.1.106 hicloud.test.com
    
    
    更改主机名:
    hostname hicloud 临时生效
    /etc/sysconfig/network 永久生效
    
    
    -------------------------------------------------------------------
    
    /etc/fstab 有关文件系统的静态信息
    开机挂在磁盘,设置文件系统挂在信息的文件,使得能够开机自动挂在
    
    df -h 查看磁盘挂在信息
    
    mkfs.ext4 /dev/sbd1 格式化磁盘
    
    挂在:
    1,mount -t ext4 -o noexec /dev/sbd1 /mnt
    2.fstab
    
    设置fstab自动挂在 
    /dev/sdb1    /mnt/             ext4 defaults 0 0
    
    mount -a 自动挂在生效
    
    fstab配置错了之后,系统起不来,不能挂在网络设备,只能挂在本机设备
    1,开机提示,输入密码,修复
    2,救援模式,rescue
    
    
    
    -------------------------------------------------------
    /etc/rc.local 类似windows的启动
    开机启动:
    1,chkconfig
    2,rc.local
    
    建议 用/etc/rc.local,linux启动流程最后的加载文件
    
    ----------------------------------------------------------
    
    /etc/inittab 运行级别文件
    
    ----------------------------------------
    /etc/init.d   yum/rpm安装的大部分在这下面
    --------------------------------------------
    /etc/profile.d 登陆的时候执行下面的脚本
    
    -----------------------------------
    usr/local 相当于win prog
    
    
    
    
    --------------------------------------
    /var 路径
    /var/log/messages 系统日志
    /var/log/srcure   ssh连接日志
    /var/spool/cron/crontab 定时任务
    
    
    
    -----------------------------------------------------
    
    chkconfig
    处理的命令在/etc/init.d/
    
    sshd    0:off   1:off   2:on    3:on    4:on    5:on    6:off
    数字值的是运行级别,分别对应
    drwxr-xr-x. 2 root root  4096 Mar 21  2015 rc0.d
    drwxr-xr-x. 2 root root  4096 Mar 21  2015 rc1.d
    drwxr-xr-x. 2 root root  4096 Mar 21  2015 rc2.d
    drwxr-xr-x. 2 root root  4096 May 21 06:27 rc3.d
    drwxr-xr-x. 2 root root  4096 Mar 21  2015 rc4.d
    drwxr-xr-x. 2 root root  4096 Mar 23  2015 rc5.d
    drwxr-xr-x. 2 root root  4096 Mar 21  2015 rc6.d
    
    比如运行界别是3
    在rc3.d下面
    S***sshd-->../init.d/sshd  代表on状态
    K***sshd-->../init.d/sshd 代表off状态
    也可自己创建删除软连接,实现on off的状态
     S55sshd -> ../init.d/sshd
    55是怎么来的?
    是在服务脚本里面的配置的,前几行
    
    #!/bin/bash
    #
    # sshd          Start up the OpenSSH server daemon
    #
    # chkconfig: 2345 55 25
    # description: SSH is a protocol for secure remote shell access. 
    #              This service starts up the OpenSSH server daemon.
    #
    
    
    ----------------------------------------------------------------------
    tar 打包以及压缩,尽量切换到打包文件的上一级目录
    tar zcvf etc.tar.gz /etc 压缩
    tar tf etc.tar.gz 查看里面的文件
    
    
    ------------------------------------------
    cut
    cut -d" " -f2,3 xx.log 指定分隔符,取2,3列
    
    ----------------------------
    wc -l /etc/passwd 显示行数
    ps -ef | grep tomcat | wc -l
    
    
    
    ---------------------------
  • 相关阅读:
    Django 之Redis配置
    python之类中如何判断是函数还是方法
    Anaconda 虚拟环境安装及应用
    【转载】IDEA:XML配置提示URI is not registered
    idea中配置xml不自动提示解决方案
    Java接口成员变量和方法默认修饰符
    [转载]java中Date,SimpleDateFormat
    intellij idea 的全局搜索快捷键方法
    【转载】使用IntelliJ IDEA提示找不到struts-default文件
    【转载】Jmeter分布式部署测试-----远程连接多台电脑做压力性能测试
  • 原文地址:https://www.cnblogs.com/zpitbolg/p/5679431.html
Copyright © 2011-2022 走看看