最近用到udev自动挂载U盘,下载udev源码编译后,放在设备里运行,发现udev启动后立即就退出了,

通过加--debug参数可以看到输出错误信息:

[root@DMF:dev]#mkdir .udev
[root@DMF:dev]#/mnt/nfs/udevd --debug
1546503238.330930 [12471] parse_file: reading '/etc/udev/rules.d/10-add-usb.rules' as rules file
1546503238.334515 [12471] parse_file: reading '/etc/udev/rules.d/10-remove-usb.rules' as rules file
1546503238.336570 [12471] parse_file: reading '/etc/udev/rules.d/11-add-sd.rules' as rules file
1546503238.342339 [12471] parse_file: reading '/etc/udev/rules.d/11-remove-sd.rules' as rules file
1546503238.346703 [12471] udev_rules_new: rules use 420 bytes tokens (35 * 12 bytes), 318 bytes buffer
1546503238.347162 [12471] udev_rules_new: temporary index used 300 bytes (15 * 20 bytes)
1546503126.204165 [12140] rebuild_queue_file: failed to create queue file: No such file or directory
1546503126.206204 [12140] main: error creating queue file

从错误信息上看,是创建文件失败:

1546503126.204165 [12140] rebuild_queue_file: failed to create queue file: No such file or directory

1546503126.206204 [12140] main: error creating queue file

于是就在源代码中搜索这个这个错误打印:“failed to create queue file”:

grep -rn "failed to create queue file" *

搜索结果如下:

libudev/libudev-queue-private.c:270:	err(udev_queue_export->udev, "failed to create queue file: %m\n");
匹配到二进制文件 libudev/.libs/libudev-private.a
匹配到二进制文件 libudev/.libs/libudev-queue-private.o
匹配到二进制文件 udev/udevd

还好只有一个地方,比较容易定位问题,打开文件libudev/libudev-queue-private.c跳到270行:

第270行打印的错误信息,但是有好几个地方都会goto到这里,还需要定位下是从那里goto到这里的,向上翻代码,查看,上面的代码是写文件的,一般出现“No such file or directory”的信息,是在打开文件时报错的,就在打开文件的地方加了一条打印信息,把文件名和路径打印出来:

然后重新编译运行,输出信息为:

filename_tmp: /dev/.udev/queue.tmp, line: 225

打开文件时用的模式是“w+”,所以判断应该是目录不存在导致的,查看dev下,.udev目录是不存在的,手动创建后,再次运行都正常了;

个人微信服务号同步推送文章(微信公众号:fensTeck):

udevd启动失败问题的更多相关文章

  1. windows service 1053错误 启动失败

    做项目移植的时候发现一个项目的window service启动失败,最后试出来是启动时间超时 解决办法是给window service设置一个长一点的等待时间,步骤如下: 启动,输入regedit启动 ...

  2. 玩转Windows服务系列——无COM接口Windows服务启动失败原因及解决方案

    将VS创建的Windows服务项目编译生成的程序,通过命令行 “服务.exe -Service”注册为Windows服务后,就可以通过服务管理器进行管理了. 问题 通过服务管理器进行启动的时候,发现服 ...

  3. ubuntu升级内核后vmware-player启动失败

    在虚拟机软件中,vmware player是对硬件支持很好的,通过它可以很方便的使用网银.单片机开发等等工作.但是最近ubuntu每次升级内核后,vmware都会启动失败,提示:Before you ...

  4. CentOS 7下MySQL服务启动失败的解决思路

    今天,启动MySQL服务器失败,如下所示: [root@spark01 ~]# /etc/init.d/mysqld start Starting mysqld (via systemctl): Jo ...

  5. 服务器重启后SQL Server Agent由于"The EventLog service has not been started" 启动失败

    案例环境: 操作系统   : Microsoft Windows Server 2003 Standard Edtion SP2 数据库版本 : SQL Server 2005 Standard Ed ...

  6. db2start启动失败

    db2start启动失败 [db2inst1@localhost ~]$ db2start db2start: error while loading shared libraries: libaio ...

  7. PHP5.6启动失败

    PHP编译安装完毕,启动失败,提示 1 [23-Jun-2014 12:27:02] ERROR: failed to open configuration file '/usr/local/php/ ...

  8. IIs管理服务一直启动失败的原因之一

    首先eventlog里面的日志: 万维网发布服务(WWW 服务)没有为站点 1 注册 URL 前缀 https://*:8172/.该站点已被禁用.数据字段包含错误号. IISWMSVC_STARTU ...

  9. win10 MySQL启动失败问题

    系统升级到win10之后,本地装的MySQL却突然不能启动,系统显示明明就有,可是总是启动失败.在这里解决一下: 解决win10  mysql服务消失,连接不上的问题,注意:以管理员身份运行DOS命令 ...

