Linux基础

Linux基础

命令 [-选项] 参数

===系统基础===

基本命令

命令 示例 功能 参数 备注
cd cd /root/test 跳转目录 [.]: 跳转当前目录(可省略)
[..]: 跳转上一级目录
[~]:跳转用户到主目录
[-]: 跳转上一次目录 ~`cd $变量`
~`cd opt`
~`opt=/opt`
~可直接跳转opt
ls ls 显示所有内容 [-l]: 列出文件信息
[-a]:列出所有文件包括隐藏文件
ll ll 显示文件详情 [-a]:列出所有文件包括隐藏文件
rm(高危命令) rm /root/test y 删除文件或目录(需确认y/n) [-f]:不提示,直接删除
[-rf] : 删除目录不提示
mkdir mkdir scy 创建空目录 [-p]:创建多层空目录 ~当前文件夹下创建
rmdir rmdir scy 删除空目录 可删除多个空目录,需要层层删除 ~`rmdir /1/2/3 /1/2 /1`
cp `cp m n

cp mysq-888 mysql | 复制文件或目录 | [-r]:复制目录 | ~m:原文件位置 ~n : 目标位置 ~可复制后改变文件名 | | mv(高危命令) |mv m n`

mv mysq-888 mysql | 移动文件或目录 | | ~m:原目标位置 ~n : 目标位置 ~建议: 1.移动后改变文件名 2.可自建文件用作回收站 3.可加时间戳 | | touch | touch new.txt | 创建空文件 | 只创建不打开 | | | ln | ln 链接文件 链接名 ln dir1/dir2 file1 ln -s dir1/dir2 | 可创建硬连接与软链接 | [-s]:创建软连接 | ~区别: 1.硬链接只能加在文件上 2.软链接可以加在目录上,软链接可以通过ls显示出链接位置,类型标识为(L)rwxtwxtwx 3.cd -P 链接名:可直接进入链接目录 4.可给解压文件目录创建软链接尔不用改原始目录名 |

查看文件

标题 列 1 列 2 列 3 列 4
命令 示例 功能 参数 备注
echo echo [command] 输出内容 [‘ ‘]:原样输出[“ ”]:可以识别特殊符号 $为特殊符号,变量等
cat cat 1.txt cat etc/passwd cat etc/group 查看文件全部内容 [-n]:带行号显示 文件过大不建议使用通过cat /etc/passwd查看用户信息~通过cat /etc/group查看用户组信息
head head 1.txt 显示文件头部内容 [-n num]:指定显示的行数[-num] :直接-加行数 默认显示前10行内容
tail tail 1.txt 显示文件尾部内容 [-n num]:指定显示的行数[-num] :直接-加行数[-f]:阻塞文件变化 默认显示后10行内容可用于>>写入时监控文件
more more 1.txt 分屏查看,先加载全部文件后查看 [sapce]:向下翻页[enter]:向下一行[b]:向上翻页[q]:退出查看器[Crtl+c]:强制退出查看器 左下角有文件进度百分比
less less 1.txt 分屏查看, 按需加载查看 [sapce]:向下翻页[enter]:向下一行[b]:向上翻页[q]:退出查看器[Crtl+c]:强制退出查看器
diff diff a.txt b.txt 比较两个文件的不同
> command > file 重定向符号 如果文件存在,就覆盖文件内容如果文件不存在,则创建一个新文件并且保存 命令可以是任何一个在命令行中有输出结果的命令
>> command >> file 追加符号 如果文件存在,则将结果保存到文件末尾如果文件不存在,则创建一个新文件并且保存 命令可以是任何一个在命令行中有输出结果的命令
help [command] - - help help [command] 简易帮助手册 部分命令没有简易版帮助手册,可用过- - help查看
man man [command] 详细帮助手册 一般命令都有完全的帮助手册
history 显示之前执行过的命令
pwd 显示当前所在目录的绝对路径 默认显示为绝对路径 绝对路径:从/目录开始一层层将所有目录层级显示出来相对路径:从.(当前目录)开始将目录显示出来

