linux 怎么每隔41s采集cpu占用率并存入文件

在应用编程的时候通常会碰到需要一个任务在特定的延时之后执行一个指定的动作,如等待外设以确保数据可靠控制扬声器发声时间以及串口通信超时重发等。这就需要利用定时器机制来计量特定长度的时间段

    vxWorks作为实时嵌入式系统,提供多样的定时接口函数下面结合我的项目经历和网上的参考资料列举一些常用的定时方式,并说明其注意事项

taskDelay(n)使调用该函数的任务延时n个tick(内核时钟周期)。该任务在指定的时间内主动放弃CPU除了taskDelay(0)专用於任务调度(将CPU交给同一优先级的其他任务)外,任务延时也常用于等待某一外部事件作为一种定时/延时机制。在没有中断触发时taskDelay能很方便地实现,且不影响系统整体性能例如写数据至EEPROM,EEPROM需要一个内部擦除时间(最大擦除时间为l0ms)以下所提及的一个tick都假设为16.67

    使用taskDelay需注意嘚另外一点是:即使经过n个tick,调用延时的任务也不保证返回执行状态可能有更高或相同优先级的任务占用了CPU。看了上面的介绍就可以鼡它模拟实现Sleep函数了,代码如下:

下面是taskDelay的延时示意图:

VxWorks提供了一种通用的看门狗定时器机制利用提供的函数,任何任务都可以创建一個看门狗定时器经过指定的延时后,实现在系统时钟ISR的上下文中运行指定的程序需要注意的是,看门狗定时触发的程序是在中断级别仩执行而不是在任务的上下文中。因此看门狗定时挂接的程序编写有一定的限制,这个限制条件与中断服务程序的约束是一样的比洳,不能使用获取信号量的语句以及像printf()这样的I/O系统函数。

通过wdCreate()可以创建一个看门狗定时器调用wdStart()启动定时器,延时参数同taskDelay一样以tick为单位同时还须指定定时完成后要调用的程序。如果应用程序同时需要多个看门狗函数则应使用wdCreate()产生多个独立的看门狗ID。因为对于给定的看门狗ID通过wdStart()只能关联一个看门狗函数。在指定的tick计数到达之前要取消一个看门狗计时器,可以通过调用wdCancel()实现每调用一次wdStart(),看门狗定時器只执行一次因此对于一些要求周期性执行的应用程序,要获得该效果则定时器函数本身必须通过递归调用wdStart()来重新启动定时器。

    如果利用看门狗定时器实现延时则存在与taskDelay一样的精度上的缺陷,以tick为基准.并且看门狗关联的函数所受的限制很大这也是使用不便的一個方面。不过启动看门狗的任务不会被阻塞因为wdStart()调用立即返回并继续执行。

sleep()和nanosleep()是VxWorks提供的延时函数接口但是在实际应用时,默认是没有添加的得手动添加。sleep以s为单位nanosleep可以提供更精确的延时;传参是时钟的结构体,参数可以精确到ns但实际上只能做到大于或等于这个时問。因为skep或nanosleep函数延时的时间基准仍是tick调用此函数的任务处于任务延时状态,这点与taskDelay()一致不同的地方是,taskDelay()是用于任务调度taskDelay(O)有其自身的含义,而sleep(O)则是没有意义的前面提过,taskDelay(n)延时时间为(n-1)tick~ntick而sleep/nanosleep则保证实际延时时间大于或等于设定的时间参数。实验代码如下:

? 虚拟机安装:通过一些特定的掱段来进行模拟安装

root:该位置表示当前终端登录的用户名

@:发音at,表示“在”

图片:当前终端工作目录

#表示身份识别符管理员登陸时显示#,普通用户显示$;

快照:又称还原点就是保存在拍快照时候的系统的状态(包含了所有的内容),在后期的时候随时可以恢复【侧重于短期备份,需要频繁备份的时候可以使用快照做快照的时候虚拟机的操作系统一般处于开启状态】

点击虚拟機 - 快照 - 快照管理器找到刚才建立的快照就可返回刚才的位置;

克隆:就是复制的意思。【侧重长期备份做克隆的时候是必须的关闭的】

┅般是一个独立的东西,可以通过一些特定的工具进行打开并且其中不能包含除了文字以外的东西;

可以在其中包含其他文件的东西

注意:日常运维工作中,有一半以上的工作内容其实都是对文件的操作;Linux本身也是一个基于文件形式表示的操作系统;

bin:全称binary,含义是二进制该目录中存储的都是一些二进制文件,文件都是刻意被运行的;

dev:该目录中主要存放的是外接设备例如盘、其他的光盘等。在其中的外接设备是不能被直接使用的需要挂载(类似windows下的分配盘符)。

etc:该目录主要存储一些配置文件

Home:表示“家”表示除了root鼡户以外其他用户的家目录,类似于windows下的user/用户目录

proc:process表示进程,该目录中存储的是Linux运行时的进程

sbin:全称super binary该目录也是储存一些可以被执荇的二进制文件,但是必须得有super权限的用户才能执行

tmp:表示临时的当系统运行时候产生的临时文件会在这个目录存储

var:存放的程序/系统嘚日志文件的目录

mnt:当外接设备需要挂载的时候,就需要挂载到mnt目录下

指的是Linux终端(命令行)中输入的内容就称之为指令

Linux通用指令格式:

#指令主体 [选项] [操作对象]

一个指令可以包含多个选项,操作对象也可以是多个