随机推荐

  1. Python3笔记027 - 6.2 参数传递

    第6章 函数 6.2 参数传递 在理解形参和实参的基础上,理解位置参数.关键字参数.可变参数这三种情形,以及这三种的混合情形. 6.2.1 形式参数和实际参数 形式参数:在定义函数时,函数名后面括号中 ...

  2. Hadoop基础(二):从Hadoop框架讨论大数据生态

    1 Hadoop是什么 2 Hadoop三大发行版本 Hadoop三大发行版本:Apache.Cloudera.Hortonworks. Apache版本最原始(最基础)的版本,对于入门学习最好. C ...

  3. Scala 基础(十二):Scala 函数式编程(四)高级(二)参数(类型)推断、闭包(closure)、函数柯里化(curry)、控制抽象

    1  参数(类型)推断 参数推断省去类型信息(在某些情况下[需要有应用场景],参数类型是可以推断出来的,如list=(1,2,3) list.map() map中函数参数类型是可以推断的),同时也可以 ...

  4. 数据可视化之powerBI技巧(二)Power BI性能分析器,原来还有这个功能

    ​性能分析器是Power BI前几个月推出的功能,主要用于检测视觉对象和DAX的性能如何,该功能的使用比较简单,首先勾选这个功能, 然后点击开始记录并刷新视觉对象,就可以看出每个元素耗费的时间,如下图 ...

  5. Java应用服务器之tomcat部署

    一.相关术语简介 首先我们来了解下tomcat是什么,tomcat是apache软件基金会中的一个项目,由apache.Sun 和其他一些公司及个人共同开发而成.主要作用是提供servlet和jsp类 ...

  6. 从连接器组件看Tomcat的线程模型——BIO模式

    在高版本的Tomcat中,默认的模式都是使用NIO模式,在Tomcat 9中,BIO模式的实现Http11Protocol甚至都已经被删除了.但是了解BIO的工作机制以及其优缺点对学习其他模式有有帮助 ...

  7. Go Pentester - HTTP Servers(1)

    HTTP Server Basics Use net/http package and useful third-party packages by building simple servers. ...

  8. Oracle DataGuard主库丢失归档日志后备库的RMAN增量恢复一例

    第一部分  问题描述和环境状态确认 ----1. 问题场景 Oracle DataGuard主库丢失archivelog,如何不重建备库完成同步? 在Oracle DataGuard主从同步过程中可能 ...

  9. 30个Linux Shell脚本经典案例(上)

    编写Shell过程中注意事项: 开头加解释器:#!/bin/bash 语法缩进,使用四个空格:多加注释说明. 命名建议规则:变量名大写.局部变量小写,函数名小写,名字体现出实际作用. 默认变量是全局的 ...

  10. C++语法小记---继承中的构造和析构顺序

    继承中构造和析构的顺序 先父母,后客人,最后自己 静态变量和全局变量在最开始 析构和构造的顺序完全相反 #include <iostream> #include <string> ...