Linux笔记-2

静态IP配置

  1. 默认情况下,虚拟机和笔记本一样,采用的都是动态IP - 每次联网都会在当前网段内随机分配一个IP

  2. 实际过程中,虚拟机一般需要自己固定静态IP

  3. 步骤

    1. 查看网络编辑器中VMnet8对应的网段

    2. 编辑文件

      sh 复制代码
      vim /etc/sysconfig/network-scripts/ifcfg-ens33
    3. 修改属性

      sh 复制代码
      # BOOTPROTO="dhcp"表示为动态IP
      BOOTPROTO="static"
    4. 在文件末尾添加

      sh 复制代码
      # 静态IP,网段必须和网络编辑器中的网段一致
      IPADDR=192.168.53.128
      # 子网掩码
      NETMASK=255.255.255.0
      # 网关
      GATEWAY=192.168.53.2
      DNS1=192.168.53.2
    5. 重启网络

      sh 复制代码
      systemctl restart network
    6. 查看

      sh 复制代码
      ifconfig
    7. 测试能否连接外网

      sh 复制代码
      ping www.baidu.com

常用命令

日期类

  1. date:获取日期

    1. 用法一:获取当前的系统时间

      sh 复制代码
      # 获取当前的系统时间
      date
      # 对日期/时间来进行格式化
      # 格式:date +格式
      # %Y-年 %m-月 %d-日 %H-时 %M-分 %S秒
      date +%Y-%m-%d
    2. 用法二:以当前系统时间为基础,前后推算时间

      sh 复制代码
      # 无论是几天,都必须是days,不能写day!!!
      # 3天前是哪一天
      date -d '3 days ago'
      # 3天后是那一天
      date -d '-3 days ago'
    3. 用法三:修改/设置系统时间

      sh 复制代码
      # 命令格式:date -s "日期 时间"
      date -s "2024-02-29 09:22:25"
  2. 时间同步

    1. 实际过程中,时间同步的方式非常多:ntpdate,chrony等,上课使用的ntpdate方式

    2. 步骤

      1. Linux中默认没有内置ntpdate,所以需要安装ntpdate

        sh 复制代码
        yum -y install ntp
      2. 同步时间

        sh 复制代码
        ntpdate ntp3.aliyun.com
  3. cal:calendar的缩写

    sh 复制代码
    # 查看当前日期所在的月份的日历
    cal
    # 查看指定年份的日历
    cal 2024

用户类

  1. useradd:添加新用户

    sh 复制代码
    # 添加tom用户
    useradd tom
  2. passwd:修改密码

    sh 复制代码
    # 修改tom的登陆密码
    passwd tom
  3. su:switch user的缩写,切换用户

    sh 复制代码
    # 切换到tom用户
    su tom
    # 切换回root用户
    su
  4. id:确定用户是否存在

    sh 复制代码
    # 确定bob用户是否存在
    id bob
    # 查看所有的用户
    cat /etc/passwd
  5. who:查看当前登陆的用户

    sh 复制代码
    # 只显示用户名
    whoami
    # 显示用户名、连接数、登陆时间
    who am i
  6. userdel:删除用户

    sh 复制代码
    # 删除bob用户,但是不删除对应的数据目录
    userdel bob
    # 删除bob用户,同时删除对应的数据目录
    userdel -r bob
  7. 在Linux中,用户创建之后,如果没有指定,那么默认组和用户名是相同的

    sh 复制代码
    # 创建bob用户,放入root组中
    # 命令格式:useradd -g 组名 用户名
    useradd -g root bob
    # 将tom用户迁移到root组中
    # 命令格式:usermod -g 组名 用户名
    usermod -g root tom

用户组类

  1. groupadd:添加用户组

    sh 复制代码
    # 添加用户组
    groupadd bigdata
  2. groupdel:删除用户组,要求组为空

    sh 复制代码
    # 删除用户组
    groupdel bigdata
  3. groupmod:修改组名

    sh 复制代码
    # 命令格式:groupmod -n 新组名 老组名
    groupmod -n test tom
    # 查看所有的组
    cat /etc/group

