美文网首页
linux命令

linux命令

作者: 小子考驾照 | 来源:发表于2017-04-25 17:10 被阅读47次
    • IDE 接口/dev/hd*

      • hda第一块盘
        • hda1, hda2 分区
      • hab第二块盘
    • SCSI: SAS/SATA/SSD

      • /dev/sd*

        • /dev/sda 第一块盘

          sda1,sda2

        • /dev/sdab 第二块盘

    分区的编号1-4,只能给P+E

    L分区(逻辑分区)编号只能从5开始。


    5个分区

    1p+1e(4个L) : p1 L5 L6 L7 L8

    2p+1e(3L) : p1 p2 L5 L6 L7

    3p+1e(2L): p1 p2 p3 L5 L6

    P+E的数量<=4

    E最多一个,可以没有


    Linux分区的要求:

    /: 根分区 用来存放系统文件以及程序。

    swap :交换分区,不是必须有的,相当于虚拟内存。

    /boot:引导分区


    基础命令之cat vi vim touch echo

    Linux命令 150个 常用的也就是80个

    #1.创建一个目录/data 
    mkdir /data # make directorys 的缩写
        mkdir   
            -m :指定要创建目录的权限,不常用,会用 chmod处理
                #mkdir -m 777 /tmp/test
            -p :这个参数用来递归创建目录
            
    #2.在/data下面建立一个文件 oldboy.txt
    touch /data/oldboy.txt
    
    #3.为oldboy.txt增加内容为"I am studying Linux."
    vi oldboy.txt  然后a或者i进入编辑模式,然后敲入内容I am studying Linux.
        #法1:
        #vi 编辑器,相当于记事本
        #vim 复杂编辑器
        #法2:
        echo "I am studying Linux." > oldboy.txt # > 是覆盖输入重定向 >>追加重定向
        #法3:
        cat  >>/data/oldboy.txt<<EOF
        I am studying Linux.
        EOF
        #EOF成对出现,箭头的方向就是数据的流向   
        
        cat -n /etc/passwd #显示行号
    

    标准输入与输出

    • 标准输入(stdin): 代码为0,使用<或<<数据流向从右向左

    • 标准正常输出(stdout):代码为1,使用>或>>。数据流向从左向右。

    • 标准错误输出(stderr):代码为2,使用2>或2>>。

      • 命令执行错了,才会输出。
      #执行正确输入的oldboy.txt 错误输入到oldgirl.txt 此例输入到oldgirl.txt
      ech 111 1>oldboy.txt 2>oldgirl.txt
      
      

      箭头的指向就是数据的流向。

    基础命令之cp、mv、ls、man、help、rm

    #4.把oldboy.txt文件拷贝到/tmp下
    cp oldboy.txt /tmp
        #cp
            -a:相当于-pdr
            -d: 若源文件为链接文件(link file),则复制链接文件属性而非档案本身
            -f: 强制,若目标档案已经存在且无法开启,则移除后再尝试;
            -i: 若目标文件已经存在时,在覆盖时先询问;
            -p: 连同档案的属性一起复制过去,而非使用默认属性;
            -r: 递归,用于复制目录
            -u: 若目标文件存在,则目标文件比源文件旧时才复制;
            
    #5.把/data目录移动到/root下
    mv /data/ /root/
    
    #内置命令
    echo eval exec export read shift exit time expr  
    
    #6、进入root目录下的data目录,删除oldboy.txt
    cd /root/data/
    rm oldboy.txt
    
    

    基础命令之find

    find 
        find /root/data/ -type f #查找是文件类型的文件
        find /root/data/ -type f -exec rm -f {} \; #-exec 执行删除命令
        find /root/data/ -type f|xargs rm -f #管道删除
        find /root/data/ -name "oldgirl.txt" #按照名字查找
        find /root/data/ ! -name "oldgirl.txt"|xargs rm -f #除oldgirl.txt之外的文件都删除
        # !是取反
    
        
    

    基础命令之rm

    rm 
        -i:询问用户是否确认删除,用y或n来回答
        -r: recursive,递归删除
        -f: force 强制删除
    #删除空目录 
    rmdir /root/data 
    

    基础命令之cat、grep、sed

    #8.已知文件test.txt内容为:
    test
    liyao
    oldboy
    请给出打印test.txt内容时,不包含oldboy字符串的命令
        #生成数据
        cat >>test.txt<<EOF
        test
        liyao
        oldboy
        EOF
     #法1
     head -2 test.txt
        #head 取文件的前n行,默认是前10行,指定取多少行 -n 3 即取前3行,简写-3
     #法2
     
     grep 命令 ==过滤器,把想要的或者不想要的分离开,Linux三剑客之一
     
     grep "oldboy" test.txt #出现 oldboy
     grep -v "oldboy" test.txt #不会出现 oldboy, 即-v是排除
        
        #grep 
            -B 除了显示匹配的一行之外,并显示该行之前num行
                grep 30 -B 10 test.txt
            -A 除了显示匹配的一行之外,并显示该行之后num行
                grep 30 -A 10 test.txt
            -C 除了显示匹配的一行之外,并显示该行之前后各num行
                grep 30 -C 10 test.txt
            -i 不区分大小写
            -o 只打印包含的内容
            -v 反向匹配
            -E --extended-regexp #多组过滤,过滤多个字符串
                grep -E  "3306|1521" /etc/services #grep -E = egrep 
            
     
    #法3 
    sed -e '/^oldboy/d' test.txt  #d 删掉
        # sed
            -n 取消默认输出
          过滤 sed '/过滤的内容/处理的命令' 文件
          处理的命令 p:print d:delete
        
        sed -n "2p" oldboy.txt  #打印第二行
        sed -n "1,2p" oldboy.txt  #打印第一、二行
        sed 's#ddd#oldboy#g' oldboy.txt #此时替换没有修改文件的内容
        sed -i 's#ddd#oldboy#g' oldboy.txt #此时替换修改了文件的内容
        
    

    基础命令之mkdir、yum、rpm、tree

    #9.请用一条命令完成创建目录/oldboy/test,即创建/oldboy目录及/oldboy/test目录
    mkdir -p /oldboy/test
    

    基础命令之yum、rpm

     生产环境最好不要用yum update
     rpm -ivh #i ==install v=verbose h==human
        #rpm -ivh 包名.rpm 
            #最大问题,依赖问题不好解决
        -q: query
        -a: all
    

    LANG=en

    #10.已知/tmp目录下已经存在了test.txt文件,如何执行命令才把/mnt/test.txt拷贝到/tmp下覆盖掉/tmp/test.txt,而让Linux系统不提示是否覆盖(root权限下)
        #法1:使用全路径
        /bin/cp /mnt/test.txt /tmp/test.txt
        #法2:使用\
        \cp /mnt/test.txt /tmp/test.txt
        #注: cp 是 cp -i的别名,会提示覆盖,所以要以cp原始命令运行
            "\":运行原始命令
        
        查看当前别名
        alias
        取消别名 
        unalias
        
    

    ~ :用户的家目录

    #11.只查看ett.txt文件(100行)内第20到第30行的内容
        #sed ==  stream editor
        #法1
        head -30 ett.txt|tail -11
        tail -81 ett.txt|head -11
        #法2
        sed -n '20,30p' ett.txt #-n 默认不输出
        sed -n 20,30p ett.txt
        #法3
        awk '{if(NR<31 && NR>19) printf $1 "\n"}' test01.txt#NR是行号
        #法4
        grep 20 -A 10 test.txt #有待考虑
    

    基础命令之seq

    seq 
         seq [OPTION]... LAST
         seq [OPTION]... FIRST LAST
         seq [OPTION]... FIRST INCREMENT LAST
        
         -s:指定分隔符
    

    基础命令之tail

    tail -n 
        -f:跟踪变化
    #tail -3 test.txt
    
    #查看尾部变化的试验
    for n in `seq 201 300`; do echo $n>>test.txt; sleep 1 ;done 
    

    基础命令之awk

    # awk 列操作文件
        #操作案例
        awk '{print $1}'  awk.txt 
        awk -F ':'  '{print $1}' /etc/passwd
        awk -F ':'  '{print $1 $2 $3}' /etc/passwd # -F 指定分隔符
        awk '{print $1  $2}' oldboy.txt  #打印第1列和第2列 $NF 最后一行
        awk '{if(NR>20&&NR<26) print $0"\n"}' /etc/passwd  #$0是整行
    
    #13.把/oldboy目录及其子目录下所有以扩展名.sh结尾的文件中包含./hostlists.txt的字符串全部替换为../idctest_iplist
    find ./ -name "*.sh" -type f -exec sed -i 's#./hostlists.txt#../idctest_iplist#g' {} \;
    
        #sed 
            -i : 改变文件内容 
        # 1.创建目录
            mkdir a b c d
        # 2. 
            echo oldboy > a/test.txt
            echo oldboy > c/test.txt
            mkdir -p a/ddd/fff
            echo oldboy >a/ddd/fff/test.txt
        #法1
            find ./ -type f -name "test.txt" -exec  sed -i 's#oldboy#oldgirl#g' {} \;
        #法2
            find ./ -type f -name "test.txt" | xargs sed -i 's#oldboy#oldgirl#g' 
            
         #法3
             sed -i 's#oldboy#oldgirl#g' `find ./ -type f -name "test.txt"`
    

    cd - : 上一次的目录‘

    快捷键

    三次以上的tab键
    ctrl + a :光标移至行首
    ctrl + e :光标移至行尾
    ctrl + u :删除(剪切)光标以前
    ctrl + k :删除(剪切)光标以后
    ctrl + c :终止
    ctrl + shift + c :复制
    ctrl + shift + v :粘贴
    ctrl + l :清屏 
    

    ssh远程连接

    rpm -qa openssh openssl
    ps -ef |grep ssh #查看服务进程
    ss -lntup | grep ssh #查看端口
    netstat -lntup | grep ssh#查看端口
    ip add #查看IP
    ifconfig #查看IP
    

    openssh : 提供远程连接

    openssl : 加密

    • 连接过程:ssh协议版本 服务器的IP地址 指定端口 合理的用户名和密码

    ssh 端口默认为22�

    IPv4 32位

    IPv6 128位

    检查ssh连接
    • 物理链路 ping
    • 服务是否正常 telnet telnet IP port
      • 排查服务器防火墙
        • 关闭防火墙 /etc/init.d/iptables stop 相当于service iptables stop
      • 服务是否开启
      • 检查物理线路
    ssh 客户端与Linux共享软件

    yum install lrzsz -y

    • 上传 rz
    • 下载 sz -y 文件路径 -y 是覆盖选项

    基础命令之uname、hostname

    #公司用什么系统? 答:内核为2.6.32的64位Centos6.9 Linux系统
    hostname #查看主机名
    uname  #打印系统信息
        -r #内核版本
        -m #内核是32位还是64位
        -n #查看主机名
        -a #查看所有
    

    Linux多任务、多进程、多CPU、多用户的操作系统

    平时管理电脑只用普通用户,禁止用root管理员

    50%事故来自内部。

    思想:做有价值的运维。

    我去贵公司工作,是带着团队来的。


    遇到重大问题,先汇报(通知上级),再处理;处理完之后,写好详细文档,发给技术团队。

    述职报告:用数据说话,为公司省钱,提高了效率;而不是说苦劳,加班多久。

    把自己当做公司股东来做事。

    基础命令之useradd、passwd、su

    useradd onefiter #添加onefiter用户
    passwd onefiter  #给用户onefiter设置密码   
    
    whoami #当前用户的名称
    
    su : switch user
        su - :当前的环境变量切换过去 
    

    SELinux详解以及运行级别

    配置文件:/etc/selinux/configcat /etc/sysconfig/selinux(软连接)

    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=enforcing
    # SELINUXTYPE= can take one of these two values:
    #     targeted - Targeted processes are protected,
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted 
    
    • enforcing:开启装填
    • permissive:警告不启用
    • disabled:禁止状态

    更改为disabledsed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

    getenforce:查看SELinux生效的状态

    setenforce:设置SELinux状态 setenforce 0

    usage: setenforce [ Enforcing | Permissive | 1 | 0 ]

    两个步骤:

    • 永久生效 :改配置文件

    • 临时生效:setenforce 0 此时状态为 permissive

    • 都生效,操作以上两个步骤

    运行级别 Run Level

    开机加载的配置文件:cat /etc/inittab

    # inittab is only used by upstart for the default runlevel.
    #
    # ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
    #
    # System initialization is started by /etc/init/rcS.conf
    #
    # Individual runlevels are started by /etc/init/rc.conf
    #
    # Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
    #
    # Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
    # with configuration in /etc/sysconfig/init.
    #
    # For information on how to write upstart event handlers, or how
    # upstart works, see init(5), init(8), and initctl(8).
    #
    # Default runlevel. The runlevels used are:
    #   0 - halt (Do NOT set initdefault to this)
    #   1 - Single user mode
    #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
    #   3 - Full multiuser mode
    #   4 - unused
    #   5 - X11
    #   6 - reboot (Do NOT set initdefault to this)
    # 
    
    七个运行级别
    0 : 关机
    1 : 单用户模式。找回密码
    2 : 多用户模式,没有网络文件系统(NFS)
    3 : 完整的多用户模式
    4 : unused(预留模式)
    5 : 桌面模式
    6 : 重启
    
    runlevel #查看运行级别
    init #切换运行级别 init 6
    

    精简开机启动

    生产环境一般要开机启动的有5个

    • sshd(远程连接服务)
    • rsyslog(系统日志)
    • network(网卡:激活/关闭各个网络接口)
    • crond (定时任务)
    • sysstat (监测系统性能)
    处理方法
    setup
    setup-->System services  # 取消* 即取消服务
    
    chkconfig 设定开机自启动服务
    chkconfig --help #查看帮助
    chkconfig --list #查看运行状态
    chkconfig --list|grep 3:on #查看运行级别3时为on
    chkconfig --list atd #查看atd的运行级别
    chkconfig  atd off #关闭运行级别 默认是2 3 4 5 关闭
    chkconfig  --level 3 atd off #只关闭运行级别为3的atd服务
    chkconfig  --level 2345 atd off #处理2345的atd服务为off
    #-------------------------------------------------------
    # 利用awk实现 
    for name in `chkconfig --list |grep 3:on| awk '{print $1}' |grep -Ev "sshd|network|rssyslog|crond|sysstat"` ; do chkconfig $name off;done
    # grep -Ev : -E 扩展正则表达式 -v:反向匹配
    #-------------------------------------------------------------
    #利用sed实现
     chkconfig --list |grep 3:on| awk '{print $1}' |grep -Ev "sshd|network|rssyslog|crond|sysstat" |sed -r 's#(.*)#chkconfig \1 off#g'|bash
    # () \1 后项引用  
    #sed  -r  #use extended regular expressions in the script. 
    
    #------------------------------------------------------------
    
    chkconfig --list |grep 3:on| awk '{print $1}' |grep -Ev "sshd|network|rssyslog|crond|sysstat" |awk '{print "chkconfig" $1 "off"}' |bash
    
    
    关闭防火墙

    iptables

    查看当前防火墙iptables -L -n

    关闭防火墙:/etc/init.d/iptables stop

    查看运行状态:/etc/init.d/iptables status

    Linux优化之安全最小化5个思想

    • 安装Linux系统最小化
    • 开机自启服务最小化
    • 操作命令最小化。例 rm -f test.txt 而不是 rm -rf test.txt
    • 登录Linux用户最小化。平时没有需求不用root登录
    • 普通用户授权权限最小化
    • Linux系统文件及目录的权限最小化,禁止随意创建、更改、删除文件
    Linux系统从开机到登录之前的启动流程
    • 1.开机BIOS自检
    • 2.MBR引导
    • 3.grub引导菜单
    • 4.加载内核kernel
    • 5.启动init进程
    • 6.读取inittab文件,执行rc.sysinit,rc等脚本
    • 7.启动mingetty,进入系统登陆界面

    Linux优化:
    • 1.建立普通账号,使用普通用户登录
    • 2.处理SELinux
    • 3.处理防火墙
    • 4.精简开机自启动服务
    • 5.Linux最小化安全理念

    优化Linux远程ssh连接

    Windows服务器的默认远程管理端口是3389,管理员用户是administrator,普通用书是guest

    Linux 管理员root,普通用户是多个 端口是22

    ssh的启动文件是/etc/init.d/sshd

    ps -ef |grep sshd :查看进程

    ssh的配置文件 /etc/ssh/sshd_config
    #       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
    
    # This is the sshd server system-wide configuration file.  See
    # sshd_config(5) for more information.
    
    # This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
    
    # The strategy used for options in the default sshd_config shipped with
    # OpenSSH is to specify options with their default value where
    # possible, but leave them commented.  Uncommented options change a
    # default value.
    
    #Port 22
    #AddressFamily any
    #ListenAddress 0.0.0.0
    #ListenAddress ::
    

    查看改变

    diff 查看改变

    vimdiff 高亮显示两个文件的区别

    Windows下的比较工具 Beyond Compare

    • diff sshd_config.humor.20170412 sshd_config

    • vimdiff sshd_config.humor.20170412 sshd_config

    • 命令替换

      sed -ir '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no' sshd_config
      #13 i 为从13行插入
      

      查看sshd服务:netstat -lntup|grep sshd

    sudo命令

    普通用户只能查看一些内容而不能修改,例cat /etc/hosts

    通过 visudo(等价于 vi /etc/sudoers 不完全等价)来管理

    命令行模式下 yy+p 复制一行+粘贴
    

    注:vi 行号+jj跳转到指定行

    root    ALL=(ALL)       ALL
    humor   ALL=(ALL)       NOPASSWD: ALL #不提示密码
    

    which useradd 命令的等价 find / -type f -name "useradd"

    whereis -b useradd locate useradd

    which的原理
    which 的查找是在全局环境PATH变量
    echo $PATH #不同的路径以":"隔开
    PATH的全局变量的配置是在 /etc/profile
    PATH 系统变量,执行ls,cp等非内置命令时,系统会查找PATH里对应的路径是否有,如果没有就报告找不到该命令,有则执行
    当执行which cp 来查看命令所在路径的时候,也是从PATH变量搜索
    临时修改 export PATH="/tmp:$PATH"
    永久生效 修改 /etc/profile下,使用 source /etc/profile 或 ./etc/profile 使其生效
    

    字符集

    字符集配置文件/etc/sysconfig/i18n

    #查看当前字符集
    cat /etc/sysconfig/i18n
    #更改字符集
    sed -i 's#LANG="en_US.UTF-8"#LANG="zh_CN.UTF-8#g' /etc/sysconfig/i18n
    #使其生效,用source命令
    source /etc/sysconfig/i18n
    
    

    成功最有效的方法是向有经验的人学习

    学好Linux运维 从鼓掌、点赞、鼓励评价别人开始

    时间同步及配置

    #date 命令
     -s : set time described by STRING
     #定时和互联网的时间校对
        #找到一个时间服务器
            /usr/sbin/ntpdate ntp.api.bz
            ntpdate -u ntp.api.bz #NTP服务器(上海)
    #hwclock : query and set the hardware clock (RTC)
    
    #每五分钟同步一次时间
    echo "*/5 * * * * /usr/sbin/ntpdate -u ntp.api.bz > /dev/null 2>&1" >> /var/spool/cron/root
    #查看定时任务
    crontab -l
    
    # 以下1) 2) 3)都是等价的  
     1) 1>/dev/null  2>/dev/null
     2) 1>/dev/null 2>&1(习惯选择这一种)
     3) &>/dev/null
     
    

    优化终端超时以及历史记录

    export TMOUT=10 10秒不动会自动退出

    永久生效

    echo "export TMOUT=300" >> /etc/profile

     `source /etc/profile  ` 
    

    历史记录

    历史记录越少越安全

    HISTSIZE=5 #历史条目数,临时生效
    cat ~/.bash_history #历史记录文件
    HISTFILESIZE=5 #历史文件大小
    history -c #清空已有的历史记录
    history -d 889 #删除指定数字标号
    #全局生效
    echo 'export TMOUT=300 >>/etc/profile'      #超时时间登出
    echo 'export HISTSIZE=5 >>/etc/profile'     #历史记录的条目数
    echo 'export HISTFILESIZE=5 >>/etc/profile' #历史文件大小
    

    文件描述符

    文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件。

    文件描述符的信息包括文件的打开模式、文件的位置类型、文件的初始类型

    文件描述符概念

    ​ 1、表示形式为整数数字(一般为0~65535范围)

    ​ 2、进程使用的时候会占用文件描述符

    #查看默认文件描述符
    ulimit -n
    
    #调整文件描述符
        #方法1
         vim  /etc/security/limits.conf 
         echo '*  -   nofile   65535 ' >> /etc/security/limits.conf
        #方法2
        ulimit -SHn 65535
         #永久生效
          /etc/rc.local #放到开机自启动
    

    调整内核参数文件 /etc/sysctl.conf

    shift+g 切换到文件末尾,o在下一行处于编辑模式

    net.ipv4.tcp_fin_timeout = 2 
    net.ipv4.tcp_tw_reuse = 1  # tw === TIME-WAIT
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_syncookies = 1 
    net.ipv4.tcp_keepalive_time = 600
    net.ipv4.ip_local_port_range = 4000
    net.ipv4.tcp_max_syn_backlog = 16384 
    net.ipv4.tcp_max_tw_buckets = 36000
    net.ipv4.route.gc_timeout = 100
    net.ipv4.tcp_syn_retries = 1 
    net.ipv4.tcp_synack_retries = 1 
    net.core.somaxconn = 16384
    net.core.netdev_max_backlog = 16384 
    net.ipv4.tcp_max_orphans = 16384
    # 以下参数是对 iptables 防火墙的优化,防火墙不开会提示,可以忽略不理 
    net.nf_conntrack_max = 25000000 
    net.netfilter.nf_conntrack_max = 25000000 
    net.netfilter.nf_conntrack_tcp_timeout_established = 180 
    net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120 
    net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60 
    net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
    

    以上是Web服务负载均衡器常规互联网的网站服务器的优化的基本思路

    sysctl -p让配置生效

    • 查看网络状态 netstat -an

    网络状态说明及优化命令和优化细节请看

    http://yangrong.blog.51cto.com/6945369/1321594

    http://oldboy.blog.51cto.com/2561410/1336488

    netstat -an:六列 man netstat

    消息中间件(排队,异步(解耦)的效率更高,但是实时性不好;同步)

    隐藏Linux软件名及内核版本

    #显示内核版本
    cat /etc/issue
    cat /etc/issue.net
    #清空内核版本
        #方法1
        >/etc/issue
        >/etc/issue.net
        #方法2
        cat /dev/null > /etc/issue  
        
    
    vi /etc/motd #提示作用
        RHEL  6.6 (Final)
        Welcome to oldboy Linux training.
    
    

    锁定系统文件

    #锁定的文件 /etc/passwd /etc/shadow  /etc/group /etc/gshadow /etc/inittab
    chattr +i /etc/passwd /etc/shadow  /etc/group /etc/gshadow /etc/inittab
    #查看用法 man chattr
    

    清除多余用户

    显示不以nologin结尾: grep -v "nologin$" /etc/passwd

    为grub引导菜单加密码保护

    /sbin/grub-md5-crypt #输入密码,得到字符串string  
    #   然后将  password --md5 string
        #放在 splashimage=(hd0,0) /grub/splash.xpm.gz
        #  password --md5 string
        #title CentOS 6 (2.6.32-504.e16.x86_64) 之间
    

    禁止Linux系统ping

    此优化不是必须的

    echo "net.ipv4.icmp_echo_ignore_all=1" >>/etc/sysctl.conf
    tail -1 /etc/sysctl.conf
    sysctl -p #使其生效
    
    1) 不用root管理,以普通用户的名义通过sudo授权管理。
    2)更改默认的远程连接SSH服务端口,禁止root用户远程连接,甚至要更改为只监听内网IP
    3)定时自动更新服务器时间,使其和互联网时间同步。
    4)配置yum更新源,从国内更新源下载安装软件包
    5)关闭SELinux及iptables(在工作场景中,如果有外部IP一般要打开)
    6)调整文件描述符的数量,进程及文件的打开都会消耗文件描述符
    7)定时自动清理邮件目录垃圾文件,防止inodes节点被占满
    8)精简并保留必要的开机自启动服务(如crond、sshd、network、rsyslog)
    9)Linux内核参数优化 /etc/sysctl.conf,执行sysctl -p生效
    10)更改字符集,建议使用英文字符集
    11)锁定关键系统文件如(/etc/passwd /etc/shadow /etc/group /etc/inittab)
    12) 清空 /etc/issue /etc/issue.net
    13)清除多余的系统虚拟账号
    14)为grub菜单加密码
    15)禁止被ping
    16) 升级漏洞软件
    

    配置Linux软件下载更新源地址

     #查看yum源
     cat /etc/yum.repos.d/CentOS-Base.repo
     #打开 http://mirrors.aliyun.com/help/centos
     
    

    命令wget

    wget http://url

    wget 
        -O #等价于--output-document=file
        --spider #爬虫,检查网站是不是好的,不会下载只是检查
        -T #等价于 --timeout 超时时间
        --tries=2 #指定重试的次数
         
    

    基础命令之less、more

    空格 一屏

    less 按屏(空格)或按行查看文件(回车)

    more 不能向上翻

    Linux目录

    倒置的树状

    只有一个顶点 / (根目录)

    tree -L 1 /  #查看根目录下 1层 -L 层数
    tree -Ld 1 / #-d 只显示目录
    

    Linux的目录结构和磁盘分区是分离的。

    根目录下的目录

    #任何目录可以对应任何分区,通过挂载来实现
     #磁盘设备默认没有入口的,不能访问的
     #mount 
        mount /dev/sda1 /etc #将/dev/sda1 挂载到 /etc
    /bin
    /sbin
    /usr
    
    /etc
    /opt
    /dev
    
    ######################################
    Linux磁盘的发展
    
    第一块 系统相关  /
    第二块 专门存放用户自己的程序 /usr
    第三块  /home 用于存放用户的数据
    
    /usr/local #用户自检安装的程序
    /opt  #第三方厂商开发的程序,等价于option
    
    ############
    /usr 和 / 拥有同样的东西
    #根目下 /
    ll -d /bin /lib /sbin /tmp
    #/usr 目录下
    ll -d /usr/bin /usr/lib /usr/sbin /usr/tmp
    

    FHS(Filesystem Hierarchy Standard):文件系统层次化标准

    第一层 "/" 目录下的各个目录放什么文件数据
        /etc: 放置文件系统的配置 # /etc/exports, /etc/hosts
        /bin和/sbin: 放置程序及系统命令 第二层是针对 /usr(unix software resource | Secondary hierarchy) 和 /var(Variable data)这两个目录的子目录来定义。 例如:/var/log下放置系统日志文件等
        提示:/var分区单独分出来,硬盘足够大。我们都有监控,剩余20%报警
    

    FHS http://www.pathname.com/fhs

    /proc:内核及系统的虚拟文件系统

    cat /proc/mounts #查看挂载信息
    cat /proc/cpuinfo #查看cpu信息
    cat /proc/meminfo #查看内存信息
    cat /proc/loadavg #查看负载
    cat /proc/version #查看系统版本
    

    /sys目录https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/

    重点目录

    网卡重要文件/etc/sysconfig/network-scripts/ifcfg-eth0

    ​ 配置网络地址及GW等

    ​ 1)重启网卡/etc/init.d/network restart(影响所有网卡)

    ​ 2) ifdown etho && ifup eth0 只针对eth0网卡

    ​ 查看ifconfig 或者ip a 或者 ip add

    /etc/resolv.conf

    DNS客户端配置文件

    man resolv.conf查看用法

    DNS可以在网卡配置文件里设置 (ifcfg-eth0)

    DNS也可以在/etc/resolv.conf

    网卡里的DNS优先于/etc/resolv.conf


    /etc/hosts

    局域网 主机名和IP解析

    将域名解析成IP的手动配置文件表

    hosts企业里的作用:

    1、开发,产品,测试等人员,用于通过域名测试产品
    

    ​ 2、服务器之间的调用可以用域名(内部DNS),方便迁移


    /etc/sysconfig/network

    主机名的配置文件

    hostname 更改主机名 临时生效

    vi /etc/sysconfig/network 永久生效

    会被启动网卡调用grep '/etc/sysconfig/network' /etc/init.d/network


    /etc/fstab

    man fstab : fstab - static information about the filesystems

    设置文件系统挂载信息的文件,使得开机能够自动挂载磁盘分区

    df -h #以人类可读的信息查看磁盘挂载信息
    

    fstab : 6列

    dd if=/dev/zero of=/dev/sdb1 bs=4096 count=100#虚拟生成一个文件系统
    mkfs.ext4 /dev/sdb1 #格式化
    mount -t ext4 -o loop,noatime,noexec /dev/sdb1 /mnt#挂载
    df -h #查看挂载状态
    umount /mnt #卸载挂载
    #########################
    #自动挂载
    vim /etc/fstab #添加如下信息
    /dev/sdb1 /mnt ext4 loop,noatime,noexec 0 0
    ###
    mount -a #挂载
    df -h #查看挂载
    

    fstab:

    出问题:修复

    1)开机提示,输入密码,修复

    2)救援模式Rescue ,修改/etc/fstab(只读状态,修改只读状态 mount -o rw,remount /)


    /etc/rc.local

    相当于开机启动

    让一个程序开机启动

      1. chkconfig(/etc/init.d/sshd)
      2. 放入 /etc/rc.local

      建议选择 /etc/rc.local,服务器档案文件


    /etc/inittab

    系统启动时init进程设置系统的runlevel运行级别以及加载相关的级别对应启动文件设置(Linux开机启动流程)

    最后一行显示默认的运行级别

    查看Linux第一个启动进程ps -ef|grep init


    /etc/init.d

    (yum/rpm)程序启动目录


    /etc/profile

    定义系统的变量

    /etc/profile.d 脚本或者程序 (登录时执行)
    /etc/motd登录后显示的字符串

    /etc/redhat-release:查看版本号
    /etc/passwd:用户文件
    /etc/shadow:账号的密码文件
    /etc/group:用户的组文件
    /etc/gshadow:组账号的密码文件
    /etc/sudoers:一般用visudo

    /usr/local:相当于Windows中的Programm
    /usr/src:放源代码

    /var

    /var/log
    /var/log/messages:系统日志,自动轮询按周 rsyslog(软件故障)
    /var/log/secure:安全日志 SSH连接日志

    fsck -A :磁盘检查(不要检查好磁盘),卸载状态检查

    dmesg: 内核回报的错误信息


    /var/spool/cron/root:定时任务的所在路径

    查看设备的挂载的信息:

    cat /proc/mounts

    df -h


    1、学会总结是学好运维的重要前提

    2、通过案例或例子来总结一个技术或者命令

    3、画一张逻辑图,形象的卡通记忆这个知识技术点

    4、通过管道过滤数据时,最好先输出结果,然后回退再使用管道看着结果过滤


    #1.如何过滤出已知当前目录下oldboy中的所有一级目录(提示:不包含oldboy目录及隐藏目录,即只能是一级目录)?
    ls -l |grep "^d"
    ls -lF|grep "/$"
    find ./ -maxdepth 1  -type d ! -name "oldboy"
    tree -Ld 1 
    
    cd - #返回上级目录,原理是 env|grep -i oldpwd 
    
    #查看刚创建的目录
    ls -lrt /etc #--reverse -t:sort by modification time
    
    添加别名 vim /etc/profile 
    alias grep='grep --color=auto'
    :wq
    . /etc/profile #使其生效
    #在学习中记忆
    
    #5、已知Apache服务的访问日志按天记录在服务器本地目录/app/log下,由于磁盘空间的限制,现在要求只能保留最近7天访问日志!请问如何解决?请给出解决办法或配置或处理。提示:可以从Apache服务配置上着手,也可以从生成出来的日志上手。
    Refer  
    
    for n in `seq 14`
    do
      date -s "2017/04/$n"
      touch access_www_`(date +%F)`.log
    done
    date -s "2016/08/15" #更改时间
    find /oldboy/test/ -type f -name "*.log" -mtime +7 |xargs rm -f
    
    
    #6.调试系统服务时,希望能实时查看系统日志/var/log/messages的变化
        #法1
        tail -f /var/log/messages
        #法2
        tailf /var/log/messages
        #法3
        tail -F /var/log/messages #没有文件会重试
        
        
    #7.打印配置文件nginx.cong内容的行号及内容
        #法1
        nl nginx.conf
        #法2
        cat -n nginx.conf
        #法3
        grep -n "." nginx.conf #打印匹配的结果
        #法4
        grep -n ".*" nginx.conf
        #法5
        grep -n "$" nginx.conf
        #法6
        awk '{print NR,$0}' messages
        #法7
        sed '=' /etc/rsyslog.conf
        #法8
        less -N  nginx.conf
    
    

    相关文章

      网友评论

          本文标题:linux命令

          本文链接:https://www.haomeiwen.com/subject/qrnvzttx.html