Linux

操作系统的概念

  • 管理硬件和软件的一套系统软件
  • 一个操作系统的核心叫内核,操作系统的各项功能都是通过内核来实现的

为什么要学Linux?

  • 大量公司服务系统都是Linux
  • 公司软件运行过程中出现一些问题,需要用Linux去排查
    • 网络故障排查
    • 程序状态查看
    • 定时启动一个程序
    • 查看日志
    • 软件的安装与卸载
    • 程序的配置文件……

shell 介绍

  • 是用户通过命令和Linux进行交互的桥梁
  • Linux是通过shell来解释执行命令的(命令解释器)
  • Linux默认的shell是bash
  • 其他的shell分类 ash 、ksh、ksh、csh、zsh

远程登录工具

Xshell

  • 远程连接Linux并进行命令操作
  • 其他工具:putty、SSH Secure Shell Client

Xftp

  • 主要作用是方便windows 和 Linux之间文档传输
  • 百度下载安装包和文件可以传输Linux上
  • 进行创建、删除等操作
    • scp传输
      • 本地远程
        • scp -r 目录名 用户名@计算机IP:远程路径
      • 远程本地
        • scp -r 用户名@计算机IP地址:目录名 本地路径

目录结构介绍

windows 目录结构

  • 最顶部的是不同磁盘分区,如C、D、E
  • 文件目录都是从盘符开始的
  • Windows文件路径大小写不区分,层级“\”来表示

Linux目录介绍

  • 没有C、D、E、盘符,一切兜售从“/”开始的,单个的树状结构
  • “/”
  • Linux系统的根目录
  • “/etc”
  • Linux系统的配置文件目录
  • “/home”
  • 普通用户的家目录/主目录,比如有个用户叫Jack,那么他的主目录就是/home/Jack

Linux命令格式

  • 格式:命令参数1 参数 2 参数n 对象
    1. Linux命令由一个命令和零到多个参数来构成,参数和命令之间以及参数和参数之间要用空格隔开
    2. 命令和参数要区分大小写
    3. 参数可以合并
su 切换用户
  • su – 用户名 会初始化环境,比如全新用户home目录,新的环境变量
  • su 用户名 只是切换用户
  • sudo : 零时使用超管权限来执行命令
date 系统时间的查看与时间
  • 查看系统时间
  • 命令date
  • date -s ‘20200301’ 修改系统时间为2020年3月1日
  • date -s ’15:15:15’修改系统时间为15时15分15秒
  • date -s’20200301 15:15:15′ 修改系统时间为2020年3月1日 15时15分15秒
  • 同步时间
  • ntpdate + 需要同步时间的服务器的IP地址
poweroff/shutdown 关机命令
  • poweroff :即刻关机
  • shutdown – h now
  • shutdown -h +1 一分钟后关机
reboot 重启命令
  • reboot
logout用户注销

​ 使用以下前提使用su – 用户进行用户切换

  • logout
  • exit
  • ctrl+d
df – Th 查看Linux的磁盘占用情况
  • df – Th
  • filesystem: 文件系统对应的设备文件路径名
  • type:类型
  • size :容量
  • avail :剩余容量
  • use: 已使用占比
  • mounted:挂载
du -ha 查看Linux文件占用空间查看
  • du只显示当前目录下子目录的目录大小和总大小,最下面的为当前目录总大小
  • 参数 h 表示以方便阅读的格式查看,文件大小有单位标识
  • 参数 a 表示查看所有文件的大小
free -m /top 监控系统状态
  • free -m

    • Mem:物理内存统计
      • total :表示总计分配给缓存的使用数量(分内存数量)
      • used:已使用的内存数量
      • free:未被分配的内存
      • buffer:主要目的是为了进行流量整形,把突发的大数量i/o整理成稳定的小数量,已减少响应次数
    • swap:表示硬盘上交换分区
  • top

    • total:总进程数
    • running:正在运行的进程数
    • sleeping:睡眠的进程数
    • stopped:僵尸进程数
    • Mem
      • total:物理内存数量
      • used:已使用的物理内存总量
      • free:空闲的内存数量
      • buffers:用作内核缓存的内存量
    • PID:进程id
    • user:启动进程的用户
    • %MEM:进程使用的物理内存百分比
    • TIME+ :进程使用内存的时间总计