文件权限类

  1. chmod:change mode的缩写,用于改变文件的权限

    1. 方式一

      sh 复制代码
      # u:user所有者 g:group同组 o:other其他用户 a:all所有用户
      # +:添加 -:减少 =:覆盖
      # 给同组用户添加写权限
      chmod g+w a.txt
      # 去掉其他用户的读权限
      chmod o-r a.txt
      # 除了所有者以外的用户,都只能读,不能进行其他操作
      chmod g=r,o=r a.txt
    2. 方式二

      sh 复制代码
      # r=4,w=2,x=1,通过3个数字的和来确定文件的权限
      # -rw-r--r--. 1 root root 12 Feb 28 00:55 a.txt
      # 对应的权限就是644
      # 命令格式:chmod 权限数字 文件/目录
      chmod 760 a.txt
      # 默认情况下,chmod只改变指定文件或者目录的权限,而不会影响子目录和子文件的权限
      # 递归更改
      chmod -R 740 a
  2. chown:change owner的缩写,改变文件的所有者

    sh 复制代码
    # 命令格式:chown 所有者 文件
    # 将a.txt的所有者改为tom
    chown tom a.txt
    # 将a.txt的所有者改为bob,同时所有组改为test
    # 注意:bob用户可以不是test组的!!!
    chown bob:test a.txt
    # 如果对应的是目录,那么chown也是只改变这个目录的所有者,不会改变子目录
    # 如果需要全部改变,那么需要进行递归-R
    chown -R tom a
  3. chgrp:change group的缩写,改变文件的所有组

    sh 复制代码
    # 命令格式:chgrp 所有组 文件
    chgrp root a.txt
    # 同样,如果是目录,那么也是只改变这个目录的所有组,如果需要全部改变,同样需要进行递归-R

搜索查找类

  1. find:在使用的时候需要指定搜索范围,会在这个范围内递归搜索符合条件的文件/目录

    sh 复制代码
    # 命令格式:find 搜索范围 -name 要搜索的条件
    # 寻找/var目录下所有的log文件
    find /var -name *.log
    # 命令格式:find 搜索范围 -user 用户名
    # 寻找/opt目录下所有用户为tom的文件
    find /opt -user tom
    # 命令格式:find 搜索范围 -size +/-数字
    # +n 表示>n,-n表示<n 数字表示=n
    # 搜索/var目录下所有大于10M(10240KB)的文件
    find /var -size +10240
  2. locate:快速定位文件所在的位置。locate在使用之前,会先将Linux中的文件系统加载到临时数据库中,然后locate实际上是在这个数据库中进行搜索,因此搜索的效率会更高

    sh 复制代码
    # 第一次使用locate之前,需要先加载数据库
    updatedb
    # 搜索指定的文件
    # 需要知道a.txt在哪个位置
    locate a.txt
  3. grep|

    1. |:管道符。会将上一个命令的结果作为数据传递给下一个命令

    2. grep:对数据进行过滤的

    3. 案例

      sh 复制代码
      # 案例一:获取/opt下所有含有字母a的文件或者目录的详细信息
      ll /opt | grep a
      # 案例二:获取文件中含有user的行数据
      cat original-ks.cfg | grep user
      # 如果需要忽略大小写
      cat original-ks.cfg | grep -i user