用法1:#ls ——>含义:列出当前工作目录下的所有文件/文件夾的名称

用法2:#ls 路径 ——>含义:列出指定路径下的所有文件/文件夹的名称

路径分为两种:相对路径、绝对路径

相对路径:相对首先要有一個参照物(一般是当前的工作路径)

? “./“(当前路径)和”../(上一级路径)”

绝对路径:绝对路径不需要参照物直接从根“/”开始寻找对应路勁

用法3:#ls 选项 路径——>含义:在列出指定路径下的文件夹/文件的名称,并以指定的格式进行显示

? -l:表示list表示以详细列表的形式进行展礻

? -a:表示显示所有的文件/文件夹(包含了隐藏文件/文件夹)

上述列表中第一列字符表示文档的类型,其中”-“表示该行对应的文档类型昰文件”d”表示文档类型为文件夹

在Linux中隐藏文档一般都是以”.”开头

用法4:#ls -lh 路径——>含义:列出指定路径下的所有文件/文件夹的名称,鉯列表的形式并且在显示文档大小的时候以可读性较高的形式显示

文件夹不管实际大小是多少一般都是显示4k大小

在Linux中有一个特殊嘚符号”~”表示当前用户的家目录。

用法1:#mkdir 路径 (make directory创建目录);路径可以是文件夹名称也可以是包含名称的一个完整路径

注意:ls列出嘚结果颜色说明,其中蓝色的名称表示文件夹黑色的表示文件,绿色的其权限为拥有所有权限

用法2:#mkdir -p 路径——>含义:当一次性创建多层鈈存在的目录的时候添加-p参数,否则会报错

用法3:#mkdir 路径1 路径2 路径3......——>含义:表示一次性创建多个目录

用法:#touch 文件路径 ——>含义:创建文件;路径可以是直接的文件名也可以是路径

用touch创建多个文件

用法:#cp 源路径 目的路径(copy复制)

含义:复制文件/文件夹到指定位置嘚位置

注意:Linux在复制过程中是可以重新对新位置的文件进行重命名的,但是如果不是必须的需要则建议保持前后名称一致;cp命令进行文件夹复制操作的时候需要添加选项“-r”【-r表示递归复制】,否则目录将被忽略

用法:#mv 源路径 目的路径(move,移动剪切)

含义:移动文档到新嘚位置

补充:Linux中重命名也是mv,语法和移动一样

语法:#rm 选项 需要移除的文档路径

? -f:强制删除不提示是否删除

注意:删除一个目录的時候需要做递归删除,并且一般也不需要进行删除确认询问所以移除目录的时候一般需要使用-rf选项

*为通配符,表示任意的字符

vim(是┅款文本编辑器)

语法:#vim 文件路径

作用:打开一个文件(可以不存在也可以存在)

i键表示插入模式进行编辑,ESC表示退出编辑模式再输叺:wq

一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计则这时候需要使用到的输出重定向技术

>:覆盖输出,会覆盖掉原先的文件内容

>>:追加输出不会覆盖原始文件内容,会在原始内容末尾继续添加

注意:文件可以不存在不存在则新建

作用:cat有直接打开一个文件的功能

语法:#cat 文件的路径

作用:cat还可以对文件进行合并

语法:#cat 待合并嘚文件路径1 待合并的文件路径2 ...... 文件路径n > 合并之后的文件路径

语法:#df -h表示以可读性较高的形式展示大小

作用:查看内存使用情况

Swap:鼡于临时内存,当系统真实内存不够用的时侯可以临时使用磁盘空间来充当内存

作用:查看一个文件的前n行如果不指定n,则默认显示前10荇

语法:#head -n 文件路径【n表示数字】

作用:查看一个文件的末n行,如果n不指定默认显示后10行

作用:可以通过tail指令来查看一个文件的动态變化

一般用于查看系统的日志比较多

作用:查看文件以较少的内容进行输出,按下辅助功能键(数字+回车(从数字行开始显示)、涳格键(翻页)、方向键(换行显示))查看更多

语法:#less 需要查看的文件路径

作用:统计文件内容信息(包含行数、单词数、字节数)

语法:#wc [选项] 需要统计的文件路劲

? -w:表示words单词数 【依照空格来判断单词数量】

作用:表示操作时间日期(读取、设置)

作用:获取之湔或者之后的某个时间(备份)

符号的可选值:+(之后)/ -(之后)

单位可选值:day(天)、month(月份)、year(年)

表示两位月份(带前导0)

語法:#cal等价于#cal -1直接输出当前月份的日历

语法:#cal -3表示输出上一个月+本月+下一个月的日历

语法:#cal -y 年份表示输出某一个年份的日历

作用:清除终端中已存在的命令和结果(信息)清屏

注意:该命令并不是真的清除了之前的信息,而是把之前的信息的隐藏到了最上面通过滚动條继续查看以前的信息。

作用:管道一般可以用于“过滤”“特殊”,“扩展处理”

语法:管道不能单独使用,必须要配合湔面所讲的一些指令使用其作用主要是辅助作用。

#ls /| grep y 以管道作为分界线前面的命令有个输出,后面需要输入然后再过滤,最后再输出通俗的讲就是管道前面的输出就是后面指令的输入。

grep指令:主要用于过滤

特殊用法案例:通过管道的操作方法来实现less的等价效果(了解)

我要回帖

更多关于 每过和每隔 的文章

 

随机推荐