• 快速掌握Linux这篇文章就够了。


    服务器路径

    命令符号 释义
    / 根目录
    /bin 二进制可执行命令
    /dev 设备特殊文件
    /etc 系统管理和配置文件
    /etc/rc.d 启动的配置文件和脚本
    /home 用户主目录的基点
    /lib 标准程序设计库
    /sbin 超级管理命令
    /mnt 系统提供这个目录是让用户临时挂载其他的文件系统
    /root 系统管理员的主目录
    /Lost+found 这个目录平时是空的, 系统非正常关机而留下“无家可归”的文件
    /proc 虚拟的目录,是系统内存的映射
    /usr 应用程序和文件几乎都在这个目录.
    /var 某些大文件的溢出区
    boot 内核文件 Linux 系统文件(100MB-200MB) 服务器500MB
    opt 临时文件

    常用快捷键

    图形界面 到 字符界面Ctrl Alt Fn (F1-----F6) init 3
    
    字符界面 到 图形界面 Alt F7   init 5
    
    Tab键 :自动补齐
    
    反斜杠 :强制换行
    
    ctrl+u 清空至行首
    
    ctrl+k 清空至行尾
    
    ctrl+L 清屏
    
    ctrl+c 取消本次命令编辑
    
    touch 创建文件
    
    mkdir 创建目录  mkdir -p  创建嵌套的多层目录结构
    
    cd 切换工作目录 cd -  切换两个目录  cd .. 返回上个目录
    
    du 统计目录及文件 du -s 只统计大小 du -a 统计所有文件 du -h 人性化显示
    
    du -sh *  查看所有文件及大小
    
    pwd ------- 查看当前所在位置
    
    vim  ------查看日志(编辑器)
    
    Ls ------ 打印(当前目录下所包含的内容)ls 显示目录内容(ls=ll)
    
    ./ ------直接运行脚本
    
    
    

    查看帮助

    help, -help man info (man ls)
    
    常用命令 uname 查看系统信息及内核版本(-a 显示主机;-r 显示内核版本)
    
    hostname 查看主机名
    
    vim /etc/sysconfig/network 更改主机名
    
    ifconfig 查看网络信息
    
    shutdown -h now | poweroff | init 0     关闭计算机
    
    shutdown  -r now  |  reboot  |  init 6   重启计算机
    
    

    Ln软链

    Ln链接文件
    
    Ln 要链接的文件 链接到什么地方
    
    ln 创建链接文件 
    
    ln -s 软链接 ln 硬链
    
    

    CP 复制

    cp  -r 递归复制整个目录树  cp=cp-i  cp -r 递归复制
    
    cp -p 保持源文件的属性不变
    
    cp -f 强制覆盖目标同名文件或目录
    
    cp -i 需要覆盖文件或目录时进行提醒
    
    

    RM 删除

    rm -rf 递归强行删除文件或者目录 不进行提醒
    
    rm -f  强行删除文件或者目录,不进行提醒
    
    rm -r 递归删除整个目录树
    
    rm - i 删除文件或者目录时提醒用户确认
    
    
    

    MV 移动(改名)

    Cat 查看文件
    
    More 分页查看文件 (不可返回)
    
    Less 分页查看文件 (可返回)
    
    Head 查看文件头(前10行)
    
    Tail 查看文件尾 (后10行)
    
    
    

    WC 统计

    wc -l 统计行数 
    wc -w 统计单词个数 
    wc -c 统计字节数
    
    

    压缩指令

    压缩 (仅限文件)

    • gzip
    • bzip2

    表示高压缩比:

    • gzip -9
    • bzip2 -9

    解开已经压缩的文件

    • gzip -d
    • bzip2 -d

    Tar 归档

    口令打包压缩:

    Tar 要打包压缩到什么地方 要打包压缩的文件

    单个解释用法:
    tar -c 创建 . tar格式的包文件
    
    tar -x  解开. tar格式的包文件
    
    tar -v 查看详情信息
    
    tar -f 表示使用归档文件
    
    tar -p 打包时保留原始文件及目录的权限
    
    tar -t 列表查看包内文件
    
    tar -C 解包时指定释放的目标文件夹
    
    tar -z 调用gzip程序进行压缩或者解压
    
    tar -j 调用bzip2 程序进行压缩或者解压
    
    组合命令:
    
    tar -cvf 打包
    
    tar -zcvf 打包压缩
    
    tar -zcvf  XXX.tar.gz  XX
    
    tar -xvf 解压 
    
    tar -xvf xxxx.tar.gz -C aaa 解压到指定目录
    
    打包压缩---- tar -zcvf
    
    解压 ----- tar -zxvf 
    
    指定位置解压--- tar -zxcf -C
    
    xx.bz2用bzip2 -d解压
    
    xx.gz用gzip -d解压
    
    xx.tar.gz 用-zxvf解压
    
    xx.tar.bz2用-jxvf解压
    
    
    

    常用

    打包:
    1、tar -zcvf a2data.tar.gz ./a2data.cn/*
    2、tar -zcvf a2data.tar.bz2 ./a2data.cn/*  
    ---- 将a2data.cn文件夹下统一打包 ------
    
    解压(万能):
    
    tar -xf a2data.tar.bz2 ./ 
    ---- 解压到当前路径下----
    
    
    

    VI 编辑器

    命令模式:
    vim/vi ESC
    
    输出模式:
    a、i、o等键
    
    末行模式:
    (大写)A键
    
    
    工作模式:命令模式 输入模式 末行模式
    
    a       #光标后面写
    
    i       #光标前面写
    
    o       #下一行写
    
    dd      #删一行
    
    n+dd    #删几行
    
    d$      #删除光标后面的同一行 (删光标)
    
    d^      #删除光标前面的同一行 (不删光标)
    
    x       #删光标
    
    X       #删光标前面的
    
    yy      #复制
    
    p       #黏黏到下一行
    
    P       #黏黏到上一行
    
    u       #撤销上一步
    
    U       #撤销这一行的所有修改
    
    :q!     #不保存退出            
    
    :w      #保存
    
    :wq     #保存退出
    
    :/      #搜索的东西   搜索什么 从上到下搜索
    
    %       #搜索的东西   搜索什么 从下到上搜索
    
    

    行号

    :set nu    #设置行号
    
    :set nonu  #不要行号了
    
    跳转到首行gg
    
    跳转到尾行G
    
    #G跳转到到第几行
    
    :e/etc/passwd 打开新的编辑文件
    
    :r/etc/passwd 读入其他文件内容
    
    文件内个替换
    
    s/old/new 替换行里的一个old换成new
    
    s/old/new/g 整行替换 old换成new
    
    #,#s/old/new/g #到#行替换 old换成new
    
    %s/old/new/g 整篇替换 old换成new
    
    c 末尾加入c 对每个替换提示用户进行确定
    
    
    
    

    权限控制

    属组权限

    字符制表示八进制 000 - 777

    字符表示法 八进制表示法 含义
    r 4
    w 2
    x 1 执行

    修改权限的命令

    【 su - u2 切换用户】 
    
    1、 chmod 修改文件权限
    
    2、 chown,chgrp 修改文件权属 
    
    U----所有者  
    O----其他人  
    a-----所有人  
    g-----所属组
    
    chomd a=rwx root  所有都拥有读写执行权限 
    
    cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more
    
    

    用户控制命令

    1. useradd 添加用户
    2. useradd -g 指定用户所属用户组
    3. useradd -G 用户组 指定用户所属的附加组
    4. useradd -u 用户号 指定用户的用户号

    命令:指定用户所属组

    useradd -g 组名 -u 用户号 用户名

    例如
    
    useradd -g g3 -u 510 u5
    
    指定用户附属组
    
    useradd -g 组名 -G 所在组 用户名
    
    例如:
    
    useradd -g g4 -G g1 u7
    
    
    

    修改账户信息

    1. usermod 修改账户信息
    2. usermod -g 用户组指定用户所属的用户组
    3. usermod -l 锁定账号
    4. usermod -u 解锁账号
    5. userdel 删除账户
    6. userdel -r 删除宿主目录

    设置密码

      1. passwd 设置密码
      2. passwd -l 锁定账号
      3. passwd -u 解锁账号
      4. passwd -s 查看账号状态
      5. usermod -L u1 u1账号被锁定
      6. usermod -U u1 u1账号被解锁
      7. passwd u1 设置u1 账号密码

    linux 组账户

    • groupadd 添加组成员
    • groupdel 删除组成员
    • gpasswd 设置组成员
      • -a 添加成员
      • -d 删除成员
      • -M 定义成员列表
    • gpasswd -a u1 g1 将u1加入到g1组中
    • gpasswd -M u1,u2,u3,u4,u5 g2 将u1到u5添加g2组里

    网络设置

    存放位置 —- 以RedHat为例

    /etc/sysconfig/network-scripts/ifcfg-etc0

    修改ip

    setup  交互式图形化工具
    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    
    

    修改 DNS

    /etc/resolv.conf
    
    

    修改主机名

    vim /etc/sysconfig/network
    
    
    

    网卡控制

    1.ifdown 关闭网卡 丨 ifup 开启网卡
    
    2.service network stop 丨 start 丨restart
          		      停止     开启     重启
    

    开机自启动

    chkconfig  httpd on
    
    

    开机自动挂载

    设置开机自动挂载的路径

    这个是当时学习在虚拟机上使用的多。

    /etc/fstab 
    
    

    网络配置

    IP:是一个逻辑地址,是由32位二进制构成
    -------------------------------------------------------
    setup
    
    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    
    DEVICE=eth0                 网卡
    
    BOOTPROTO=none                 是否自动获取IP ---> dhcp
    
    HWADDR=00:0c:29:d6:96:fb         MAC地址
    
    ONBOOT=yes                  是否随网络服务启动,eth0生效
    
    NETMASK=255.255.255.0             子网掩码
    
    IPADDR=192.168.18.76             IP地址
    
    TYPE=Ethernet                 类型为以太网
    
    ------------------------------------------------------
    修改DNS
    
    vim /etc/resolv.conf
    
    search localdomain
    
    nameserver 192.168.40.2
    
    nameserver 202.106.0.20 联通
    
    nameserver 114.114.114.114
    
    nameserver 8.8.8.8 谷歌
    
    nameserver 4.4.4.4 谷歌
    

    系统程序

    系统程序管理

    RPM包 (Red Hat)

    命名格式 : bash-3.1-16.1.i386.rpm

    软件包名-版本号-发布次数-硬件平台-后缀名

    rpm管理命令

      rpm -q [子选项] 【软件名】
    
      rpm -qa 查看系统中已安装的所有rpm软件包列表
    
      rpm -qpi 通过.rpm 包文件查看该软件的详细信息
    
      rpm -qpl 查看.rpm安装包内所包含的目录.文件列表
    

    安装

       rpm -i rpm包文件   安装一个新的rpm软件包
    
       rpm - U 升级某个rpm软件包,若原本未安装,则进行安装
    
       rpm  -F 更新某个rpm 软件,若原本未安装,则放弃安装
    
    
    

    安装

    步骤1: tar 解包
    步骤2: ./configure 配置
    步骤3: make 编译
    步骤4: make instal
    步骤5:  service httpd restart
           service network restart
    步骤6:  cd /var/www/
    

    Yum

    本地:Yum(file本地)

    命令:
    
    cd  /etc/yum.repos.d/xd
    
    挂载:
    1. 挂载光盘镜像到/mnt
    
    mount /dev/cdrom /mnt
        
    2. 配置yum源
    
    vim /etc/yum.repos.d/xxx.repo
    
    [xxx]
    
    baseurl=file:///mnt/Server(flie本地)
    
    enabled=1(是否启动文件 0否 1是)
    
    gpgcheck=0
    
    3. 安装
        
    yum -y install 软件名称 (vsftpd)
    
    4. 重启
    
    yum    service vsftpd start
    
    

    服务器Yum

    ------服务器yum
    
    0、命令:
    cd  /etc/yum.repos.d/
    
    1、服务器端提供共享
    
    -- 服务器安装一个ftp
    -- 把光盘镜像挂载ftp的共享目录
    
    挂载:
    
    mount /dev/cdrom /var/ftp/pub
    
    必须保证两台机器能够正常通信(能够ping通)
    
    2、配置客户端
    
    vim /etc/yum.repos.d/xxx.repo
    
    [xxx]
    
    baseurl=[ftp://192.168.18.221/dev/cdrom](ftp://192.168.18.221/dev/cdrom)  /var/ftp/pub 
    【服务器ip地址及共享目录】
    
    enabled=1(是否启动文件 0否 1是)
    
    gpgcheck=0
    
    开启 service vsftpd start
    
    

    卸载

    rpm -e 软件名

    源代码(灵活定制)

    tarball 封包

    tar.gz 或者 tar.bz2

    效验工具

    md5 sum 
    

    磁盘管理

    查看磁盘

    fdisk -l 
    
    fdisk /dev/sdb 磁盘分区
    
    指令 m
    
    l    list known partition   列出所有的分区
    
    n   add a new partition      创建一个新的分区
    
    p   print the partition table  打印分区内容
    
    t   change a partition's system id  改变分区系统id
    
    w  write table to disk an exit  保存并退出分区
    
    d  delete a partition 删除一个分区
    

    查看分区

    fdisk -l 
    
    fdisk /dev/sdb  磁盘分区
    
    n----创建
    
    d----删除
    
    

    交换分区

    fdisk  /dev/sdb格式化为 swap 命令
    
    mkswp  /dev/sdb1
    
    

    设置分区

    mkswap /dev/sdb1 (做成交换文件系统)
    
    free 查看一下内存
    
    swapon /dev/sdb1 开启交换内存
    
    free 查看内存
    
    swapoff  /dev/sdb1 关闭交换内存
    
    free 最后查看 是否存在
    

    文件系统

    umount 卸载
    mount 挂载
    
    1、创建
    mkfs - t ext3 /dev/sdb1
    
    mkfs ext3/dev/sdb1
    
    挂载
    
    mount /dev/sdb /mnt
    
    查看
    
    df -hT 
    
    
    
    

    LVM逻辑卷

    创建lvm

    创建物理卷__PV

       pvcreate /dev/sdb,c,d,e (创建pv)
    
       pvdisplay(显示pv)
    

    创建卷组

       vgcreate /dev/feng_vg /dev/sdb,c,d,e(创建vg)
    
       vgdisplay (显示vg)
    

    拓展vg

        pvcreate /dev/sdf(创建一个新的pv)
    
        vgextend feng_vg /dev/sdf (扩展vg)
    

    减少vg

       vgreduce feng_vg /dev/sdc,d,e
    

    移除vg

        vgremove feng_vg
    
    创建LV
      lvcreate -L 30G -n feng_lv feng_vg
    
    格式化
      mkfs.ext3 /dev/feng_vg/feng_lv
    
    挂载
     mount /dev/feng_vg/feng_lv /aa
    

    增加

       先卸载 
    
      umount /aa
    
      lvextend -L +10G /dev/feng_vg/feng_lv(检测硬件)
    
      resize2fs /dev/feng_vg/feng_lv (重设文件系统大小)
    

    减少LV

    先卸载 (输入卸载名称或者目录)      
    umount /dev/feng_vg/feng_lv
    
    缩小lv先缩小文件系统再缩小lv
    
    e2fsck -f /dev/feng_vg/feng_lv (检测硬件)
    
    resize2fs /dev/feng_vg/feng_lv 9g (将文件系统缩小到9G)
    

    缩小lv

     lveduce -L 9G /dev/feng_vg/feng_lv
    

    移除lv

      lvremove /dev/feng_vg/feng_lv
    

    移除pv

     pvremove /dev/sdb1 /dev/sdb2
    
    lv 使用pe(默认4M) 的块  
    
    lvcreat  -l  (小写)  个数           
    
    lvcreat -L  (大写)  指定容量
    

    Mdadm 案例 raid5

    一、添加RAID5

    mdadm -C /dev/md5 -l 5 -n 3 /dev/sd[b,c,d]
    
    

    二、创建文件系统

       格式化:mkfs.ext3 /dev/md5 
       makir /raid5
    

    三、挂载文件系统

        mount /dev/md5 /raid5  挂载文件系统
    
        df -hT  查看
    

    RAID容错

    mdadm /dev/md5 -f /dev/sdb  损坏磁盘b
    
    mdadm -D /dev/md5 查看
    
    mdadm /dev/md5 -a /dev/sdf 增加一块磁盘
    
    mdadm /dev/md5 -r /dev/sdb 移除坏磁盘
    
    echo "DEVICE /dev/sdc /dev/sdd /dev/sde /dev/sdf" >>(写入到哪) /etc/mdadm.conf  把UUID 写入 /etc/.......文件中
    
    mdadm -Ds >> /etc/mdadm.conf  把UUID 读写出来
    
    cat /etc/mdadm.conf
    
    mdadm -S --scan /dev/md5 关闭RAID(需要卸载md5)
    
    mdadm -A --scan /dev/md5 开启RAID
    
    
    恢复快照!
    

    SSH 协议

    默认端口 :TCP:22 FTP:21 SSH:22 Apache(阿帕奇):80
    
    步骤1: ping 192.168.18.221 (ping得通)
    
    步骤2:ssh [root@192.168.18.221](mailto:root@192.168.18.221) 输入密码 进入服务端
    
    步骤3: exit 退出服务端 
    
    ssh-keygen -t rsa(或者dsa) 客户机生成密钥
    
      步骤4:ssh-copy-id -i .ssh/id_rsa.pub [root@192.168.18.221](mailto:root@192.168.18.221)
    
    将密钥上传输到服务端。
    
    步骤5:输入服务端密码 exit 再次输入 ssh [root@192.168.18.221](mailto:root@192.168.18.221)
    
    便可直接进入!
    
    

    计划任务

    date----当前时间 
    ctrl+D 保存     
    Atq 查看任务列表 
    Atrm 删除任务
    
    

    At 一次性计划任务

    命令:at + 时间

    Crontab 周期性计划任务

    服务脚本名称: /etc/init.d/crond

    crontab -e [-u 用户名] 编辑计划任务
    
    crontab -l [-u 用户名] 查看计划任务
    
    crontab -r [-u 用户名] 删除计划任务
    
    

    周期条件

    执行内容
    0-59(整数) 0-23(整数) 1-31(整数) 1-12(整数) * run_command
    50 3 2 1 * 执行命令或脚本
    例如:
    30 18 */3 * 1,3,5 /bin/rm-rf /var/ftp/pub/*
    30 18 /3 * 1,3,5 /bin/rm -rf /var/ftp/pub/ 每隔3天在周1,3,5来清除FTP服务公共目录.
    * - /
    表示该范围内的任意时间 表示间隔的多个不连续时间点 表示一个连续的时间范围 指定间隔的时间频率

    搭建一个Apache论坛

    该论坛是再虚拟机环境下运行,实机一样得操作。 
     
     恢复快照,检测是否有 阿帕奇
    
     service httpd restart
    
     源代码安装的 进入apache目录 删除即可
    
     yum源安装的 使用 rmp卸载 
    

    一、挂载

    mount  /dev/cdrom /mnt 挂载镜像文件到/mnt
    
    ls /mnt/Server/  查看是否有文件
    
    vim /etc/yum.repos.d/aa.repo 配置yum文件
    
    

    二、安装

    *【注:* 为安装http 下所有包】
    
    1.yum -y install http* (先装阿帕奇服务)
    
    2.yum -y install mysq* (数据库)
    
    3.yum -y install php* (php开发语言)
    
    

    三、启动

    service httpd restart 启动阿帕奇
    
    service mysqld restart 启动mysq
    
    再去启动论坛包(Discuz_X2_SC_UTF8)copy到虚拟机
    
    

    四、解压(zip压缩包)

    cd /root/Desktop 切换到桌面
    
    unzip Discuz_X2_SC_UTF8 解压Discuz到桌面
    
    cp -r upload /uar/www/html/ 复制upload文件到html
    
    cd /dav/www/html 
    
    ls 切换到html 查看是否有upload文件
    
    (恢复快照)重新配置ip
    
    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    
    ifdown eth0 && ifup etho
    
    ping通(192.168.18.222)--本机
    
    使用本机或者虚拟机浏览器进行访问
    
    192.168.18.221 Red Hat  192.168.18.221 upload
    
    

    五、安装

    192.168.18.221/upload进入Dis 安装向导
    
    修改阿帕奇权属权限
    
    chown apache upload html -R
    (-R递归修改所有权属)
    

    六、创建数据库

    mysql 进入数据库
    
    show databases; 显示当前数据库
    
    create database hehe; 创建 hehe
    
    grant all on hehe.* to ‘hh’@‘localhost’ identified by ‘123456’; (密码 ,授权)
    
    数据库名:hehe
    
    数据库用户名:hh
    
    密码:123456
    
    
    

    错误情况方案整理:

    1、数据库模版错误
    
       yum -y install php-*
    
    2、安装http中过程中途停止
    
       yum -y install httpd-devel
    
    3、安装mysql时出错
    
       yum -y install mysql-connector-odbc
    
    4、想卸载已安装http(apache)时,需在挂载镜像。
    
      yum -y remove http*
    
    
    
    5、配置yum(配置服务器中文包)
    
    yum install fonts-chinese.noarch
    
    yum install m17n-db-common-cjk
    
    yum install m17n-db-chinese
    
    

    NFS网络文件系统

    1.功能:文件共享

    2.协议与端口: 需要RPC进行控制

    NFS安装

    yum install nfs-utils protmap(端口分放)
    
    

    服务机 ip 221

    vim /etc/exports (配置文件)
    
    /aa 192.168.18.220/255.255.255.0(rw)
    
    根下aa  共享(客户机)ip/子掩网码  rw 读写 ro 只读
    
    cd / 切换到根下
    
    mkdir aa 创建aa目录
    
    touch aa/abc.txt 创建aa下abc文档
    
    service nfs restart 重启nfs服务
    
    

    客户机 ip 220

    showmount -e 192.168.18.221
    
    cd /
    
    mkdir pub 创建pub 文件
    
    mount 192.168.18.220:/aa pub 挂载到aa/pub
    
    切换到服务机 更改权属 
    
    ll -d aa 查看aa权限
    
          chmod o+w aa 修改aa权限(o 其他人)
    
    service nfs restart 重启服务
    
    切换到客户机 
    
    cd pub/
    
    vim abc.txt  修改
    
    touch aa.txt 创建一个文件
    
    切换到服务机
    
    cd aa  ls aa  查看是否有文件
    

    配置Samba

    samba 软件包

    samba.i386 : The Samba SMB server.

    samba-client.i386 : Samba (SMB) client programs.

    samba-common.i386 : Files used by both Samba servers and clients.

    安装samba

    mount /dev/cdrom /mnt  挂载
    
    切换到挂载目录进行配置
    
    cd /mnt/Server/  
    
    vim /etc/yum.repos.d/qq.repo
    
    r /etc/yum.repos.d/rhel-debuginfo.repo
    
    yum -y install samba
    
    

    编辑文件

    cd /etc/samba/ 切换
    
    vim smb.conf 配置文件
    
    
    vim /etc/samba/smb.conf
    
    security=share   ---共享
    
    找见[public] 7yy 复制7行 
    
    p 粘贴
    

    修改

    [aa]  --- 这是昵称
    
    comment = nidaye    ---注释信息
    
    path = /aa      ---要共享的目录
    
    public = yes ---公共的匿名用户可以访问的
    
    writeable = yes   ---可被写
    
    browseable = yes   ---可被浏览
    

    查看

    cd /  ls mdkir qq  返回根下查看 创建qq文件 
    
    cd qq touch aa.txt  切换到qq下创建aa文档
    
    service smb restart 重启smb服务
    
    

    修改文件权限

    1、 chmod o+w /aa 
    
    2、 cd /aa  chmod 777*
    
    

    Linux客户端

    smbclient -L //192.168.18.221---查看共享信息

    smbclient  //192.168.18.221/share-进入共享目录
    
    ? 查看有哪些命令可以使用
    
    ls 查看共享目录下有哪些内容
    

    windows客户端

    192.168.18.221 ---可以看到共享目录

    系统监控

    PS 进程监控

    ps工具标识进程的5种状态码

    D 不可中断 uninterruptible sleep(usually IO)
    R 运行 runnable (on run queue)
    S 中断 sleeping
    T 停止 traced or stopped
    Z 僵死 a defunct ("zombie") process

    使用方法

    ps [options] [--help]

    ps 的参数
    -A 列出所有的行程
    -w 显示加宽可以显示较多的资讯
    -au 显示较详细的资讯
    -aux 显示所有包含其他使用者的行程

    总述

    标识 释义
    USER 行程所拥有者
    PID pid
    %CPU 占用cpu使用率
    %MEM 占用的记忆体使用率
    VSZ 占用的虚拟机体大小
    RSS 占用的记忆体大小
    TTY 终端的次要装置号码

    COMMAND

    所执行的指令

    top动态监控系统进程

    TOP动态

    第一行任务队列信息 - 01:06:08 当前时间 1 user 当前登录用户数
    第二、三行 进程和cpu Tasks:158total 进程总数
    最后两行为内存信息 Mem:191272k total 物理内存总数 COMMAND 命令名/命令行

    SAR

    系统活动情况报告

    指令软件包:sysstat-7.0.3-3.el5.i386mp

    sar 命令常用格式

    sar [options][-A][-o file]t[n]

    其中:t:采样间隔 n 采样次数 默认值为1.

    options未明朗行选项,sar常用选项如下:

    -o file 表示将命令结果以二进制格式存放在文件中
    -A 所有报告的总和
    -u 输出cpu使用情况的统计
    -v 输出inode、文件和其他内核表的统计信息
    -d 输出每一个块设备的活动信息
    -r 输出内存和交换空间的统计信息
    -b 显示l/O和传送速率的统计信息
    -a 文件读写情况
    -c 输出进程统计信息,每秒创建的进程数
    -R 输出内存页面的统计信息
    -y 终端设备活动情况
    -w 输出系统交换活动信息

    vmstat监控工具

    vmstat 2 10 每隔两秒采集10次
    r---表示运行队列
    b---表示阻塞的进程
    swap----虚拟内存已经使用的大小
    si----每秒从磁盘读入虚拟内存的大小
    sp---每秒虚拟内存写入磁盘的大小
    in----每秒cpu的中断次数
    sy----系统cpu时间
    id----空闲cpu时间
    wt-----等等lO cpu 时间

    iostat

    主要可以显示cpu和1/O系统的负载情况及分区状态信息 直接执行iostat

    lsof 主要查看端口
    lsof -i 22 查看端口为22 的服务
    losf -g gid 显示归属gid的进程情况
    lsof -i 用以显示符合条件的进程情况
    echo $$ 当前进程号
    kill -9 5641 杀死(结束)5641进程
    strace 跟踪进程执行时的系统调用和所接受的信号。
    Find 详解 常见用法
    -name filenname #查找名为filename的文档
    -perm #按执行权限来查找
    -user username #按文档属主来查找
    -group groupname #按组来查找
    -mtime -n +n #按文档更改时间来查找文档 -n指n天以内,+n指n天以前
    -group groupname #按组来查找
    -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文档
    -size n[C] #查长度为n块[或n字节]的文档
    -prune #忽略某个目录

    shell脚本

    Shell:操作系统与用户进行交互操作的界面,提供脚本语言编程环境,方便用户自动批量处理大量的工作任务。

    红帽企业版linux一般默认的Shell是bash shell。

    vim aa.sh           #编辑aa脚本
    
    cd /root/Desktop   #切换到root下的桌面
    
    mkdir aa            #创建aa目录
    
    touch aa/aa.txt    #在aa目录下创建aa.txt
    
    sh aa.sh            #运行aa.sh脚本
    
    echo $$   查看当前进程号 
    
    bash      进入另一个shell
    
    exit      退出
    

    history 历史

    语法 替换
    !! 前一个命令
    !n 命令号n
    !-n 倒数第n个命令
    !cmd 最后用来启动cmd的命令

    多命令运行

    #!/bin/sh  注释信息,可写可不写
    
    echo $?  返回值:通过$?变量进行查看,返回0成功,不成功则返回非0值!
    
    有条件的链接命令
    
    &&  把两个命令链接在一起,只有第一个命令成功执行时,才会执行第二个命令。
    
    ||  把两个命令链接在一起,只有第一个命令失败时,才会执行第二个命令。
    

    Bash变量

    例如:aa=DataScience
    
    echo $aa 则会显示DataScience
    

    Shell变量

    A和B  A=123 B=234
    
    echo a:$A b:$B  显示AB变量内容
    
    a:123 b:234
    
    export A 将A变量提升为环境变量
    
    bash
    
    ps
    
    echo a:$A b:$B---- 启动一个bash ,通过ps运行,确定有俩个shell在运行;父shell(B),子shell(A)由于被提升为一个环境变量,A shell从B shell中继承了它,相反,A shell对B shell的变量B一无所知。Bshell 属于sleep状态。结果如下
    
    a:123 :b:
    
    exit  
    
    echo a:$A b:$B 退出再次查看
    
     a:123 b:234
    
    unset A B----- 取消环境变量A和shell变量 B 
    

    命令替换

    替换 语法 含义
    历史(history) 前一个命令行
    大括号(Brace) {} 指定的文本
    代字号(Tilde) ~username 用户的主目录
    变量 $,${...} Shell和环境变量
    算数(Arithmetic) $((...)) 算数运算
    命令替换 ‘...’,$(...) 运行在字shell中的命令的输出
    路径名(Pathname) [^...*]?,[...] 文件系统中匹配的文件名
    mkdir chap{a1,a2,a3,a4,}/{bb,cc} 需要先创建{a1,a2,a3,a4}
    
    mkdir -p {a1,a2,a3,a4,}/{bb,cc}
    
    

    算法

    a=123 b=234
    
    echo $(($a+$b))  ----- a+b
    
    357         ---------- 结果
    
    
    2、计算器
    
    Scale=2  保留几位小数, %取余。
    Quit     退出计算器
     :反斜杠 转义字符
    

    创建时间文档

     
     date +%Y%m%d  
     
    
    语法 作用
    避免下一个字符被shell解释
    “” 避免双引号内除了S、!和(反引号)字符以外的其它字符被shell解释
    ‘’ 避免单引号内的字符被shell解释
    alias 命令  Shell别名可创建扩展(替换)为任意文本的命令
    
    alias NAME=a
    
    unalias 取消 
    
    unalias a 取消a替换NAME的命令
    
    

    标准输入 标准输出

    echo “aaa”> aa.txt   创建aa.txt文档
    
    cat aa.txt       查看aa.txt文档
    
    设置密码(可批量设置用户密码)
    
    useradd u1   创建u1用户
    
    passwd u1    设置u1 密码
    
    useradd u2   创建u2用户
    
    vim bb.txt   新建立一个bb.txt文档
    
    123456      将密码输入 bb.txt文档中
    
    passwd u2  --stdin <bb.txt    将输入定向到文档中
    
    su - u1  切换到u1
    
    su - u2   切换到u2
    
    输入密码  123456
    
    

    标准输出和错误输出

    echo “aaabbccc”>aa.txt
    
    >>文件续写
    
    echo “aaabbbcc”>>aa.txt
    
    意思是用>把内容输入到文档中。
    
    head -1 /etc/rc.d/* > aa.txt 2>bb.txt 
    
    将标准输出和错误输出分别传到aa.txt和bb.txt
    
    head -1 /etc/re.d/* >aa.txt 2>&1 
    
    head -1 /etc/rc.d/* >& aa.txt
    
    将标准输出和错误输出合并到aa.txt
    
    

    Shell scripts

    scripts脚本返回值 echo $?

    返回值 退出状态
    0(Zero) Success
    Non-zero Failure
    2 Incorrect usage
    126 Not an executable
    127 Command not found
    vim aa.sh 编辑aa.sh脚本
    
    read -p "qing shu ru yong hu ming cheng " name
    
    echo $name
    
    sh aa.sh  运行aa,name脚本
    

    只读变量

    变量 含义
    最新执行的命令的退出状态
    - 当前启用中的shell选项标记
    $ 当前shell的进程id(PID)
    最新后台命令的进程ID(pid)
    _ 前一个命令的最后标记
    PPID shell父进程的ID(PID)
    SHELLOPTS 被冒号隔开的当前启用中的shell选项列表,和set -o命令结果一样
    UID 当前用户的用户id

    路径替换

    ~ */? []/[^] &

    比较--针对文件

    关于文件类型的判断,如:test -e filename

    -e 是否存在
    -f 是否为文件
    -d 是否为目录
    -b 是否为block device
    -c 是否为character device
    -S 是否为socket
    -p 是否为pipe文件
    -L 是否为链接

    比较--权限

    关于文件权限的判断,如:test -r filename

    -r 文件是否可读
    -w 文件是否可写
    -x 文件是否可执行
    -u 文件是否有SUID
    -g 文件是否有SGID
    -k 文件是否有Sticky bit
    -s 文件是否非空

    比较--新旧与大小

    比较两个文件大小,命令 例如: test A -nt B

    -nt A是否比B新
    -ot A是否比B旧
    -ef A是否和B是用一个文件,两个整数之间的判断。
    -eq 两个数相等
    -ne 两个数不等
    -gt A大于B
    -lt A小于B
    -ge A大于等于B
    -le A小于等于B

    Shell语法

    If语句格式

    (number=num)

    read -p "请输入一个数字" num 
    
           if [ $num -eq 3 ]   (如果)
    
    then
    
          echo "wo xiang ni"
    
    elif [ $num -le 5 ]
    
         then (然后)
        
         echo "zhen xiang le "
    
    else [ $num -ge 6 ] (否则)
    
          echo "miss 531"
    
    fi  (结束)
    
    

    闰年

    第一版

    year=`date +%Y`
    
    if [ $[ $year % 400 ] -eq 0 ]
    
    then
    
    echo "$year is a leap year."
    
    elif [ $[ $year % 4 ] -eq 0 ]
    
    then
    
    if [ $[ $year % 100 ] -ne 0 ]
    
    then
    
    echo "$year is a leap year."
    
    else
    
    echo "$year is not a leap year."
    
    fi
    
    else
    
    echo "$year is not a leap year."
    
    fi
    
    

    第二版(原版)

    year=$(date +%Y)
    
    if [ $[ $year % 400 ] -eq 0 ]
    
    then
    
    echo "$year is a leap year."
    
    elif [ $[ $year % 4 ] -eq 0 ]
    
    then
    
    if [ $[ $year % 100 ] -ne 0 ]
    
    then
    
    echo "$year is a leap year."
    
    else
    
    echo "$year is not a leap year."
    
    fi
    
    else
    
    echo "$year is not a leap year."
    
    fi
    
    

    第三版(查询哪一年是闰年)

    read -p "shu ru nian fen" year
    
    if [ $[ $year % 400 ] -eq 0 ]
    
    then
    
    echo "$year is a leap year."
    
    elif [ $[ $year % 4 ] -eq 0 ]
    
    then
    
    if [ $[ $year % 100 ] -ne 0 ]
    
    then
    
    echo "$year is a leap year."
    
    else
    
    echo "$year is not a leap year."
    
    fi
    
    else
    
    echo "$year is not a leap year."
    
    fi
    
    

    FOR 循环

    格式语法:for NAME in [ LIST ];do COMMANDS; done

    ​ 列表 执行命令 结束

    LIST用法

    直接写 1 2 3
    大括号 {1..5}
    文件名 /etc/*.conf
    命令结果 find /etc/ -name "*.conf"
    C语言风格 for ((i=0;i<5 i=i+2))
    i++

    ping网段案例

    ping.sh

    for p in {1..10}    p---变量名称
    
    do   do----执行内容
    
    host=(192.168.18.$p)
    
    ping -c2 192.168.18.$p >> /root/Desktop/2.txt  c2---频率
    
    if [ $? == 0 ]
    
    then
    
    echo "$host is online."     在线
    
    else
    
    echo "$host is offline."   不在线
    
    fi
    
    done
    
    

    while循环

    aa=1
    
    while [ $aa -le 10 ]
    
    do
    
    echo "wo xiang ni le"
    
    aa=$[$aa+1]
    
    done
    
    

    case 判断

    aa=3      ( 3 变量值)
    
    case "$aa" in   
    
        1)
        
         echo "haha";;  (1,2,4常量值)
        
        2)
        
         echo "heihei";;
        
        3)
     
         echo "nimei";; (有内容两;没有一个;)
    
    esac
    
    

    break

    终止当前for循环

    for n in {1..10}
    
    do
    
            if [ $n -eq 3 ]
        
            then
        
                    break
        
            fi
        
            echo $n
    
    done
    
    

    continue

    跳出本次循环

    for n in {1..10}
    
    do
    
            if [ $n -eq 3 ]
        
            then
        
                   continue
        
            fi
        
            echo $n
    
    done
    
    

    正则表达式

    是指用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。就是用某种模式去匹配一类字符串的一个公式。

    touch bb.txt
    
    grep “m*” bb.txt
    
    

    基本元字符集

    grep -E = egrep

    · 匹配任意单个字符。 如:rat、r、t。
    ^ 匹配一行的开始
    $ 匹配一行的结尾
    匹配0个或多个前面的字符
    + 匹配1个或者多个+前面的字符(需要号,如grep -E “11+” /root/2)
    ? 匹配0个或1个?之前的字符
    转义
    []匹配括号中的任何一个字符。如:[abc]
    [^] 匹配不在括号中的,表示排除 如[^abc]或者 grep -v [abc]
    < 匹配词的开始
    > 匹配词的结束。 如 <the>。
    | 或。 例如 (him|her)
    {m} 前面的表达式重复m次。如:“w{2}”相当于“ww”。
    {m,n} 表达式至少重复m次,做多重复n次。如:“ba{1,3}”匹配“ba”或“baa”“baaa” "d{2,3}"
    {m,} 表达式至少重复m次
    w 任意一个字母或数字或下划线
    d 任意一个数字 grep [0-9] bb.txt
    s 空格、制表符、换页符、空白符中的任意的一个。
     匹配一个单词的边界。如:“..” 以什么开头放后边 以什么结尾放前边

    环境支持

    命令或环境 · [] ^ $ ( ) { } ? + | ( )
    vi × × × × ×
    awk × × × × × × × ×
    sed × × × × × ×
    grep × × × × × ×
    egrep × × × × × × × × ×
    perl × × × × × × × × ×
  • 相关阅读:
    九度 1363 欢乐斗地主
    九度 1377 缓变序列
    九度 1376 最近零子序列
    转几篇关于linux下AT&T汇编的帖子
    九度 1358 陈博的平均主义
    九度 1394 五连击数组
    HDU 2817 A sequence of numbers
    HDU 1867 A + B for you again
    HDU 1753 大明A+B
    HDU 1715 大菲波数
  • 原文地址:https://www.cnblogs.com/a2data/p/12774491.html
Copyright © 2020-2023  润新知