文件查找

命令 示例 功能 参数 备注
find find /root [-name] test [-delete] 在特定目录下查找特定的文件 [-name]:根据文件名进行匹配响应文件,如果找到文件,则列出文件路径
[-empty]:查找空文件
[-user]:根据文件所属用户查找文件
[-group]:根据所属用户组查找文件
[-delete]:删除
[-exec]:执行
1.完全匹配:find /opt -name file.tar.gz
2.模糊匹配:
find /opt -name ‘*.tar.*’
3.支持正则表达式
4.exec删除:
find . -empty -exec rm -rf {} \;
locate locate file1 文件定位命令 1.可以模糊匹配
2.locate不属于最小安装需要手动安装并更新数据库:
~`yum -y install mlocate`
~`updatedb`
which 在$PATH中设定的路径中查找相应文件 ~PATH变量中保存系统中所有指令所在的目录
详情见示例
whereis 查找命令,将命令压缩包位置列出
PATH
-->/etc/profile
  
/bin                 --> Linux管理命令
/usr/sbin            --> Linux基本命令
/usr/local/bin       --> 用户自定义的,为所用用户通用脚本放置路径
/usr/local/sbin      --> Linux管理员命令
/home/scy/.local/bin --> 
/home/scy/bin        --> 用户自定义脚本的放置位置

--> ~/.bash_profile

文本编辑

  1. 文本编辑器
    1. Linux自带vi编辑器,此编辑器没有用高亮提示。
    2. 可自行下载vim编辑器,【yum -y install vim】。
  2. vim快捷操作
模式 命令 说明
一般模式(ESC) yy 复制一行
p 粘贴一行
dd 删除一行
u 撤销操作
/ 查找关键字
编辑模式(o,i,a) home 首行
end 末行
pageup 翻页 [上]
pagedown 翻页 [下]
命令模式(Crtl+c,ESC) :w 保存
:q 不保存退出
:wq 保存退出
:w! 强制保存 [可能会改变用户或用户组]
:q! 强制退出不保存
:wq! 强制退出保存

文件处理

命令 示例 功能 参数 备注
`cat web.xml more` 管道,将前面命令的输出结果作为后面命令的输入
grep `more web.xml grep html` 在响应的文件正宗筛选出包含特定字符或模式的行 grep 字符 文件
cut 见表格下方cut示例 根据特定分隔符筛选列 [-f]:输入一个数字,获取分割后的列数中的数据
[-d]:指定分隔符,分割符需要使用’ ‘和” ”进行包含
awk 见表格下方awk示例 文本处理工具
sed 流编辑器

cut示例:

#>ifconfig | grep broadcast
inet 192.168.163.201 netmask 255.255.255.0 broadcast 192.168.163.255
#>ifconfig | grep broadcast | cut ' ' -f 10
192.168.163.255

awk示例:

#>ifconfig | grep broadcast
inet 192.168.163.201 netmask 255.255.255.0 broadcast 192.168.163.255
#>ifconfig awkl -F ' ' '{/broadcast/{print $2}}'
192.168.163.255

压缩解压

命令 示例 功能 参数 备注
tar tar -zcvf 压缩文件名 要压缩的目录或文件 压缩/解压gz格式的文件 [-z]:使用gzip
[-j]:使用bzip2
[-c]:创建新压缩包
[-x]:解压压缩包
[-v]:显示详细输出
[-f]:指定压缩包名称 压缩文件是,建议将目标文件放在一个目录总
gzip 只能压缩,不能解压,会将之前的文件删除
zip zip 压缩包名 解压名 压缩zip格式的文件 [-c]:create 创建
[-m]:modify 修改
unzip unzip 压缩包名 解压名 解压zip格式的文件 使用unzip之前注意将zip文件放在一个父级目录下