ifconfig 查看IP地址
  • 查看方法

    • ifconfig ens33 :查看指定网卡的IP地址及相关信息
    • ifconfig -a :查看所有网卡的IP地址,需要去etc文件目录下
  • ping 命令

    • 连通性检查
    • 网速检查
    • ping -c 测试数据包的数量 目的地地址
  • 修改网络接口配置文件

    • /etc/sysconfig/network-scripts/ifcfg-ens33文件
    • 修改完了重启网卡:service network restart
  • Linux 文件名称概念;

    • 大小写敏感,没有专用的扩展名
    • 文件abc 和文件ABC是两个文件
    • a.txt表示文件的整个名称,并不是文本文件
  • Linux 特殊文件

    • “/” 表示根目录
    • “.” 表示当前目录
    • “..” 表示当前目录的父目录(上级目录)
    • “.字符串” 表示隐藏文件,比如“.bash_profile”
  • Linux 当前目录

    • 当用户刚登录系统,当前目录就是用户的家目录

    • 绝对路径

      • 开始于根目录,紧跟着目录数一个一个分支,一直达到所期望的目录或文件
    • 相对路径

      开始于当前目录,紧跟着目录树一个一个分支,一直达到所期望的目录或文件

cd 切换目录相关命令
  • cd /home 进入home目录
  • cd .. 返回上一级目录,如果连续使用该命令 cd ../../../..
  • cd ~ 进入当前用户的家目录
  • cd – 返回上次所在的目录
  • pwd 显示当前路径
find */? 通配符
  • *所有字符
    • g*:文件以g开头的文件
    • su*s:以su开头并以s结尾的文件
  • ?单个字符
    • su???:以su开头且后面有三个字符的文件
ls -lah 显示当前目录下的文件
  • 参数
    • ls 查看目录中的文件和文件夹
      • -l 显示文件的目录的详细信息
      • -a 显示所有文件,包含所有文件包含隐藏文件
      • -h 结合参数,显示文件大小以GB、KB等易读的方式显示
mkdir -p 创建目录
  • 创建目录
    • mkdir 目录 1 目录2
    • mkdir -p 可以递归或同时创建多个目录
touch 创建文件
  • touch 文件名
  • 创建一个带空格的文件需要用双引号把文件名引起来
  • 一次性创创建多个文件
    • touch houzi1 houzi2 houzi3
cat 短文件查看内容
  • cat命令:查看短文件
  • cat -n 文件名:显示文件内容和行号
  • tac 文件名:将文件倒过来查看
less 长文件查看命令
  • k:向上一行
  • j :向下一行
  • page up :向前一页
  • page down:向后一页
  • q:退出
  • 通过/字符 可以查看需要查找的内容
tail -n 末尾查看文件命令:
  • 从文件末尾查看文件,参数-f 代表实时动态查询
    • tail -n 文件名 查看文件最后n行
    • 默认显示10行
    • 例子:tail -100f file 动态实时查看文件最后一百行信息
cp 复制文件和目录
  • 源文件和目录路径都可以是绝对或相对路径
    • cp file01 /home/wukong 将file01文件复制到wukong文件下
    • cp file01 /home/wukong/file02 将file01 复制到wukong文件下并重命名
    • cp file01 file02 /home/wukong 将file01 和file02 文件复制到wukong目录下
    • cp file01 /home/wukong 如果新目录下有文件,提示询问是否覆盖 选Y直接覆盖掉
  • 复制目录
    • 复制目录
      • cp -r dir01 /home/root 把dir01目录复制到root目录下
      • cp -r file01 file02 dir01 /home/root 把文件和目录复制到root目录下