压缩类

  1. gzip类:

    sh 复制代码
    # gzip:对文件进行压缩,不保留原文件,并且不能压缩目录
    gzip a.txt
    # gunzip:对gz文件进行解压,解压完之后,会自动删除压缩包
    gunzip a.txt.gz
  2. zip类:

    sh 复制代码
    # 命令格式:zip 压缩文件名.zip 要压缩的文件
    zip big.zip a.txt b.cfg original-ks.cfg 
    # 如果要压缩目录,需要添加参数-r
    zip test.zip -r test
    # 命令格式:unzip 压缩文件名
    unzip big.zip
    # 解压到指定目录
    unzip big.zip -d test
  3. tar类:

    sh 复制代码
    # 可以压缩/解压tar或者tar.gz类文件
    # -z 执行
    # -c 产生.tar文件
    # -v 显示压缩/解压过程信息
    # -f 指定压缩文件的名字
    # 将a.txt和b.cfg进行压缩
    tar -cvf b.tar.gz a.txt b.cfg
    # -x 解压
    # -C 指定解压之后的存放路径
    # 将b.tar.gz解压到当前目录下
    tar -xvf b.tar.gz
    # 将b.tar.gz解压到a目录下
    tar -xvf b.tar.gz -C a

磁盘/内存类

  1. df:disk free的缩写,查看磁盘的使用和剩余空间

    sh 复制代码
    # 查看磁盘使用情况
    df
    # 以友好的方式的来查看
    df -h
  2. free:查看内存的使用情况

    sh 复制代码
    free

进程类

  1. ps:process status的缩写,查看进程的运行状态

    1. 案例一

      sh 复制代码
      # 查看系统中所有的进程
      ps aux
      # USER:启动这个进程的用户
      # PID:进程编号
      # %CPU:占用CPU的百分比
      # %MEM:占用内存的百分比
      # VSZ:Virtual Size,进程占用的虚拟内存的大小,单位都是KB
      # RSS:实际占用的物理内存的大小,单位都是KB
      # TTY:这个进程在哪一个终端运行。tty1~tty6表示由本地的字符终端运行,tty7表示由本地的图形终端运行,pts/0~255表示由虚拟终端运行
      # STAT:status的缩写,表示进程的状态。常见状态:R-running运行,S-sleeping睡眠,T-terminated停止,s-sub表示这个进程包含子进程,+表示后台运行
      # START:这个进程的启动时间
      # TIME:这个进程占用了CPU的运行时间
      # COMMAND:这个进程对应的命令
      # 实际过程中一般会结合|和grep使用,用于确定某一个具体的进程的状态
      # 查看mysql的运行状态
      ps aux | grep -i mysql
    2. 案例二

      sh 复制代码
      ps -ef
      # UID:启动这个进程的用户
      # PID:进程编号
      # PPID:Parent PID,父进程的编号
      # C:CPU执行计算的影响因子。数值越大,说明占用CPU资源越多,属于CPU密集型计算;数值越小,说明占用CPU资源越少,属于IO密集型计算。数值越小,任务优先级越高
      # STIME:Start Time,启动时间
      # TTY:终端名字
      # TIME:占用CPU的时间
      # CMD:Command,进程对应的命令
      # 同样,实际过程中,会结合|和grep使用
    3. 如果需要查看进程对CPU和内存的使用情况,使用aux;如果需要确定父子进程的关系,那么使用-ef

  2. kill:杀死进程

    sh 复制代码
    # 命令格式:kill -9 进程号
    # -9表示强制并且立即中止进程
    # 中止火狐浏览器
    kill -9 15903
    # 命令格式:killall 进程名
    # 支持通配符,在系统运行效率较低的时候,可以使用killall
    killall firefox
  3. pstree:以树状形式来展现进程状态

    sh 复制代码
    # 进程树,能够比较好的展现父子进程的关系
    pstree
    # -p显示进程号
    pstree -p
    # -u显示进程对应的用户
    pstree -u
  4. top:监控系统的运行情况

    sh 复制代码
    # 默认每隔3秒钟对系统情况进行一次监控
    top
    # 每隔10s监控一次
    top -d 10
    # -i表示忽略掉僵死、闲置的进程
    top -i -d 10
    # top -p 进程编号
    top -p 16050
    # 可以对监控结果进行排序
    # P 以CPU使用率排序
    # M 以内存使用率排序
    # N 以PID排序
    # q表示退出监控

    结果信息解释:

    sh 复制代码
    # top - 00:02:42    up  7:04,     2 users,        load average: 0.00, 0.01, 0.05
    		当前系统时间  系统的运行时间   当前登陆的用户数量  系统负载率:过去的1min、5min和15min的负载率
    # Tasks: 195 total,      1 running, 	  194 sleeping,   0 stopped,   0 zombie
       任务   总共运行的任务数量  在运行的任务数量   睡眠的进程数       结束的进程数   僵死的进程
  5. netstat:查看进程对网络的使用情况

    sh 复制代码
    netstat -anp
    netstat -nlp
    # 结合|和grep使用
    # 确定firefox是否占用了端口,占用了哪个端口
    netstat -anp | grep -i firefox
    # 127.0.0.1, 0.0.0.0以及::1都表示本机地址!!!