用户与组

  1. 用户操作

    1. 用户密码

      1. passwd 用户名:设置用户密码
    2. 用户命令

      useradd useradd uname
      userdd -g mysql -G nginx 新建用户 [-g]:主组
      [-G]:附加组 ~当主组失效,附加组生效
      ~用户创建过程:
      1./etc/passwd文件汇总记录用户信息
      2./home/创建该用户主目录
      3./var/spool/mail/创建用户邮件池
      usermod usermod uname 修改用户 [-L]:锁定用户
      [-U]:解锁用户
      [-l]:修改用户名
      [-g]:修改主组
      [-G]:修改附加组 不能通过su测试,su是切换用户不是登陆用户
      userdel userdel uname 删除用户 [-r]:删除用户所有信息 ~r命令会删除用户所有信息
      ~不使用r命令,则会保存用户信息,当用户重新被创建时会自动找到文件等
    3. 查看用户

      1. 查看特定用户

        id usr1

        uid=1001(usr1) gid=1012(usr1) 组=1012(usr1)

      2. 查看当前系统所有已登录用户

        who

      3. 查看当前系统登陆的用户名字

        whoami

      4. 切换用户:登陆用户不建议超过6个(内存问题)

        su uname:使用登陆用户之前的用户环境变量(可使用$export将用户变量升级成系统变量)

        su - uname:重新加载用户环境变量

        • /etc/profile:全局变量
        • ~/.bash_profile:用户变量
      5. 查看所有用户

        cat /etc/passwd

        用户名 用户编号 用户组 主目录位置 脚本编译环境

        usr1:x:1001: 1012:: /home/usr1: /bin/bash

  2. 组操作

    命令 示例 功能 参数 备注
    groupadd gname 新增工作组
    groupmod gname 修改工作组
    groupedel gname 删除工作组
    groups `cat /etc/group
    groups` 查看工作组 1.查看当前系统中所有的组信息
    2.查看当前登陆系统用户的用户组

所有权限

  1. 文件权限
    1. 权限示例

      权限字符 用户 用户组 -rw-r--r-- 1 root root 17500 5月 3 2017 test

      除(-)后面9位,每三位表示一组权限

    2. 权限说明

      1. 用户 和 用户组 的关系:用过给用户设置用户组,批量管理用户的操作权限

      2. root用户是超级管理员,拥有所有文件和目录的所有权限

      3. Linux通过权限字符、用户、用户组三个信息确定当前登陆用户具备某个文件的某个权限

      4. 创建目录的默认权限:755(rwx- -xr-r- -)

        创建文件的默认权限:644(rw-r- -r -)

        用户主目录默认权限:700(rwx- - - - - -)

    3. 权限原理

      1. ll —> - rwx rwx rwx ( 000~777 ) 四部分组成

        • 文件 | d 目录 | l 软连接:
        a=当前登陆用户 b=文件所属用户 c=登陆用户的组 d=文件所属组
        u:user(第一个rwx) a=b 当登陆的用户 = 文件所属用户时 user权限生效
        g:group(第二个rwx) a≠b,c=d 当登陆的用户 ≠文件所属用户,登陆用户的组 = 文件所属组 group权限生效
        o:other(第三个rwx) a≠b,c≠d 当登陆的用户 ≠ 文件所属用户,登陆用户的组 ≠ 文件所属组 other权限生效
      2. ugo权限(user,group,other):

        简写 全写 意义 二进制 十进制
        r read 可读 4 100
        w write 可写 2 10
        x execute 可执行 1 1
        - NULL 无权限 0 0
  2. 修改权限
    1. 不能修改用户不用的文件权限

      命令 示例 功能 参数 备注
      chown chown 用户 [:用户组] 文件 修改文件所属用户、用户组 [-R]:选项可修改目录
      chgrp chgrp 用户组 文件 修改文件所属组 [-R]:选项可修改目录 只可以修改用户组
      chmod chmod a+x 文件
      chmod 777 文件 修改文件权限字符 u/g/o [+-] r/w/x
      -x:代表去掉所有执行权限
      a+x:代表加上所有权限
      ~也可通过二进制代码赋权
      sudo 借用root的权限执行某些命令 `#Allow root to run any commands anywhere
      #允许root用户执行任意路径下的任意命令#
      root ALL=(ALL) ALL` vim /etc/sudoers
      ~需要编辑该文件,在其中添加如下代码:
      用户名 ALL =(ALL) ALL
    2. 文件格式权限

      1. 配置文件 :r权限
      2. 日志文件 :r权限,w权限
      3. 脚本文件 :x权限
      4. 压缩文件 :解压需要r权限
      5. 目录权限 :r权限,x权限

