• [自用] Linux学习整理


    因为最近代码需要放在服务器山跑,而且之后自己学习或者工作也会用到Linux就打算了解入门一下。教材自己选的是B站一个upCodeSheep推荐的《Linux就该这么学》。文章内容是对书本上的个人整理。(因为个人感觉书有点过时而且不在VPS上,后续内容自己会浏览一些其他资料再整理增加)

    入门命令

    echo [字符串|$变量]
    date [options] ["+form"]  # 例如 date "+%Y-%m-%d %H:%M:%S"
    reboot  # only for root
    poweroff  # only for root
    wget [options] "url"  # 下载,-b后台,-P 指定目录,-t最大尝试次数,-c断点续传,-p 现在页面内所有资源,-r 递归下载
    ps [options]  # -a显示所有进程,-u用户以及其他详细信息,-x显示没有控制终端的进程
    top
    
    # 系统状态检测命令
    uname -a
    uptime
    history
    sosreport
    
    # 工作目录切换
    pwd
    cd
    ls [options] [filename]  # -a 查看全部文件, -l查看文件的属性,大小等信息
    
    # 文件文本编辑
    cat [options] [filename]  # 适用于内容较少的纯文本文件 -n 显示行号
    more [options] filename  # 适用于内容较多的纯文本文件
    head [options] [filename]  # 查看文件前N行, -n 指定行数
    tail [options] [filename]  # 查看纯文本稳当的后N行 -f 持续刷新
    tr [原始字符] [目标字符]  # 替换纯文本文件中的字符
    cut [opitons] filename  # 按列提取文本字符 -f 参数设置要看的具体列数,-d参数设置间隔符
    diff [options] filename  # 比较文件的差异, -c参数显示具体的差异
    
    # 文件目录管理命令
    touch [options] [filename]  # 创建空白文件或者修改文件的时间 -a 仅修改读取时间, -m仅修改修改时间,-d同时修改读取和修改时间
    mkdir
    cp [options] 源文件 目标文件  # 复制文件和目录 -p 保留原始文件的属性, -r 目录的递归持续复制,-i 如果存在询问是否覆盖
    mv [options] 源文件 [目标文件|目标文件名]  # 剪切或者重新命名
    rm [options] filename  # 删除文件
    file filename  # 查看文件的类型
    
    # 打包压缩与搜索命令
    tar [options] [filename]  # 打包压缩或者解压, -c 创建压缩文件, -x 解压文件, -t 查看压缩包内有哪些文件, -z 用Gzip压缩或解压, -j 用bzip2压缩或者解压, -v 现实压缩或解压的过程, -f 目标文件名, -p 保留原始的权限与属性, -P 使用绝对路径来压缩 -C 解压到指定目录
    grep [options] [filename]  # 关键字搜索,-b 将可执行文件当做文本文件来搜索,-c 仅显示找到的行数,-i 忽略大小写, -n 显示行号, -v 反向选择
    find [查找路径] 寻找条件 操作 # 查找文件, -name 名称匹配, -perm 匹配权限, -user 匹配所有者, -group 匹配所有组
    

    管道符、重定向与环境变量

    • 管道符

      管道符命令A|命令B的作用就是将命令A的输出作为命令B的标准输入,

    • 输入和输出重定向

      在linux系统中有三种输入和输出,分别是标准输入(0表示从非键盘输入),标准输出(1表示输出到文件)和错误输出(2表述输出到文件)。

    • 命令行匹配符

      *  # 匹配零个或者多个字符
      ?  # 匹配任意单个字符
      [0-9]  # 匹配范围内的数字
        # 转义字符
      ''  # 转移作用域内的字符
      ""  # 变量依然生效
      ``  # 执行命令
      
    • 环境变量

      env查看环境变量。定义环境变量export VARIABLENAME = VALUEexport用来将变量提升为全局变量。

    Vim编辑器与Shell命令

    • Vim编辑器

      Vim编辑器有三种模式:命令模式(光标移动、复制,删除,粘贴),输入模式(输入),末行模式(保存,退出,与设置编译环境)。一开始进入都是命令模式,输入a,i,o等键进入输入模式,输入:进入末行模式,esc退出输入模式或末行模式。

      命令模式命令:dd删除光标所在行,yy复制光标所在行,p将之前删除或复制的内容粘贴之光标之后,/从上到下检索字符串,?从下到上检索字符串,n定位到一下个检索字符串,N定位上一个检索字符串,u撤销上一部操作

      末行模式命令::w保存,:q退出,:q!强制退出,:set nu显示行号,:整数跳转到行数

    • shell

      编写shell脚本

      # !/bin/bash  # 脚本声明
      #  注释信息
      
      # 命令
      

      shell通过$number这种方式来接受相对应number的位置参数,$#统计一共有多少个参数,$*位置参数的值,$?判断上一条命令是否成功执行。

      参数判断 -d 测试是否为目录,-e测试路径是否存在, -f判断是否为文件,-r测试当前用户是否有读取权限,-w测试写入权限,-x测试执行权限。&&逻辑上的与,前一条命令成功才执行下调命令。||逻辑上的或,!逻辑上的否。

      字符串判断符号: -z是否为空,=是否相同

      条件语句

      if [condition];
      	then
      
      elif ;
      	then
      else
      
      fi
      
      # read -p "提示语句" variable 相当于C++的 input
      

      循环语句

      for 变量名 in 取值列表
      do
      
      done
      
      while 条件测试操作
      don
      
      done
      
    • 计划任务服务

      at(at 分钟 小时 日期 月份 星期 )一次性任务, cron(crontab -e [-u username]创建,-l查看,-r 删除)长期可循环任务。

    用户和用户组

    • 添加用户
    useradd -d /home/‘username’ -s /bin/bash 'username'
    
    • 修改用户密码
    passwd 'username'
    # -l 锁定用户禁止登录, -u 解除锁定, -d 可使用空密码登录系统, -e 强制修改密码
    
    • 删除用户
    userdel  'username'
    # -f 强制删除用户, -r 同时删除用户及用户目录
    
    • 修改用户属性
    usermod 'username'
    # -dm 变更用户家目录及转移数据, -g 变更所属组, -G 变更拓展用户组, -L 锁定用户, -l 解锁, -u 修改用户UID
    
    • 创建用户组
    groupadd 'groupname'
    
    • 切换用户
    su - 'username'
    
    • 使用root权限
    sudo cmd
    

    如果普通用户想要不输入root密码的使用root权限,需要在/etc/sudoers中作出如下更改

    ‘username' ALL=(ALL:ALL) NOPASSWD: ALL 
    

    文件身份权限

    • 文件权限

      Linux系统中分别对文件所有者,文件所有组和其他人指定了可读,可写,可执行。

    • 更改文件权限和所属组

    chmod [参数] 权限 filename  # 如果是文件的话要加上 -R参数进行递归
    chown [参数] 所有者:所属组 filename
    
    • 隐藏属性
    charr [参数] filename
    # i无法删除, a仅允许补充, s彻底从硬盘中删除
    lsattr [参数] filename
    

    存储结构与磁盘划分

    在Linux系统中实际使用一个新硬盘需要经过分区,格式化和挂载操作。

    • 分区

      分区需要使用fdisk命令

      fdisk [磁盘名称]  # 磁盘名称可以通过 dh -h 查看
      
    • 格式化

      格式化分区使用mkfs.[文件系统] 分区名

    • 挂载

      挂载使用命令mount 分区 已存在的目录

      需要注意的是,使用mount进行挂载只是进行一次性的,如果想要永久的话编辑/etc/fstab配置文件

    • 交换分区

      交换分区(Swap)是用来当物理内存不够使用时暂时将数据存放在硬盘上。交换分区与硬盘不同的操作只在于格式化命令,交换分区的格式化命令是mkswap

    • 软硬连接方式

      软硬连接使用的命令是ln

      ln [选项] 源文件 目标文件
      # -s 创建软连接,默认为硬链接, -f 强制创建, -i 覆盖询问, -v 显示过程
      

      硬链接和软链接的区别是,对于软连接,如果文件名称等信息进行变更,那么链接的文件则无法打开,而硬链接则仍然可用。

    LVM磁盘阵列技术

    由于我买的是云服务器,而且可能之后也不会去做运维,RAID部分就直接略过了。

    • 逻辑卷概念

      逻辑卷的提出是为了更方便的进行扩容或者缩容,逻辑卷的创立需要物理卷,卷组和逻辑卷三个部分。

      # 创立物理卷,使硬盘支持LVM
      pvcreate  /dev/sda /dev/sdb
      # 将硬盘加入到卷组
      vgcreate 卷组名 硬盘名
      # 将卷组切割出指定大小的逻辑卷
      lvcreate -n 逻辑卷名称 -L 1024M 卷组名
      # 格式化
      mkfs.xfs 逻辑卷问价
      # 挂载
      mount
      # 写入配置文件 
      vim /etc/fstab
      
      # 扩展逻辑卷
      # 先取消挂载
      unmount 
      # lvextend 
      # 检查硬盘完整性
      e2tsck -f 逻辑卷路径
      # 重置硬盘容量
      resize2fs 逻辑卷路径
      # 重新挂载 
      

    iptables和firewalld防火墙

    这一部分没有什么太多好总结的,就几条命令

    iptables -I INPUT -s address -p 协议  --dport 22 -j ACCREPT/REJECT
    firewall-cmd  --permanent  --zone=public  --add-service=https
    

    SSH管理服务器

    这部分也没什么好总结的,唯一要记得就是screen命令。screen命令和我理解的后台处理不一样,只是可以不丧失对终端的控制权,可以恢复上次的内容。

    screen -S # 创建新的session -ls 查看所有session -d 离线session -r 恢复session
    

    使用Apache服务部署静态网站

    我自己用的云服务器是Ubuntu的,跟书上虚拟机的Centos不太一样,这里只记述个大致流程以及可能遇到的问题,之后真的要搭建自己网站再补充吧。

    首先Ubuntu直接apt install apache2就ok了,如果这时候无法访问页面,可以查看一下防火墙是否允许了https/http协议。

    apache2的配置文件都放在/etc/apache2/apache2.conf里面,然后网页数据目录是在/var/www/html里面。

    Ubuntu里面没有安装selinuxsemanage的命令,总之如果遇到权限问题,需要去解决这个安全子系统。(总感觉这本书有点过时...)

    vsftpd服务传输文件

    vsftpd(very secure ftp daemon)一共有三种模式,分别是匿名模式、本地用户模式和虚拟用户模式。Ubuntu版本和Centos不太很一样,这里我只尝试了本地用户模式,参考ftp服务器搭建

    使用Samba或NFS实现文件共享

    Samba的配置可以参考安装Samba实现文件共享,需要注意的是Ubuntu系统中使用smbpasswd -a 命令的用户对象必须是系统中的用户。

    autofs的配置可以参考在Ubuntu16.04上使用Autofs

    使用Bind提供域名解析服务

    参考Ubuntu下Bind DNS域名服务器的安装

  • 相关阅读:
    (转载)Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别
    Android事件分发和消费机制(转载)
    Android动画及滑动事件冲突解决(转载)
    写在学习Oracle之前
    laragon yii
    ubuntu使用bower install问题汇总
    LNMP架构下访问php页面出现500错误
    form表单提交无页面刷新(非js)
    Firefox浏览器无法安装插件的解决
    完美解决 Ubuntu 下 Sublime Text 2配置搜狗拼音输入法
  • 原文地址:https://www.cnblogs.com/DemonHunter/p/13782080.html
Copyright © 2020-2023  润新知