• LINUX基础命令


    命令格式:命令关键字 选项 参数 ls -l /etc (find /etc --name password)帮助命令:man help info

    cd 切换目录 cd .. cd-

    绝对路径:从根目录 /etc/passwd

    相对路径:从当前目录 ./ ../

    [root@localhost ~]# root用户名 localhost主机名 ~当前所在目录 #root用户 $普通用户

    ls查看目录下内容

    选项:-a看隐藏文件(.文件名)

      -l = ll 以长格式显示信息

      -h 以人类可读的方式显示大小

    -文件类型 -普通文件 d目录 b块设备文件 c字符设备文件 l链接文件 s套接字文件 p管道文件

    文件管理命令:

    touch 创建文件或更新时间戳

    mkdir 创建目录 -p -v

    rm 删除 -f -r(目录)-I

    wc  统计 -c -w -l

    cp 复制文件 -a -p(保持文件权限) -r

    mv 移动或重命名

    tree 查看目录树 -L

    cat tac nl more  less head -n(看文件前n行) tail  -n(看文件后n行)(-f 排错(持续监控日志文件尾部变化))查看文件内容

    which 查找命令绝对路径

    find 按条件查找文件

    查找系统中以bak结尾的文件并删除

    find / -name *bak -exec rm -rf {} ;

    whereis -b -m

    locate -->updatedb(更新数据库) -->安装mlocat 查找速度比find快

    grep 过滤 -i -v取反 -E支持扩展正则表达式()-o只显示要过滤的关键字 -A -B -w

    压缩文件

    gzip/gunzi=gzip -d -->.gz 1-9

    bzip2/bunzip2=bzip2 -d -->.bz2

    tar 制作或释放归档文件 -c -v -j(bz2) -z(ge) -f -x -C(解压指定路径)

    通配符: ?任意一个字符  *任意所有字符

    管道符:| 前一个命令的结果作为后一个命令的执行目标

    正则表达式: ^以……开头

      $以……结尾      grep基础正则表达式

      |或                 扩展正则表达式

    sbin bin 放命令 boot  启动文件 dev 设备文件 etc 配置文件 home 普通用户家目录 lib lib64 库文件 media 挂载光盘 mnt 挂载可移动设备 proc 虚拟目录(内存里)root 超级用户家目录 run 服务启动目录  usr var 可变长文件

    exit 退出登录,注销  ctrl+d

    history 查看历史命令记录 调用!!上一条命令 !n 查看第n条命令 -c(.bash_logout)关机清空历史纪录

    关机:shutdown -h now, init 0, halt,poweroff

    runlevel 查看系统运行级别

    重启:shutdown -r now,init 6,reboot

    uname 查看系统信息 -a -r(内核版本)

    查看centos系统版本cat /etc/redhat-release

    Centos6与Centos7区别:内核版本不同6-->2.6  7-->3.10,默认文件系统不同6-->ext4   7-->xfs

    Echo 打印 echo $?打印上一条命令的状态码用于检测上一条命令执行是否成功

    vim 编辑器<--vi

    yum -y install vim

    命令模式 -->i a o s      esc<--编辑模式-->:/         esc<-- 末行模式

    命令模式:

    dd 删除行(剪切 )

    D 删除光标后内容

    yy 复制

    p 粘贴当前光标下一行

    x 删除当前光标字符

    u 撤销

    Ctrl+r 恢复

    gg 跳到首行

    G 最后一行

    w 移动单词

    v 可视   x删除 y复制

    Ctrl +v可视块

    末行模式:

    q q! w w! wq wq! x

    / 查找

    %s/old/new/g 替换

    .vimrc vim的配置文件

    编辑模式:补全出现过的单词 ctrl+n/p

    软件包管理:

    dpkg -->ubuntu  suse  debian          -->apt        apt-get

    rpm  -->redhat  centos  fedora        -->yum      yum install

     

    rpm 管理rpm包 -i -v -h  -a  -q  -e  --nodeps

    yum 自动解决rpm包之间的依赖关系    -y

    install

    update

    remove

    list

    list installed

    Info

    clear all

    makecache

    provides 查看包

    源码包(tar包)

    解包 tar xf 包名 -C /usr/src

    配置 ./configure --prefix=/usr/local/xxx(gcc  gcc-c++)

    编译 make

    安装 make install

     

    date 时间

    data -s 修改时间 %s时间戳(19700101)

    date +%Y%m%d 显示年月日

    bc 计算器

    vimdiff diff比较两文件不同

    用户管理:

    用户分类:超级用户(root)   uid  0

        普通用户                    uid  1000

        程序用户                    uid  1-999

    Userdel 删除用户 -r 删除家目录

    useradd -u指定uid -g指定gid -d指定家目录位置-M指定不创建家目录 -G指定附加组

    passwd -l -u

    echo "123123" |passwd --stdin ***

    usermod -c -d -g -L -U -e -G修改用户信息

    chage 修改密码信息 -d 0

    croupadd 添加用户组 -g

    chgrp

    chsh 或usermod更改用户的shell

    who  whoami  id groups w

    last  lastlog

    用户切换和授权

    su   -   改变环境变量   -

    sudo  授权

    visudo(自动检测是否出错)   =vim /etc/sudoers

    用户组授权前加%

    文件权限:

    chmod  u/g/o/a  +/-/=rwx filename 修改文件权限

    -0   r4   w2     x1

    chown   修改文件归属   属主   属组

    umask   查看或修改mask值

    特殊权限位: SUID  SGID  SBIT

    ACL 访问控制列表

    getfacl  查看acl控制列表

    setfacl   -m  u:***:rwx   ***

              -x             最后删除mask值

              -b             还原RCL列表

    特殊文件权限:

    chattr           +、- 修改

    lsattr           查看

    i    不能修改                        passwd     shadow

    a   只能追加,不能修改       日志

    只能root设置、修改

     

     

     

    磁盘管理:

    SATA   SAS   -->sd           

    磁盘逻辑结构:柱面、磁道、扇区(512字节)

    MBR  主引导记录   位于磁盘的第一个扇区

    dd if=/dev/sda of=/etc/mbr.bak bs=512 count=1

    512:4*16=64     446引导记录(grub)    2校验字节

    fdisk    划分磁盘分区  -l    查看

    mkfs     创建文件系统 -b  -I

    mount    挂载

    umount   卸载

    df   -Th  查看挂载

    du -sh 查看磁盘大小

    inode              记录文件原信息(硬链接inode相同,软链接inode不同类               似于快捷方式;删除原文件,对硬链接无影响,软链接不可以;目录不可以做硬链接,可以做软链接;硬链接不可跨文件系统,软链接可以;硬链接ln,软链接ln -s)

    block              记录文件内容(默认1k,2k,4k)

    superblock      记录系统inode信息

    dumpe2fs 

    /etc/fstab   开机自动挂载

    blkid   查看硬盘UUID

    nmcli con show  查看网卡UUID

    Partprobe partx  同步分区表

    Parted  超过2T

    GTP    2T

    swap 交换分区(一般为内存2倍)

    mkswap

    swapon 激活交换分区  -s 查看现有交换分区

    swapoff 关闭交换分区

    uptime 查看系统负载

    free -m 查看内存使用情况

    启动流程:

    1、BIOS加电自检

    2、MBR引导

    3、GRUB引导

    4、加载kernel(内核)

    5、启动init(centos 6)--->system(centos 7)

    系统非正常关机下存放的碎片文件

    修改密码:

    Centos6 :e2e 空格1 回车再按b passwd reboot

    Centos7 重启系统,按任意键中断启动加载器的倒计时;按e选定编辑条目,将光标移动到内核命令行(以linxu16开头的行)在行尾添加rd.break;按ctrl+x

    使用这些更改启动,然后重新挂载mount – o remount,rw /sysroot;chroot /sysroot,然后修改密码;如果开启selinux,touch /.autorelabel;执行两次exit

     

    RAID:磁盘冗余阵列

    RAID0:条带模式,读写速度快,磁盘利用率高;没有数据冗余

    RAID1:镜像模式,数据完全冗余,读速度快;磁盘利用率低    2*n     50%

    RAID5:磁盘利用率想对较高,有数据冗余,允许一块硬盘损坏;写速度慢   3   n-1/n

    RAID5+1:热备盘

    RAID10:先做RAID1,再做RAID0

    RAID6:两块校验盘

    mdadm -C 创建新的RAID -l设置RAID级别 -n -x

    LVM:逻辑卷,动态管理磁盘

    lvextend 扩容后:

    ext4   -->resize2fs

    xfs    -->xfs-growfs

     

    计划任务管理:

    一次性计划任务at  --->atd

    Systemctl start std

    周期性计划任务crond(分,时,日,月,周)

    Systemctl start crond

    Crontab -e

    Crontab -l

    Crontab -r

    命令绝对路径

    最小单位:分

    $()或’’先执行

    进程管理:

    程序:静态

    进程:动态  -->PID(进程号) PPID(父进程号)

    top 动态查看进程信息

    cat /proc/cpuinfo |grep core查看内核

    ps -aux  -ef

    kill 杀死PID进程 -9强制杀

    killall 根据进程名杀

    pkill 根据特殊条件杀

    pgrep 根据特点条件查pid

    pstree 进程树

    nice

    renice

    优先级 -20 20 只有root可以设定负的优先级

    &后台

    jobs 查看后台任务

    fg 1 调到前台

    ctrl+z停止

    bg 1在后台继续运行

     

    sort排序

    -n 按数字进行排序

    -r 倒序

    -k

     

    time 统计命令执行时间

    网络管理命令:

    ip addr、ifconfig查看网卡信息IP地址

    route

    hostname 查看或修改主机名(7:/etc/hostname 6:/etc/sysconfig/network)

    bash 打开新的shell

    nmap 端口扫描

    常见服务的端口号:

    ftp 20/21 ssh 22 telnet 23 smtp 25 dns 53  dhcp 67/68 tftp 69 http 80 pop3 110 nfs(rpc) 111 ntp 123 imap 143 https 443 rsync 873 mysql 3306

    redis 6379

     

     

    ftp 文件传输协议:

    20:数据

    21:控制

    连接方式:

    主动连接

    被动连接

    传输模式:

    文本模式

    二进制模式

    用户:

    匿名用户:ftp anonymous

    本地用户:Linux系统中

     

    DNS域名解析协议

    tcp   53 主从服务器数据同步

    udp   53 域名解析

    完整域名 www.baidu.com

    . 根域

    .com 顶级域   .cn  .com   .org   .edu

    .baidu 二级域

    www   主机头

     

    hosts  早期用来做域名与IP映射

    DNS查询方式:

    递归:C-S

    迭代:S-S

    DNS解析:

    正向解析

    反向解析:反垃圾邮件

    知名DNS服务器:

    114.114.114.114

    8.8.8.8

    Linux:

    bind

    named

    /etc/named.conf

    /var/named/

    hosts文件优先级高于DNS

    命令(bind-utils):

    host

    nslookup

    dig

    解析记录:

    SOA授权域

    NS管理这个域—>DNS服务器自己的域名

    MX邮件交换记录

    A域名映射IP

    CNAME别名

    *泛解析

    PTR反向解析记录

     

    域名服务器分类

    主域名服务器

    从域名服务器

    缓存域名服务器

     

    CDN内容分发网络

    缓存

    流程:

    1.  客户端发送域名解析请求到本地DNS服务器;

    2.  本地DNS服务器将请求转发给CDN DNS 服务器;

    3.  CDN DNS解析后将服务器地址返回给客户端;

     

     

    Shell 脚本

    面向过程     动态语言   解释型     弱类型

    变量

    规则:只能以字母和下划线开头,包括字母、数字、下划线。区分大小写

    规范:1、变量名要有意义

           2、采用驼峰式命名 SameName sam_name

    定义变量

    变量名=变量值

    调用变量

    $变量名

    打印变量值:

    echo $变量名

    printf $变量名

    printf “$a ”

    删除变量:

    unset  变量名

    declare -i 变量名 声明该变量为整数型 +i取消声明

    declare -r变量名 声明只读变量

    环境变量(全局变量)

    env  查看系统环境变量

    /etc/profile-->/etc/profile.d/*.sh

    ~/.bash_profile -->~/.bashrc-->/etc/bashrc

    export 变量名 将该变量导出为全局变量

    自定义变量(局部变量)

    预定义变量  

    $0    保存脚本的路径和名称

    $1 $2 $3 … 位置变量,不交互传参

    $*    保留传入的所有参数(整体)

    $@    保留传入的所有参数(单个)

    $#    传入参数的个数

    $$    保存脚本的pid

    $?   保存上一条命令执行状态码

    #!    幻数-->指定解释器

    注释

    执行代码

    执行脚本方式:

    1、bash或sh脚本名执行,在子shell中执行结束后退回到父shell

    2、相对路径或绝对路径执行,必须有执行权限chomd +x

    3、Source或.执行,在当前shell下执行

    符号:

    单引号,原样输出

    双引号,解析变量

    赋值时,如果有空格,就用引号引起来

    $()或``先执行括号中命令,拿到命令结果

    shell计算:

    $(())整数计算,判断

    let 整数计算

    expr 整数计算 *(乘号要转义)字符与字母要报错

    bc

    $[]

    条件测试

    [ 条件 ] 或 test 条件测试

    文件测试:

    -f 是否是文件

    -d 是否是目录

    -e 文件或目录是否存在

    -s 是否是一个空文件 非空为真

    整数测试:

    -eq 等于

    -ne 不等于

    -gt 大于

    -lt 小于

    -le 小于等于

    -ge 大于等于

    字符串测试:

    == 字符串相等

    =

    -z 测试是否为空字符串 非空为假

    逻辑运算符:[[ ]]

    && 或 -a  与

    || 或 -o  或

           非

    case 变量 in

    条件1)

         执行代码

    ;;

    条件2)

         执行代码

    ;;

    for i in `seq 100` ;do

            if [ $((i%2)) -eq 0 ];then

                    sum=$((i+sum))

            fi

    done   

    echo $sum

    获取字符串长度:

    echo $name|wc -L

    echo ${#name}

    echo length $name

    字符串截取:

    echo ${name:起始位置:个数}

    echo $name|cut -c 起始字符数-结束字符数

    字符替换:

    abcABC123ABCabc

    echo ${name#a*C}    123aABCabc

    echo ${name##a*C}   abc

    echo ${name%a*C}    abcABC123ABCabc

    echo ${name%A*c}    abcABC123

    echo ${name%%A*c}   abc

    echo ${name/abc/456}456ABC123ABCabc

    echo ${name//abc/456}456ABC123ABC456

    正则表达式:

    基础正则表达式:grep egrep sed awk

    .匹配任意一个字符

    *匹配前一个字符或表达式任意次

    ^匹配以…开头

    $匹配以…结尾

    []匹配括号中任意字符 [^0-9] 取反 [a-z]

    {n,}匹配前一个字符或表达式最少n次

    {,m}匹配前一个字符或表达式最多m次

    {n,m}匹配前一个字符或表达式n到m次

    扩展正则表达式:egrep = grep -E awk sed -r

    +匹配前一个字符或表达式1次或1次以上

    ?匹配前一个字符或表达式0次或1次

    ()分组

    |或

    sed流编辑器

    sed 选项‘操作 地址’文件

    -r 支持扩展正则表达式

    -i 修改文件

    -n 安静模式,只输入处理的行

     

    i 插入一行

    a 追加

    d 删除

    c 整行替换

    s 字符串替换

    p 打印

     

    echo http://www.baidu.com/1.mp3|sed -nr ‘s#(.*)//(.*)/(.*)#2#gp’

    ip a show eno16777736|sed -n "3p"|sed -nr 's#(.*) (.*)/(.*)#2#p'

     

    awk

    默认分隔符为空格  -F指定

    内置变量

    NF处理的列数 $1代表第一段 $0整行

    NR处理的行数

    cut 切割

    -c切割字符

    -b按字节切割

    -d指定分割符

    -f指定段数

    uniq 去重(相邻)

    -c 统计重复出现的行

    查看系统中命令使用最多的

    history |awk '{print $2}' |sort |uniq -c |sort -nr |head

     

    ping

    -c 指定发送数据包

    -w 发包的时间间隔

    -i 等待多上时间认为发送失败

    脚本:

    1、统计192.168.2.0/24内有多少主机存活?

    2、批量创建10个用户,可以为这些用户设置统一的默认密码;强制用户首次登陆修改密码;

    3、统计当前内存使用情况,如果内存使用率超过80%,打印报警

    awk ‘{print $1}’ /etc/httpd/logs/access_log |sort|uniq -c|sort -nr

    awk ‘{array[$1]++} END{for (i in array) print i,array[i]}’ /etc/httpd/logs/access_log

    YoLa.2575+

    数组:

    array=(a b c d)

    echo ${array[0]} a

    unset array[]

    echo ${array[*]:1:2}

    echo ${array[*]/a/b}

    web 2.0

    http 1.1 80  https 443

    静态网站:没有交互,没有程序,没有MySQL

    1、每个页面有一个特定的URL地址,不含?或&等特殊符号

    2、每个网页都是独立的实体文件

    3、内容是固定不变的,容易被搜索引擎收录(优点)

    4、网页没有数据库支持,在制作和维护方面工作量较大,当网站数据量比较大时,

    5、交互性差,

    动态网站:交互的,有程序(php,java,python,perl)

    http状态码    200

                   301

                   401

    403

    404

    500

    502

    LAMP Linux Apache(7 2.4  6 2.2) MySQL/Mariadb php/python/perl

    虚拟主机:

    基于IP

    基于域名

    基于端口

    IO

    < 标准输入           0

    > 标准输出(覆盖)   1

    >> 标准输出(追加)

    2>标准错误           2

    2>>

    &>混合输出

     

  • 相关阅读:
    如何快速建立自己的知识体系
    让你的网站变成灰色
    Java多线程-锁升级
    冰河正则大全
    Win硬盘/U盘设置图片
    MySQL——三范式
    MySQL——事务
    MySQL_explain
    HDFS的一些常用指令
    Hadoop集群的搭建准备
  • 原文地址:https://www.cnblogs.com/zm-1105/p/10761470.html
Copyright © 2020-2023  润新知