日期时间

命令 示例 功能 参数 备注
date date 显示当前系统时间 默认格式 2024年 11月 12日 星期二 14:16:24 CST
%Y YEAR 获取4位年
%y year 获取2位年
%m month 获取月份
%d day 获取日期
%H hour 获取小时
%M minute 获取分钟
%S second 获取秒数
%s stamp 获取时间戳(1970年1月1日—至今秒数)
cal cal 显示日历 [year]:显示指定年日历 默认显示当年当月日历

  • 设置时间
    • [-s] :设置系统时间(不建议设置)
    • touch start_date_$(date + %s).bat:给文件添加时间戳
  • 日期计算
    • date -d 'n [years|months|days|hours|minutes|seconds] ago’
      • [-d] ‘3 years ago’ :三年以前
      • [-d] ‘-2 days ago’:两天后

eg:拼接格式化字符以格式化字符串

  • 2024-11-22 14:22

  • 2024/11/22 14:22

    • 答案
    date '+%Y-%m-%d %H:%M'
    date '+%Y/%m/%d %H:%M'
    

网络管理

  1. 查看网卡信息

    vi /etc/sysconfig/network-scripts/ifcfg-ensXX
    此条命令用于编辑网卡配置信息
        TYPE="Ethernet"
        PROXY_METHOD="none"
        BROWSER_ONLY="no"
        BOOTPROTO="static"#DHCP/static,手动配置ip需设置为静态
        DEFROUTE="yes"
        IPV4_FAILURE_FATAL="no"
        IPADDR="192.168.76.130"#ip地址
        NETMASK="255.255.255.0"#子网掩码
        GATEWAY="192.168.76.2"#默认网关
        DNS1="114.114.114.114"#主DNS
        DNS="8.8.8.8"#副DNS
        IPV6INIT="yes"
        IPV6_AUTOCONF="yes"
        IPV6_DEFROUTE="yes"
        IPV6_FAILURE_FATAL="no"
        IPV6_ADDR_GEN_MODE="stable-privacy"
        NAME="ens32"#网卡名称
        UUID="a3f35dbc-00dd-43a0-ad0e-e35843e9706f"
        DEVICE="ens32"
        ONBOOT="yes"#开机自启动选项
    
  2. 网卡操作命令

    命令 示例 功能 参数 备注
    service network service network restart 操作网卡服务 start
    restart
    stop
    status 启动
    重启
    停止
    状态
    curl curl -l scy.pet 测试网络连通性 如果返回网页html代码则连通成功
    netstat netstat -nult 查看网络状态 [-n]:直接使用ip地址,不通过域名
    [-u]:显示UPD传输协议连接状况
    [-l]:显示监控中的服务器socket
    [-t]:显示TCP传输协议连接状况 扩展:
    查看防火墙状态
    systemctl status firewalld
    重新加载防火墙
    firewall-cmd - -reload
    iptables 防火墙管理工具 内容较多暂不补充
    a、看防火墙有没有放开1521端口和3306端口:
    --1.查看端口是否被占用:
    netstat -nult | grep 1521
    netstat -nult | grep 3306
    --2.查看防火墙是否放开相应端口:
    firewall-cmd --zone=public --query-port=3306/tcp
    b、放开相关端口:
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    c、新加载防火墙策略
    firewall-cmd --reload
    
  3. 远程命令

    1. SSH命令

      1.远程登陆操作
          ssh在执行后,会在用户主目录中创建一个(.ssh)的目录,里面包含一个文件
          known-hosts(记录允许登陆的ip)
          注:如果没有执行ssh localhost-->exit,即可生成
      2.无密码访问
          **·**ssh-keygen -t rsa:使用rsa算法生成公私密钥对
          **·**ssh-copy-id **目标主机地址:将密钥发送给目标主机,目标主机记录下密钥
           钥之后,实现免密登陆**
      注:id_ras id_ras_pub(公私密钥对文件名)
              *~~ssh-copy-id root@127.0.0.1~~*
      
    2. SCP命令

      • 用法
      1.当前主机 -> 目标主机:
          scp [-r] 当前主机的文件 目标主机的位置
          scp game.zip root@192.168.163.21:~/
      2.目标主机 -> 当前主机:
          scp [-r] 目标主机的位置 当前主机的文件
          scp root@limux11:~/game.zip ~/
      3.目标主机写法:用户名@IP:/路径
          可以通过编辑/etc/hosts文件给特定地址命名别名,
          后续可以使用别名代表ip地址
          vi /etc/hosts
          192.168.163.219 linux11
      注:使用前通过*ps -ef | grep ssh*查看ssh服务是否
      开启
      
      • 细节
      1.scp依赖于ssh协议,首先保证两台机器都开启了sshd服务。
      2.scp尽量不要再非安全网络下使用
      3.scp传输文件时需要输入密码,可以设置ssh免密登陆,屏蔽密码
      
    3. rsync命令

      远程传输 不是linux自带工具
      

