当前位置: 首页 > news >正文

长沙网站建设icp备ppt接单兼职网站

长沙网站建设icp备,ppt接单兼职网站,网页策划书,做电商设计有什么好的网站推荐任务描述 错误出现出现过四五次#xff0c;应该是诊断单元tf卡读写出问题导致下面这条告警一直高频写入到/var/log/下的syslog、kern.log、messages中 Nov 23 06:25:12 embest kernel: omap_hsmmc 48060000.mmc: [omap_hsmmc_pre_dma_transfer] invalid cookie: data-hos…任务描述 错误出现出现过四五次应该是诊断单元tf卡读写出问题导致下面这条告警一直高频写入到/var/log/下的syslog、kern.log、messages中 Nov 23 06:25:12 embest kernel: omap_hsmmc 48060000.mmc: [omap_hsmmc_pre_dma_transfer] invalid cookie: data-host_cookie 1 host-next_data.cookie -2107299097 等系统分区写满后WebServer一个node.js实现的可视化系统会卡死也可能tf出错时就已经卡死,但是WebServer中日志中没报任何异常只能删掉日志重启诊断单元一个硬件设备arm64ubuntu系统才能恢复尝试重新该问题重现不了就想办法识别该问题发生就重启诊断单元 前期思考 思路1 我在网上翻到一个有点类似的问题讨论不确定是什么问题有可能是板子的事不过楼主建议“如果内核关闭SMP或是uboot启动的时候nosmp 参数禁用SMP就不会出现该问题”https://bbs.21ic.com/icview-903274-1-1.html 所以最开始的解决方法是日志中出现这个错误就直接停止MotorServer然后重启诊断单元吧把重启的记录也写到MotorServer.log中。 因此我完成了一个shell脚本代码如下。 #/bin/bash _var _var1 _var2# 判断日志文件是否存在 if [ -f /var/log/syslog ] ;then_vargrep -w invalid cookie /var/log/syslog; fi if [ -f /var/log/kern.log ] ;then_var1grep -w invalid cookie /var/log/kern.log; fi if [ -f /var/log/messages ];then_var2grep -w invalid cookie /var/log/messages; fi# 判断日志文件是否有invalid cookie相关的错误 if [[ $_var || $_var1|| $_var2 ]]; thenecho date %Y-%m-%d %H:%M:%S MotorServer will restart because /var/log/ exist error of invalid cookie /media/eMMC-Flasher/motor/log/MotorServer.logsupervisorctl restart MotorServerecho existsudo reboot fi我的打算是脚本执行就写到系统的定时任务每隔12小时定时执行一次检查/var/log下的syslogkern.logmessages是否有invalid cookie这种错误信息有就记录到moter-server.log重启motor-server和诊断单元。但是并不可行因为出现这个错误之后会不断写入很快就满了不能用定时任务应该看一下syslog和kern.log有没有回调钩子 思路2 因此我也找到一个可以监听到文件事件的回调钩子函数及其相关介绍相关参考链接如下https://blog.csdn.net/sesiria/article/details/119721118 https://www.cnblogs.com/PikapBai/p/14480881.html 不过这个是针对所有的文件的用这种也可行不过效率可能没有专门针对syslog的高但我觉得syslog、kern.log应该会提供专门的接口。 我也专门寻找了一些博客文章发现系统日志syslog也是有提供linux内核接口syslog.h但是只有写入日志的接口并没有监听写入事件的具体了解syslog.h可以参考下面这些文章 https://blog.csdn.net/zhizhengguan/article/details/111597389 https://blog.csdn.net/u012247418/article/details/83684052 https://blog.csdn.net/qq_23274715/article/details/106138885 思路3 过滤日志可以用syslog filter来监测是否有日志文件中的cookie invalid从而可以过滤掉这一类的日志从而可以防止系统日志被大量写入磁盘空间占满。 利用rsyslog进行系统日志过滤的相关文章参考如下 https://blog.csdn.net/FaceThePast/article/details/114483026 https://blog.csdn.net/Jailman/article/details/115956157 查看rsyslog版本https://blog.csdn.net/jeonkc/article/details/79986634 解决方案敲定 初步想法如果要根据写入syslog的内容进行判断对诊断单元重启目前我能想到的就是用inotify监听syslog的写入事件然后再c调用tail命令获取日志最新写入的前50条数据对里面的内容进行判断是否存在“invalid cookie”错误决定要不要重启诊断单元深入思考假如日志写入增长快日志内容多获取前k条的想法并不好一来有可能出现错过漏掉的情况就算不会出现错过漏掉的情况假如日志内容大写入缓存然后利用字符串对比较这样的效率也不好三syslog作为系统日志写入会相对记录的信息相对多同时“invalid cookie”这样的错误信息是偶发事件并不容易复现这样子程序则会长时间去进行无用的判断浪费系统资源。优化后最终决策syslog filter过滤出cookie invalid再触发inotify只要触发了就重启不用传递日志内容。设置rsyslog规则把包含cookie invalid的日志信息写入一个A文件inotify就监听A文件A文件有写入事件了就重启。 这样子做一来是保留了错误日志信息也方便监听而且inotify的c程序可以挂在后台supervisor进程同时偶发事件不占用程序一直判断。 实现过程 配置rsyslog过滤包含“invalid error”的日志 1这一步我们的想法是写过滤规则将包含指定内容的日志信息写入自定义的文件。在根据https://blog.csdn.net/FaceThePast/article/details/114483026 博客里面的方式设置rsylog.conf但是发现并不生效。 2后面查了其他博客例如https://blog.csdn.net/Jailman/article/details/115956157。发现不同版本的rsyslog服务是的配置文件有一些不同可以用下面命令去查看版本 rsyslogd -ver图片上面看是V8的格式差不多是下面这样但是下面这个的意思是日志内容与keyword相等的就停止写入并且修改了内容后要重启reyslog 这不符合我们的要求那我们参考v7的写成这样意思是将包含invalid cookie内容的日志写入/var/log/invalid_cookie_error.log文件中 syslog.conf :rawmsg, contains, invalid cookie /var/log/invalid_cookie_error.log 然后将写好的过滤规则文件syslog.conf放到/etc/rsyslog.d/目录下因为规则文件存放的路径是/etc/rsyslog.conf里面原来配置好的 最后重启服务 service rsyslog restart还要看看服务有没有正常运行,有没有错误信息 service rsyslog statusinvotify监听指定文件是否被写入 这里附上invotify监听的c代码 #include stdio.h #include string.h #include stdlib.h #include unistd.h #include errno.h #include sys/inotify.h #include sys/reboot.h #include iostream #include sys/time.h using namespace std; #define EVENT_NUM 12 void GetTime(string strtime) {time_t tt time(NULL);//这句返回的只是一个时间cuotm* t localtime(tt);char buffer[50];snprintf(buffer, sizeof(buffer), %04d-%02d-%02d %02d:%02d:%02d, t-tm_year 1900, t-tm_mon 1, t-tm_mday, t-tm_hour, t-tm_min, t-tm_sec);strtime.append(buffer); }string GetTime() {string strtime;GetTime(strtime);return strtime; } const char *event_str[EVENT_NUM] {IN_ACCESS,IN_MODIFY,IN_ATTRIB,IN_CLOSE_WRITE,IN_CLOSE_NOWRITE,IN_OPEN,IN_MOVED_FROM,IN_MOVED_TO,IN_CREATE,IN_DELETE,IN_DELETE_SELF,IN_MOVE_SELF };int inotifyTask(char *argv[]) {coutGetTime().c_str():inotify event start.....endl;int fd -1;fd inotify_init();int wd1 -1;struct inotify_event *event;int length;int nread;char buf[BUFSIZ];int i 0;buf[sizeof(buf) - 1] 0;wd1 inotify_add_watch(fd, argv[1], IN_ALL_EVENTS);if(wd1 0){fprintf(stderr, %s:inotify_add_watch %s failed\n, GetTime().c_str(),argv[1]);printf(%s:Error no.%d: %s\n, GetTime().c_str(),errno, strerror(errno));}length read(fd, buf, sizeof(buf) - 1);nread 0;// inotify 事件发生时while(length 0){printf(\n);event (struct inotify_event *)buf[nread];// 遍历所有事件for(i 0; i EVENT_NUM; i){ // 判断事件是否发生if( (event-mask i) 1 ){ // 该监控项为目录或目录下的文件时if(event-len 0){fprintf(stdout, %s:%s --- %s\n,GetTime().c_str(), event-name, event_str[i]);}// 该监控项为文件时else if(event-len 0){if(event-wd wd1){if(strcmp(event_str[i],IN_MODIFY)0){fprintf(stdout, %s:%s --- %s\n,GetTime().c_str(), argv[1], event_str[i]);system(echo date \%Y-%m-%d %H:%M:%S MotorServer will restart because /var/log/ exist error of invalid cookie\ /media/eMMC-Flasher/motor/log/MotorServer.log);system(nice -n 19 supervisorctl stop MotorServer);system(nice -n 19 supervisorctl stop WebServer);sync(); // 同步磁盘数据,将缓存数据回写到硬盘,以防数据丢失[luther.gliethttp]printf(%s:system will reboot\n,GetTime().c_str());return system(sudo reboot);// return reboot(RB_AUTOBOOT);}}}}}nread nread sizeof(struct inotify_event) event-len;length length - sizeof(struct inotify_event) - event-len;}close(fd);return 0; }int main(int argc, char *argv[]) { if(argc 2){fprintf(stderr, Usage: %s path\n, argv[0]);return -1;}if(inotifyTask(argv) -1){return -1;}return 0; } 在linux中可以用logger xxx模拟将日志信息写入syslog logger embest kernel: omap_hsmmc 48060000.mmc: [omap_hsmmc_pre_dma_transfer] invalid cookie: data-host_cookie 1 host-next_data.cookie -2107299097
http://www.tj-hxxt.cn/news/142638.html