定时任务

  1. 启动定时服务

    sh 复制代码
    systemctl start crond
  2. crontab:定时任务

    参数 解释
    -e 编辑定时任务
    -l 查询所有的crontab任务
    -r 取消定时任务
  3. 编辑定时任务

    sh 复制代码
    crontab -e

    进入之后,本质上就是进入了一个vim界面

    sh 复制代码
    */2 * * * * /bin/ls -l /opt
  4. 定时格式:在定时任务的编辑界面,需要输入定时 任务

    位置 解释 范围 案例
    第一位 一个小时中的第几分钟 0~59 5 * * * *每一个小时的第5min都要执行这个任务 5,10 * * * *每一个小时的第5min和第10min都要执行这个任务 1-5 * * * *每一个小时的1-5min都要执行这个任务 */5 * * * *每5分钟执行一次
    第二位 一天的第几个小时 0-23 30 8 * * *每天的8点半执行任务
    第三位 一个月的第几天 1-31 0 8 1 * * 每月1号的8点执行任务
    第四位 一年的地几个月 1-12 0 8 1 12 * 每年的12月1号的8点执行 0 8 * 12 *每年12月的每一天的8点
    第五位 一周的第几天 0-7(0和7都表示周天) 0 8 * * 1每周一的8点执行任务

关机和重启

  1. 关机

    命令 解释
    init 0 关闭系统并断电
    halt 关闭系统但是不断电
    poweroff 直接断电
    shutdown -h 1 1min以后关机
    shutdown -c 取消shutdown命令
    shutdown -h 0或者shutdown -h now 理解关机
  2. 重启

    命令 解释
    init 6 立即重启
    reboot 立即重启
    shutdown -r 1 1min以后重启
    shutdown -r 0或者shutdown -r now 立即重启
  3. init有0~6运行级别

    级别 解释
    0 系统停机
    1 单用户状态。此时只能使用root用户登陆,其他用户无法登录,也无法进行远程连接
    2 多用户状态,但是不支持网络,也就意味着无法进行远程连接
    3 完全的多用户状态,登录之后直接进入了命令模式
    4 暂时未使用,系统保留
    5 完全的多用户状态,登陆之后直接进入图形模式
    6 系统正常关闭并重启
相关推荐
不爱学英文的码字机器5 分钟前
[Linux] Shell 命令及运行原理
linux·运维·服务器
cdut_suye16 分钟前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
EasyDSS19 分钟前
国标GB28181-2022平台EasyGBS:安防监控中P2P的穿透方法
网络协议·php·音视频·p2p
qq_4336184421 分钟前
shell 编程(三)
linux·运维·服务器
Tlzns42 分钟前
Linux网络——UDP的运用
linux·网络·udp
码农土豆1 小时前
PaddlePaddle飞桨Linux系统Docker版安装
linux·docker·paddlepaddle
Hacker_xingchen1 小时前
天融信Linux系统安全问题
linux·运维·系统安全
张暮笛1 小时前
抓取手机HCI日志
linux
大猫和小黄1 小时前
Windows、CentOS环境下搭建自己的版本管理资料库:GitBlit
linux·服务器·windows·git
Joyner20181 小时前
【Linux】ubuntu通过远程命令行启动桌面应用
linux·服务器·ubuntu