系统资源

系统资源:CPU 内存 硬盘 网络

  1. 显示系统资源

    1. Top:类似于windows中的资源管理器

         PID    USER      PR    NI    VIRT    RES    SHR S  %CPU %MEM     TIME+   COMMAND 
            1     root      20     0  125396   3916   2524 S   0.0  0.2   0:22.18   systemd                                            
          2     root      20     0       0      0      0 S   0.0  0.0   0:00.05   kthreadd                                           
          3     root      20     0       0      0      0 S   0.0  0.0   0:00.17   ksoftirqd/0                                        
          5     root       0   -20       0      0      0 S   0.0  0.0   0:00.00   kworker/0:0H                                       
          7     root      rt     0       0      0      0 S   0.0  0.0   0:00.03   migration/0                                        
          8     root      20     0       0      0      0 S   0.0  0.0   0:00.00   rcu_bh      
      
      名称 解释
      PID 进程id
      USER 进程所有者的用户名
      PR 优先级
      NI nice值。负值表示高优先级,正值表示低优先级
      VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
      RES 进程使用的、未被换出的物理内存大小,单位kb。
      SHR RES=CODE+DATA,共享内存大小,单位kb
      S 进程状态。①D=不可中断的睡眠状态②R=运行③S=睡眠④T=跟踪/停止⑥Z=僵尸进程
      %CPU 上次更新到现在的CPU时间占用百分比
      %MEM 进程使用的物理内存百分比
      TIME+ 进程使用的CPU时间总计,单位1/100秒
      COMMAND 命令名/命令行
    2. ps:列出进程

      1. -ef

        UID       PID   PPID  C STIME TTY   TIME        CMD
        root        1      0  0 20:38 ?     00:00:01   /usr/lib/sys
        root        2      0  0 20:38 ?     00:00:00   [kthreadd]
        root        3      2  0 20:38 ?     00:00:00   [ksoftirqd/0
        root        5      2  0 20:38 ?     00:00:00   [kworker/0:0
        
        名称 解释
        UID 用户ID
        PID 进程ID
        PPID 父进程ID
        C CPU使用率
        STIME 启动时间
        TTY 终端类型
        TIME CPU时间
        CMD 命令名/命令行
      2. -aux

        USER   PID %CPU %MEM    VSZ   RSS  TTY  STAT START   TIME  COMMAND
        root   1   0.0  0.1  194100  7220  ?    Ss   20:38   0:01  /usr/lib/systemd/system
        root   2   0.0  0.0       0     0  ?    S    20:38   0:00  [kthreadd]
        root   3   0.0  0.0       0     0  ?    S    20:38   0:00  [ksoftirqd/0]
        
        名称 解释
        USER 启动该进程的用户
        PID 进程ID
        %CPU 进程占用的CPU百分比
        %MEM 进程占用的物理内存百分比
        VSZ 进程使用的虚拟内存大小(以KB为单位)
        RSS 进程使用的常驻集大小(Resident Set Size),即实际物理内存使用量(以KB为单位)
        TTY 程关联的终端类型。? 表示该进程没有关联终端
        STAT 进程状态。①D=不可中断的睡眠状态②R=运行③S=睡眠④T=跟踪/停止⑥Z=僵尸进程
        START 进程启动时间或日期
        TIME 进程使用的CPU时间总和
        COMMAND 启动进程的命令及其参数
      3. -o

        ps -aux


      注意:ps -aux 和 ps -ef 都是用来查看系统进程的命令,但它们的输出格式和侧重点略有不同。ps -aux 更侧重于显示与用户和终端相关的进程信息,而 ps -ef 则提供了更详细的进程树和父进程信息。选择哪个命令取决于你的具体需求。

  2. 显示磁盘资源

    1. df :检查文件系统磁盘使用情况的工具

      名称 解释
      Filesystem 文件系统名称或挂载点
      Size 文件系统的总大小
      Used 已使用的磁盘空间
      Avail 可用的磁盘空
      Use% 已使用空间的百分比
      Mounted on 文件系统的挂载点
      Filesystem               Size  Used Avail Use% Mounted on
      /dev/mapper/centos-root   46G  5.5G   40G  13% /
      devtmpfs                 2.0G     0  2.0G   0% /dev
      tmpfs                    2.0G     0  2.0G   0% /dev/shm
      tmpfs                    2.0G   13M  2.0G   1% /run
      tmpfs                    2.0G     0  2.0G   0% /sys/fs/cgroup
      /dev/sda1               1014M  157M  858M  16% /boot
      tmpfs                    394M   12K  394M   1% /run/user/42
      tmpfs                    394M     0  394M   0% /run/user/0
      
    2. fdisk:磁盘管理工具

      注意:此工具使用较少,能看懂即可

  3. 挂载功能

    ①系统装机时可以对硬盘进行分区, 也是挂载目录的操作。
    ②windows中的盘符 像 linux的挂载点(分区)。
    ③/dev : 显示设备的目录,主要显示接入服务器的硬件设备,光盘、U盘等。
     /mnt : 挂载目标目录。
     ------------------------------------------------------------  
     mkdir -p /mnt/sr1
     mount /dev/sr1 /mnt/sr1
     mv /mnt/sr1/1.txt ~/
    
  4. 定时任务

    1. crontab

      命令 功能 选项
      crontab 定时任务 [-e]:编辑crontab定时任务
      [-l]:查询crontab任务
      [-r]:删除当前用户所有crontab任务
    2. 语法

      *  
      
        *  
      
          * 命令
      
      项目 含义 范围
      第一个 * 一小时当中的第几分钟 0 ~ 59
      第二个 * 一天当中的第几小时0 0 ~ 23
      第三个 * 一个月当中的第几天 1 ~ 31
      第四个 * 一年当中的第几月 1 ~ 12
      第五个 * 一周当中的星期几 0 ~ 7(0和7都代表星期日)
    3. 特殊符号

      特殊符号 含义
      * 代表任何时间。比如第一个"*"就代表一小时中每分钟都执行一次的意思。
      代表不连续的时间。比如"08,12,16 * * *命令",就代表在每天的8点0分,12点0分,16点0分都执行一次命令
      - 代表连续的时间范围。比如"05 * * 1-6命令",代表在周一到周六的凌晨5点0分执行命令
      */n 代表每隔多久执行一次。比如"*/10 * * *命令”,代表每隔10分钟就执行一遍命令