jjzjj

linux -/dev/ttyACM0 Postfix 管道时文件不存在

coder 2024-07-10 原文

当我以普通用户身份手动运行脚本时,一切正常。但是如果收到一封电子邮件并将其通过管道传输到 Go 脚本中,我将无法打开串口,因为文件不存在。

postfix   1239  1025  0 13:20 ? 00:00:00 pipe -n watchParadox -t unix flags=F user=watch argv=/usr/local/bin/watch -paradox
watch     1240  1239  0 13:20 ? 00:00:00 /usr/local/bin/watch -paradox

脚本在已添加到 dialout 组的 watch 用户下运行,为了确定,postfix 用户也在 dialout 中。

在我的脚本中,我运行了 ls -la 命令来找出哪些文件确实存在:

drwxr-xr-x   6 root root  380 Feb 25 13:19 .
dr-xr-xr-x. 18 root root 4096 Feb 22 17:53 ..
lrwxrwxrwx   1 root root   11 Feb 25 13:19 core -> /proc/kcore
lrwxrwxrwx   1 root root   13 Feb 25 13:19 fd -> /proc/self/fd
crw-rw-rw-   1 root root 1, 7 Feb 25 13:19 full
drwxr-xr-x   2 root root    0 Feb 25 13:19 hugepages
lrwxrwxrwx   1 root root   28 Feb 25 13:19 log -> /run/systemd/journal/dev-log
drwxrwxrwt   2 root root   40 Feb 25 13:19 mqueue
crw-rw-rw-   1 root root 1, 3 Feb 25 13:19 null
lrwxrwxrwx   1 root root    8 Feb 25 13:19 ptmx -> pts/ptmx
drwxr-xr-x   2 root root    0 Feb 25 13:19 pts
crw-rw-rw-   1 root root 1, 8 Feb 25 13:19 random
drwxrwxrwt   2 root root   40 Feb 25 13:19 shm
lrwxrwxrwx   1 root root   15 Feb 25 13:19 stderr -> /proc/self/fd/2
lrwxrwxrwx   1 root root   15 Feb 25 13:19 stdin -> /proc/self/fd/0
lrwxrwxrwx   1 root root   15 Feb 25 13:19 stdout -> /proc/self/fd/1
crw-rw-rw-   1 root root 5, 0 Feb 25 13:19 tty
crw-rw-rw-   1 root root 1, 9 Feb 25 13:19 urandom 

我确定以下文件存在,但在执行后缀管道时未显示。

crw-rw---- 1 root dialout 166, 0 25. úno 13.19 ttyACM0

我在文件上尝试了 chmod 777,但在那个部门没有运气。通过 https://github.com/tarm/serial 打开文件使用 Go 函数的库:

os.OpenFile("ttyACM0", syscall.O_RDWR|syscall.O_NOCTTY|syscall.O_NONBLOCK, 0666)

结果为

ttyACM0: no such file or directory

问题不在于路径,因为我尝试了相对路径(使用 chdir)和绝对路径,结果完全相同。

我什至禁用了 SELinux,这不是我想做的,但为了寻找解决方案,我尝试了一切。

代码没有问题,因为脚本的手动执行正确通过。我认为 Linux 设置有问题。

最佳答案

ttyACM0 的正确路径是/dev/ttyACM0。您定义一个 udev 规则以在附加文件时设置文件模式。

如果您的程序无法访问它,则可能是您的程序运行了 chrooted()。

关于linux -/dev/ttyACM0 Postfix 管道时文件不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42456328/

有关linux -/dev/ttyACM0 Postfix 管道时文件不存在的更多相关文章

  1. ruby-on-rails - Assets 管道损坏 : Not compiling on the fly css and js files - 2

    我开始了一个新的Rails3.2.5项目,Assets管道不再工作了。CSS和Javascript文件不再编译。这是尝试生成Assets时日志的输出:StartedGET"/assets/application.css?body=1"for127.0.0.1at2012-06-1623:59:11-0700Servedasset/application.css-200OK(0ms)[2012-06-1623:59:11]ERRORNoMethodError:undefinedmethod`each'fornil:NilClass/Users/greg/.rbenv/versions/1

  2. ruby-on-rails - Rails 4.1 Devise 3.3 列 users.password 不存在 - 2

    我想通过控制台手动创建一个用户:User.find_or_create_by(email:"user@mail.com",first_name:"Stan",last_name:"Smith",password:"password",password_confirmation:"password",confirmed_at:Time.now)我在过去的项目中多次这样做,但这次没有用。它没有获取Devise密码模型属性,所以这是我得到的错误:PG::UndefinedColumn:ERROR:columnusers.passworddoesnotexist我有Rails4.1.4和Dev

  3. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  4. Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理 - 2

    文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分

  5. ruby - 如何在 Ruby 中获取 linux 系统信息 - 2

    如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack

  6. ruby - 无法安装 ruby​​ 1.9.3 获取请求的 URL 不存在 - 2

    运行以下命令时:rvminstall1.9.3我得到以下输出:Error:therequestedURLdoesnotexist:ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-.tar.bz2我已将rvm更新到最新版本并输入rvmreload有什么想法吗? 最佳答案 URL应该是这样的:ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.bz2尝试更新您的rvmrvmgethead然后安装1.9.3rvminstall1.9.3

  7. ruby - rbenv:在 Linux Mint 上找不到 gem 命令 - 2

    我在LinuxMint17.2上。我最近使用apt-getpurgeruby​​删除了ruby​​。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,

  8. ruby - 在 Linux 上编译 Ruby 1.9.2 所需的先决条件? - 2

    我是Ruby和RoR的新手。我有一个带有Ubuntu镜像的干净Linode实例,我想从源代码编译Ruby而不是使用apt-get。我已经在谷歌上搜索了执行此操作的说明,但经过一些尝试后,当我尝试运行一些教程示例时,我不断收到有关缺少zlib和其他一些包的错误。任何人都可以给我详细的说明(或链接),教我如何在从源代码编译Ruby之前安装必要的必备包吗?我的目的是编译Ruby的最新稳定版本,然后安装Rubygems和Rails。提前感谢您的帮助!!! 最佳答案 Thisblogpost涵盖从源代码编译ruby​​所需的包和安装过程;它引

  9. ruby-on-rails - roo gem 文件 .xlsx 不存在 - 2

    我用cloud9ide在rails上使用ruby!我正在测试gem'roo'以将excel文件导入我的数据库。在我这样做之前,我想测试一下这个gem作品。gem文档:https://github.com/roo-rb/roo但是带文件有问题!报错信息是这样的MersmapController#index中的IOError文件../assets/test.xlsx不存在这是我的代码!require'roo'classMersmapController并在index.erb中我使用我的“images.jpg”(图像文件)测试这条路径当我在index.erb中写入图像文件的路径时,它确实有效

  10. ruby-on-rails - 如何通过 Assets 管道加载css.erb文件 - 2

    我希望我的样式表保持纯css,但我想使用嵌入式ruby​​来包含一些图像的动态路径:.home{background:#FFFurl()no-repeat;}如果我将样式表从.css更改为.css.erb,image_path会得到正确解释,但当我部署到生产环境时,它不会被Assets管道处理。如果我硬编码路径,无论是在生产还是开发中都会出错,因为它们以不同的方式加载Assets。我该如何解决? 最佳答案 这是有效的:将.erb添加到.css文件并使用ruby/rails代码就可以了。所以我上面的问题中的片段很好。你必须在/conf

随机推荐