相关文章:

  • 济南市住房建设网站网页设计基础知识点总结
  • 创业邦使用什么网站模板flash网站项目背景
  • 网站建设分工的通知如何进入设计公司网站
  • 公司网站费用怎么做会计分录如何用照片做模板下载网站
  • 专注扬中网站建设哈尔滨网站建设制作费用
  • 淘宝做网站的wordpress绑定七牛
  • 经典 网站hhvm+wordpress
  • 山东广饶建设银行网站网站开发的心得
  • 邢台网站制作的地方网站流量统计平台
  • 新手学做网站的书百度提交收录
  • 手机做电商怎么赚钱成都网站关键词优化
  • 一个网站做几个关键词最专业网站建设公司哪家好
  • 网站前置审批查询安徽省建设工程八大员报名网站
  • 方城网站制作苏州网站推广服务
  • 模板网站和插件提供网站建设备案报价
  • 好的网站建设网建设工程造价信息网站
  • 做视频分享网站的参考书华为网络推广方案
  • 单页网站在线制作三大设计软件哪个好
  • 怎么弄自己的网站卖东西网页升级紧急通知在哪里看
  • 陶瓷 中企动力 网站建设重庆做网站有哪些
  • 网站开发入门培训中国建设银行官方网站汇率
  • Paas网站建设界面设计分析
  • 网站怎么做关键词流量秀洲区住房和城乡建设局网站
  • c 网站开发 环境配置小米发布会时间2022
  • 网站建设类型的好处福建省建设职业注册资格管理中心网站
  • 展馆网站建设wordpress加cnzz统计在那里加
  • 给人做网站赚钱上海网站建设内容更新
  • 网站实现如何用社交网站开发客户
  • 教做蛋糕的网站龙华网站建设专业公司
  • 网站模板制作与安装教程郴州网站建设公司哪个好