原来Linux里也能打《ACM》?

本文介绍了Linux中的ACM时间,包括Access、Modify和Change三个时间戳的含义和更新机制。在编译过程中,系统会根据文件的修改时间决定是否需要重新编译。通过`stat`指令可以查看这些时间戳,而`touch`命令则可以用来手动更新文件的ACM时间。
摘要由CSDN通过智能技术生成

在这里插入图片描述

本文,我们来介绍一下Linux中的ACM时间,不过呢此ACM非彼acm,让我们一起来看看吧

前言

我们在写Makefile的时候,经常会遇到make: 'xxx' is up to date.的问题,很多同学都不知道是什么原因,本文我们就从这一点说起

  • 当我们在【make】的时候,通常会执行一些编译命令然后生成可执行文件,此时系统就会去比对源文件可执行文件最近修改时间
    • 如果.exe新于.c源文件,那表明源文件没有修改过,此时不需要再去重新编译
    • 如果.exe老于.c源文件,那表明源文件被修改过了,此时是需要再去重新编译的
  • 而且一般对于.exe.c的最近修改时间是不会相同的,因为可执行程序一定是在对源文件编译之后产生的

💬 好,讲了这么多,究竟这个时间在哪里呢?我们马上来瞧瞧

  • 此处要使用到我们在Linux基本指令中所学习的stat指令,现在我查看了一下这个可执行文件的所有属性,就看到了相应的ACM时间

在这里插入图片描述

  • 我们先来简单介绍一下这三个时间
    1. Access —— 最近访问时间
    2. Modify —— 文件内容最近修改的时间
    3. Change —— 文件属性最近修改的时间

ACM时间的更新机制

上面的话谈到了系统会根据文件的最近修改时间来进行判断,那这三个时间的更新机制又是怎样的呢?

  • 首先是这个Access访问时间,当我们使用cat去查看一下这个文件的内容时,或者使用vim打开它 or 修改它的时候,都算是在访问它,所以这个【访问时间】几乎你的任何操作都会去进行一个修改。后面的ModifyChange时间我们一起说,一个是修改时间,一个是改变时间

💬 那有同学问,这俩不是一个意思吗?你这是在玩文字游戏啊

  • 那到不是,还记得我们曾经谈到过的Linux下一切皆文件,而文件又是由【文件内容】和【文件属性】,这个文件内容呢不单单指的是文件里面的内容,像文件名、文件的大小、修改日期等等,这些其实都是属于文件的内容

💬 之前我有问过同学们一个问题:在Windows下新创建一个空的文件或者记事本,那它要不要在磁盘中占据空间呢?

  • 答案是:会的✔ 就算一个文件里面什么东西都没有,这个文件还拥有各种各样的属性呢,这些属性都是属于这个文件的数据,我们就要靠这写数据去判别这个文件是什么类型的、谁创建的、什么时候创建的

  • 当我们对一个文件的【文件内容】做修改的时候变化的即为Modify时间,例如使用vim将其打开然后对内容做一些修改
  • 当我们对一个文件的【文件属性】做修改的时候变化的即为Change时间,我们在Linux权限一文中也有讲到过文件

在这里插入图片描述

  • 那使用像chmodchownchgrp这些指令就可以去修改文件对应的【拥有者】、【所属组】、【other】的权限,即修改的文件的相关属性

在这里插入图片描述

  • 我们可以来修改一下试试看,再去执行stat指令便可以发现有了变化

在这里插入图片描述

  • 看完如何修改Change时间我们再来试着修改一下Modify时间,例如打开vim修改一下里面的内容,再去执行[stat]指令就可以发现Change时间和Modify时间一同发生了修改,一般二者是会有一个关联,后者会因为前者的修改而修改,即文件的内容改了,文件的属性也会改;把文件内容删了一部分,文件大小size就会变小
  • 但是Change时间的修改不会导致Modify时间发生变化,这个我们上面也观察到过了

在这里插入图片描述


  • 那我们就可以来总结一下三个ACM时间所对应的修改机制
    1. 【Access】:拿vim把文件打开,对里面的内容做修改
    2. 【Modify】:重定向、vim编写文件内容
    3. 【Change】:chmod、chown、chgrp所做的这些事情

touch命令手动更新ACM时间

对于这个ACM时间,除了通过我们去修改文件的相关内容和属性引发修改之外,还可以手动去更新这个时间

👉 那就是使用我们所学习过的touch指令

  • 可以看到,这里我使用touch test.c因为这个文件文身就是存在的,所以呢就会去更新一下它的ACM时间,那若是这个文件本身不存在的话,就会将其创建出来

在这里插入图片描述

  • 当然,你也可以实现像下面这两条指令去指定更改哪一个ACM时间,读者这边可以下去自己试一试,每个操作系统可能不太一样
touch -m test.c
touch -a test.c

在这里插入图片描述


好,以上就是本文所要介绍的Linux下的ACM时间,你也打acm吗👈

在这里插入图片描述

Linux的CDC ACM配置指的是将CDC(Communication Device Class)ACM(Abstract Control Model)驱动程序配置和安装到Linux操作系统中。 CDC ACM是一种用于串口通信的USB设备驱动程序,其作用是将USB设备转换为虚拟串口设备。在Linux中,CDC ACM驱动程序是通过内核模块的形式提供的。 要配置CDC ACM驱动程序,首先需要确保Linux内核已经加载了相关的USB驱动程序。如果没有加载,可以通过modprobe命令手动加载。 接下来,需要安装ACM驱动程序。一般情况下,ACM驱动程序已经包含在Linux操作系统中,无需额外安装。如果系统中没有安装,则需要下载对应版本的驱动程序,并按照驱动程序提供的安装说明进行安装。 安装完驱动程序后,可以使用udev规则来进行设备的自动识别和配置。在/etc/udev/rules.d目录下创建一个名为xx-usb-serial.rules的规则文件,其中xx为数字。在该文件中,可以添加如下规则: KERNEL=="ttyACM*", MODE="0666", SYMLINK+="acm%n" 该规则的作用是将CDC ACM设备的权限设置为0666,即所有用户均有读写设备的权限,并创建一个名为acm%n的符号链接,方便用户访问设备。 配置完成后,可以通过ls -l /dev/ttyACM*命令来查看设备是否正常创建,并通过各种串口通信工具进行测试。 总结起来,配置CDC ACM驱动程序需要加载相关的USB驱动程序,安装ACM驱动程序,配置udev规则,并进行设备测试。以上是对Linux CDC ACM配置的简要回答。
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烽起黎明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值