mv 移动文件和目录
  • 移动文件或目录

    • 如果原地址和目标地址相同则重命名

      • mv file01 file02 重命名文件file01为file02
      • mv dir01 dir02 重命名目录dir01 为dir02
      • mv dir01/file01 dir01/file02 重命名file01为file02
    • 源地址和目标地址不同

      • mv file01 dir01 移动file01到dir01目录

      • mv file01 dir01/file02 移动file01到dir01目录下且重命名为file02

      • mv file01 file02 dir01 dir02 移动file01、file02、dir01到dir02目录下

      • mv dir01 dir02 如果dir02不存在,则重命名,如果存在,则移动dir01目录到dir02目录下

rm -rf 删除文件和目录
  • rm file01 file02 删除file01和file02文件
  • rm -r dir01 删除dir01目录,进行递归处理,将目录下得所有文件和子目录一并处理
  • rm -rf dir01 强制删除dir01目录,不询问。
vi / vim 编辑文件命令
  • vi/vim 是所有的Linux系统都会提供的文本编辑器,它给我们提供一个窗口对文件进行编辑

  • 为什么学vi/vim?

    • 面试可能会问会不会编辑文件
    • 工作中有些情况必须用到
    • 提高工作效率
  • vi/vim的区别

    • vim是vi的增强版,支持vi的全部功能
    • 增加了一些命令
    • 增加了颜色标记的功能
  • vi可分为三种模式

    • 命令模式

    • 刚进入时的默认模式时是命令模式

      • 此时不可以添加文字

      • 不能退格删除文字

        可以控制光标

        可以使用gg’跳转文件开头

      按示shift+g:移动到最后一行的行首

      按$:可以控制移动光标的行尾

      删除字符:delete 删除单行:dd 删除多行n+dd(n代表要删除的行数,可以删除当前行开始的N行)

      可以进入插入模式和底线模式

    • 插入模式

      • 在插入模式下可以对文档内容进行编辑
      • 进入插入模式底部有-INSERT-标记
      • 在命令模式可以输入如下字符进入插入模式
        • i :插入,从目前光标所在处插入字符
        • a:增加,目前光标所在的下一字符开始插入字符
        • o:插入新的一行,从行首开始输入字符
    • 底线模式

      • 在命令模式输入冒号进入底线模式
        • set nu 显示行号
        • set nonu 关闭显示行号
        • n 输入数字跳转指定行
        • /关键字:先/在输入查找的字符 按n 或shift + n
          • 可以输入n 向下继续查找
          • shift + n 向上查找
          • set ic 设置忽略大小写
          • set noic 设置不忽略大小写
        • 行号 w 文件名 ,截取文件某一段另存为新的文件
        • w 新建文件名
        • wq 保存退出
        • q! 强制退出
grep 文本关键字搜索
  • 是一种强的文本搜索工具,把可以匹配的行打印出来
  • 用处
    • 查看日志
    • 查看命令输出
  • 命令格式:grep 关键字 文件
  • 两个文件之间查找
    • 例如 grep 关键字 文件
  • 默认大小写敏感
  • 参数
    • -c 只输出匹配行数
    • -i 不区分大小写
    • -n 显示匹配行以及行号
    • -v 显示不匹配的所有行
  • grep 模糊查询
    • grep ‘^abc’ 文件名 查看以abc开头的行
    • grep ‘abc$ ‘ 文件名 abc结尾
chmod a+x 文件 文件权限
  • 文件必须有一个所属用户和一个所属组
  • 不同类型的用户有不同权限
  • Linux文件有三种权限
    • r 读文件的权限,查看文件夹的内容 ls 查询
    • w 具读写的权限 ,创建和删除文件、touch 创建
    • x 去执行的文件权限,cd进入该目录
    • 注意:对目录,可执行是一个基础权限
  • 用户类型分三种
    • owner 文件创建者
    • group 文件所属组(工作组,用户所在工作组)
    • other 其他用户(非owner、非group)
    • image-20220324230342797
    • 谁改变有权限root owner
    • 语法:chmod [who] [+/-] [peremission] filename
    • chmod u+x file01
    • who项表示用户类型 ,可以为一项或多项
      • o 拥有者(user–owner)
      • g 与拥有者同组的用户(group)
      • o 其他人(other)
      • a 所有(all)

