• Linux基础知识整理


    一、运维工程师的三大职责:

    1、数据安全

    2、永不宕机

    3、体验更好

     

    二、Linux系统知识学习

    2.1 shell及其常用命令

    绝对路径,相对路径:
    • 绝对路径:路径的写法“一定由根目录 / 写起”,例如: /usr/share/doc 这个目录。

    • 相对路径:路径的写法“不是由 / 写起”,例如由 /usr/share/doc 要到 /usr/share/man 下面时,可以写成: “cd ../man”这就是相对路径的写法啦!相对路径意指“相对于目前工作目录的路径!”

       

    命令行操作快捷键:

    tab 至少两次 快速输入找到想使用的命令。

    Ctrl+a 光标回到命令行首

    Ctrl+e 光标回到命令行尾

    Ctrl+k 复制剪切(删除)光标处到行尾的字符

    Ctrl+u 复制剪切(删除)光标处到行首的字符

    Ctrl+y 粘贴Ctrl+u,Ctrl+k,Ctrl+w删除的文本

    Ctrl+c 中断终端正在执行的任务或者删除整行

    Ctrl+d 退出当前Shell命令行,还可以关闭xshell

    Ctrl+r 搜索命令行使用过的历史命令记录

    Esc+.(点) 获取上一条命令的最后的部分(空格分隔)

    Ctrl+l 清除屏幕所有内容,并在屏幕最上面开始一个新行,等同clear命令

    !! 执行上一条命令

    !pw 执行最近以pw开头的命令

     

    系统关机重启注销命令:

    systemctl halt 关闭系统CPU停止工作

    systemctl poweroff 关闭系统并切断电源

    systemctl reboot 重启系统

    exit 注销退出当前用户窗口

     

    目录的基本操作:
    • tree 用于以树状图列出目录的内容

    tree -L 1 指定层数显示目录

    tree -d 只显示目录

    • mdkir 创建目录

    mdkir -p /11/22/33 创建多个路径

    • cd 切换工作目录

    • rm -r 删除目录

     

    文件的基本操作:
    • touch 创建文件

    • cp 复制文件

    • mv 移动文件

    • rm 删除文件

      rm -r 删除目录

      rm -f 强制删除

     

    内容操作:

    vi 文本编辑工具,具体操作看下文

     

    目录结构:

    /etc:系统初始化及设置相关重要文件

    /etc/resolv.conf:Linux系统 DNS客户端的配置文件

    /etc/hosts:系统本地的DNS解析文件

    /etc/fstab:配置开机设备自动挂载的文件

    /etc/rc.local:存放开机自启动程序命令的文件

    /etc/profile及/etc/bashrc:配置系统的环境变量/别名等的文件

    /etc/redhat-release:查看系统版本

    /etc/sysctl.conf:Linux内核参数设置文件

    /etc/init.d:存储系统或服务器以System V模式启动的脚本文件(CentOS7以前)

    /etc/inittab:设置开机运行级别以及启动相应级别脚本的文件(CentOS7以前)

    /etc/hostname:主机名配置文件

    /usr/local:源码编译安装软件默认的位置路径

    /var/log:记录系统及软件运行信息文件所在的目录

    /proc:进程及内核信息存放目录

     

    文件查找:
    find

    用于在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名,其支持按名称查找、按正则表达式查找、按文件大小查找、按文件权限查找等多种查询方式。如果在使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。

    语法:find + 目标目录(路径) + <选项> + 参数 例:查看tomcat目录下哪些文件带有“127”,命令如下

    find -type f -name "*.xml" |xargs grep '127'

    locate

    其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

    whereis

    whereis 文件名 主要用于程序名的搜索

    which

    which 可执行文件名 会在环境变量$PATH设置的目录里查找符合条件的文件

     

    实验:

    如何查找带有xxx内容的文件

    find /home/hadoop/ -type f -name '*.py'|xargs grep -n 'data_chushou'

     

    打包命令:

    tar zcvf /opt/data.tar.gz ./data 将当前目录下的data目录打包成data.tar.gz

    tar zcvf aaa.tar.gz ./* --exclude=4.txt --exclude=5.txt 打包时排除指定的文件

    tar tf /opt/data.tar.gz 查看压缩包里的内容

    tar zxvf /opt/data.tar.gz -C /tmp 将data.tar.gz解压到指定的目录

     

    实验:

    编写shell脚本:

    ]# vim info.sh

    #!/bin/bash

    mkdir /home/test{1,2}

    dd if=/dev/zero of=/home/test1/a bs=1M count=10 &>/dev/null

    ln /home/test1/a /home/test2/a_ln

    cp /home/test1/a /home/test2/a_bak

    tar -zcvf /home/test1/a.tar.gz /home/test1/a &>/dev/null

    if [ $? == 0 ]

    then  

    echo "success"

    else  

    echo "no success"

    fi

     

    2.2 磁盘管理

    mount 挂载命令

    umount 卸载命令

    df 显示磁盘分区上的可使用的磁盘空间

    开机自动挂载分区,将要挂载的分区写入到/etc/fstab文件中:

    UUID=79a3924b-739e-48dc-ab0c-0444b9ac6591 swap swap defaults 0 0

    设备名(UUID) 挂载点 文件系统类型 挂载参数 是否备份 是否开机检查/dev/sda1

    查看设备UUID:

    blkid 对查询设备上所采用文件系统类型进行查询

    df -i 查看inode大小

    df -h 查看分区大小

    du -h /opt 查看指定目录大小

     

    实验:

    [root@localhost ~]# fdisk /dev/sdb

    Welcome to fdisk (util-linux 2.23.2).

    Changes will remain in memory only, until you decide to write them.Be careful before using the write command.

    Device does not contain a recognized partition tableBuilding a new DOS disklabel with disk identifier 0x718957f9.

    Command (m for help): nPartition type: p primary (0 primary, 0 extended, 4 free) e extendedSelect (default p): pPartition number (1-4, default 1): 1First sector (2048-41943039, default 2048):Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +1GPartition 1 of type Linux and of size 1 GiB is set

    Command (m for help): p

    Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x718957f9

    Device Boot   Start     End   Blocks Id System/dev/sdb1     2048   2099199   1048576 83 Linux

    Command (m for help): tSelected partition 1Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM'

    Command (m for help): p

    Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x718957f9

    Device Boot   Start     End   Blocks Id System/dev/sdb1     2048   2099199   1048576 8e Linux LVM
    Command (m for help): wThe partition table has been altered!

    Calling ioctl() to re-read partition table.Syncing disks.

    [root@localhost ~]# partprobe -s /dev/sdb1 /* 不重启机器 ,让机器识别 /

    [root@localhost ~]# mkfs.ext4 /dev/sdb1

    [root@localhost ~]# mkdir /data

    [root@localhost ~]# mount /dev/sdb1 /data /* 将新创建好的分区挂载到目录下 /

    [root@localhost ~]# df -h

    [root@localhost ~]# blkid /* 查看分区的UUID,UUID需要记录 /

    /dev/sdb1: UUID="cbbf1327-22f9-4e71-b161-11eda3865999" TYPE="ext4"

    [root@localhost ~]# echo "UUID=cbbf1327-22f9-4e71-b161-11eda3865999 /data ext4 defaults 0 0" >> /etc/fstab

    [root@localhost ~]# pvcreate /dev/sdb1 /* 将分区初始化为物理卷,如果在初始化的时候出错了,可能是因为分区的分区类型不正确,区的类型要求是8e(linux lvm) /

    Physical volume "/dev/sdb1" successfully created.

    [root@localhost ~]# vgcreate vg1 /dev/sdb1 /* 创建物理卷组vg1 /

    Volume group "vg1" successfully created*

    [root@localhost ~]# lvcreate -L 500M -n u02lv vg1 /* 创建逻辑卷组u02lv,指定大小为500M */

    Logical volume "u02lv" created.*

    [root@localhost ~]# lvdisplay /* 检查 */

    [root@localhost ~]# mkfs.ext4 /dev/vg1/u02lv /* 格式化新建的逻辑卷 */

    [root@localhost ~]# mkdir /data1

    [root@localhost ~]# mount /dev/vg1/u02lv /data1

    [root@localhost ~]# df -h

    /dev/mapper/vg1-u02lv 477M 2.3M 445M 1% /data1

    [root@localhost ~]# blkid

    /dev/mapper/vg1-u02lv: UUID="09134afa-c128-4c8e-85c4-5f26f6cc7e9e" TYPE="ext4"

    [root@localhost ~]# echo "UUID=09134afa-c128-4c8e-85c4-5f26f6cc7e9e /data1 ext4 defaults 0 0" >> /etc/fstab

     

    2.3 文件编辑器vi的使用

    普通模式:

    :set nu 显示行号

    普通模式:移动光标

    行尾 $

    行首 0

    文件尾部 G

    文件开头 gg

    到指定行 阿拉伯数字gg

    普通模式:搜索与替换操作

    向下搜索 /3306 继续搜 按n,反向搜N

    向上搜索 ?80 继续搜 按n,反向搜N

     

    普通模式:替换

    :%s/A/B/g

    :%s#world#oldgirl#g

    /#还可以用@等特殊字符替换,实际就是分隔符。

    s是替换 g表示全局(所有)指

    定行号替换:

    :4,6s/oldboy/oldgirl/g

     

    普通模式:复制、粘贴、删除等操作

    删除单行 dd(剪切)

    删除多行 ndd n用任意数字替换

    撤销 u

    单行复制 yy

    多行复制 nyy n用任意数字替换

    粘贴 p

     

    进入编辑模式命令

    i 插入

    A 追加 行尾插入

    a 光标下一个字符插入

    o 下一行开头插入

    O 上一行开头插入

     

    命令行模式

    :wq 退出并保存

    :wq! 退出并强制保存,“!”为强制的意思

    :q! 强制退出,不保存

    :set nu 显示行号

    :set nonu 与set nu相反,取消行号

     

    2.4 系统管理

    用户管理 :

    useradd

    -u 指定UID

    -s 指定登录的SHELL解释器

    -M 不创建家目录

    -g 指定所属的组

    -d 指定家目录

    userdel

    -r 递归删除用户目录及下面内容

    usermod

    -u 指定UID

    -s 指定登录的SHELL解释器

    -M 不创建家目录

    -g 指定所属的组

    -d 指定家目录

    -G 修改此用户为多个不同组的成员

    -a 追加用户到用户组,仅与-G参数连用

    groupadd 添加用户组

    -g 指定组ID groupdel 删除用户组

     

    实验:

    [root@ecs-9253 ~]# groupadd oinstall

    [root@ecs-9253 ~]# groupadd dba

    [root@ecs-9253 ~]# useradd -g oinstall -G dba -s /bin/bash oracle

    [root@ecs-9253 ~]# id oracleuid=1001(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba)

    [root@ecs-9253 ~]# mkdir /home/test

    [root@ecs-9253 ~]# chown -R oracle.oinstall /home/test

    [root@ecs-9253 ~]# ll -d /home/testdrwxr-xr-x 2 oracle oinstall 4096 Mar 9 15:19 /home/test

    ## 设置oracle用户默认的nofile,nproc 的 soft,hard限制

    [root@ecs-9253 ~]# cat /etc/security/limits.conf |egrep -v "#|^$"* soft nofile 65535* hard nofile 65535oracle soft nproc 65535oracle hard nproc 65535

     

    2.5 定时任务

    周期性的执行任务计划的软件,Linux定时任务的常用软件crond。

    cron是定时任务的软件名,crond是服务进程名,真正实现定时任务服务。

    crontab命令是用来设置定时任务规则的配置命令。

    例:在晚上0点运行脚本

    00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null

     

    2.6 网络的基本配置

    启用,禁用网卡命令

    [root@ecs-9253 ~]# ifconfig eth0 up

    [root@ecs-9253 ~]# ifconfig eth0 down

    设置网卡为静态IP地址:

    vi /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0         #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0
    BOOTPROTO=static       #设置网卡获得ip地址的方式,可能的选项为static,dhcp或bootp,分别对应静态指定的 ip地址,通过dhcp协议获得的ip地址,通过bootp协议获得的ip地址
    IPADDR=12.168.0.33     #如果设置网卡获得 ip地址的方式为静态指定,此字段就指定了网卡对应的ip地址
    NETMASK=255.255.255.0   #网卡对应的网络掩码
    GATEWAY=192.168.1.1     #默认网关
    DNS1=223.5.5.5   #首选DNS服务器
    DNS2=8.8.8.8   #备用DNS服务器

    修改网关配置:

    vi /etc/sysconfig/network
    NETWORKING=yes     #(表示系统是否使用网络,一般设置为yes。如果设为no,则不能使用网络,而且很多系统服务程序将无法启动)
    HOSTNAME=centos   #(设置本机的主机名,这里设置的主机名要和/etc/hosts中设置的主机名对应)
    GATEWAY=192.168.0.1 #(设置本机连接的网关的IP地址。)

    修改DNS配置:

    vi /etc/resolv.conf
    nameserver 223.5.5.5   #首选DNS服务器
    nameserver 114.114.114.114   #备用DNS服务器
    search localdomain   #域名

    重启网络服务:

    systemctl restart network

    查看默认路由:

    route -n

     

    2.7 系统监控

    CPU监控:

    top 提供了实时的对系统处理器的状态监视

    htop 是一个 Linux 下的交互式的进程浏览器,可以用来替换Linux下的top命令

    内存监控:

    free 工具用来查看系统可用内存

    vmstat 实时动态监视操作系统的虚拟内存、进程、CPU活动

    IO监控:

    iostat 动态监视系统的磁盘操作活动

    iotop 是一个用来监视磁盘I/O使用状况的top类工具

    系统负载:

    uptime 打印系统总共运行了多长时间和系统的平均负载

    tar 系统运行状态统计工具

     

    2.8 如何杀进程

    kill -pid 只杀死指定进程号的进程

    killall httpd 杀死同一进程组内的所有进程

    kill -l PID 用启动进程的用户已注销的方式结束进程

     

    2.9 知道pid号后,如果查找进程工作目录,用什么命令

    方法1

    使用pwdx命令,这是最简单的方法,提供进程号,该命令就可以返回进程的工作目录。比如有一个进程号是1833的进程,使用命令,

    [root@ecs-9253 ~]# pwdx 1833

    1833: /

     

    方法2

    使用/proc/{pid}这个重量级工具,在/proc/{pid}目录下有一个叫做cwd的软连接,通过查看这个原链接就可以知道进程的工作路径了。使用如下命令:

    [root@ecs-9253 ~]# ll /proc/1833/cwd

    lrwxrwxrwx 1 root root 0 Mar 8 15:34 /proc/1833/cwd -> /

     

     

  • 相关阅读:
    Stack
    js this理解
    js面向对象
    自执行函数
    原!struts安全漏洞,由2.3.37版本升级至2.5.22
    原!linux机器 配置自动scp脚本
    转!!记一次使用 Arthas 热更新线上代码
    mysql 修改大表字段,报错ERROR 1878 (HY000): Temporary file write failure. 用pt-online-schema-change
    转!!JAVA Future 模式与 Promise 模式
    转!!linux下详解shell中>/dev/null 2>&1
  • 原文地址:https://www.cnblogs.com/jianchen013/p/14519495.html
Copyright © 2020-2023  润新知