tar -zcvf/-zxvf 文件的压缩与解压
  • tar命令-将多个目录或文件打包成一个大文件,同时还可以通过gizp/bzip2的支持,将文件同时进行压缩
  • Windows也WinRAR支持tar .gz 的解压缩
  • tar 常用参数
    • -c 新建打包文件,可以通过-v 查看压缩过程
    • -x 解压指定目录
    • -j 通过bizip支持压缩和解压缩,此时文件名*.tar.bz2
    • -z 通过gzip 的支持压缩和解压缩,此时文件名*.tar.gz2
    • -v 在压缩/解压缩的过程中,将正在处理的文件名显示出来(详细i信息)
    • -f -filename -f后接文件名。文件末尾
    • -c 将tar 的工作过目录改到指定目录
    • -p 允许我们使用绝对路径压缩
  • tar 常用方法
    • tar -zcvf files.tar.gz file01 file02 打包压缩
    • tar -zcvf file.tgz *.doc 打包以.doc结尾的文件和目录
    • tar
ps -ef 重定向和管道
  • 重定向
    • 对于输出结果的不想显示,对显示结果处理
    • 把输出结果重新定向,例如把输出结果放在一个文件
    • 语法:命令 文件描述 > 文件,描述默认是1
    • 输出重定向
      • ps -ef > psfile 把ps -ef 的输出覆盖到psfile文件中
      • ps -ef >> psfile 追加文件旧文件加新内容
      • ps -ef > /dev/null 扔垃圾筒
  • 管道
    • 命令的输出当初下个命令的输入
    • ps -ef |grep root 所有进程 过滤关键字root
    • ps -ef |grep root |wc -l 过滤结果的行数
进程
  • 进程和程序的概念

    • 程序(软件)用代码决定程序的行为,存在存储介质里,比如硬盘

    • 程序运行起来,就是操作系统把存储介质上的可执行文件加载到内存里面运行,这个运行的程序就叫进程

    • 程序是静态的文件,进程是程序的一次执行过程,进程是动态的

    • 查看进程的原因:可以确定哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸进程、哪些进程占用了过多的资源等。

  • linux里面的进程

    • Shell就是一个进程

      • 查看进程的命令:ps(process status)
    • ps命令的使用

      • 不带任何参数

      • -e:显示所有进程

      • -f:做一个更为完整的输出

    • ps -ef显示出的结果:

      • UID : 用户的ID

      • PID: 进程的ID

      • PPID: 父进程的ID

      • C:cpu的占用率

      • STIME:开始时间

      • TTY:开始此进程的TTY—终端设备

      • TIME:此进程运行的总时间

      • CMD:命令名

    • 终止进程:

      • 自行终止

        • 任务执行完成,比如ps

        • 用让其退出,比如vi

        • 异常退出

      • 用户手动杀死进程

        • kill PID 杀死进程

        • kill -9 PID 强制杀死进程

        • ctrl+c

        • 只能是owner 和 root 可以杀死进程

shell 脚本
  • 可一次性执行多条命令的程序文件
  • Linux的命令结合shell的语法写入文本中去执行
  • Linux默认shell 是/bin/bash
  • 执行shell脚本
    • 绝对路径 需要权限
    • ./ 文件名 需要权限
    • sh shell /bash shell
  • 定时存放日志实现
    • 在/root/home目录新建文件如vi printlog
    • 在插入模式输入#!/bin/bash开头
    • 定义时间变量datename=$(date +%Y%m%d-%H%M%S)

    • 打包压缩文件tar -zcvf /59test/log_$datename.tar.gz -C /var/log .

    • 命令模式wq保存退出
    • crontab -e 定时任务执行
    • 插入模式输入 24 23 * * * sh /root/printlog
      • 第一 代表分钟

      • 第二 小时

      • 第三 每个月的第几天

      • 第四 月份

      • 第五 代表星期的第几天

    • 保存退出wq
版权声明:本文为枯树老鸭原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/kushulaoya/p/16075694.html