gpt4 book ai didi

linux - 生成的进程挂载失败

转载 作者:太空宇宙 更新时间:2023-11-04 03:43:41 26 4
gpt4 key购买 nike

我想在 USB 硬盘插入后启动一个使用它的进程。
由于 UDEV 规则特别提到不要通过 RUN 命令运行长时间进程,因此我向我的服务发送一条 FIFO 消息,然后该服务打开相关进程。

所以流程是这样的:
UDEV > 运行操作进程 > 向服务发送 FIFO 消息 > 服务获取消息 > 运行与 HDD 一起工作的进程(又名 HDD-PROCESS)。

如果我从 shell-1 运行我的服务并从 shell-2 运行“操作进程”(UDEV 运行的进程),则一切正常(包括使用 udev 尝试时)。
但在部署中,服务是从 init 生成的,当它生成时,mount 命令会失败,并显示“没有这样的设备”。

然后我用 forksetsid 分离了“HDD-PROCESS”,但这也没有帮助。

来自 inittab:

::respawn:/opt/spwn_frm_init

ps相关输出:

PID    PPID  PGID  SID  COMM             ARGS
31112 1 31112 31112 spwn_frm_init /bin/sh /opt/spwn_frm_init
31113 31112 31112 31112 runSvc /bin/sh /app/sys/runSvc
31114 31113 31112 31112 python python /app/sys/mainSvc.py
24064 1 24064 24064 python /usr/bin/python /app/sys/hdd_proc.py sdb1
  • 一切都在 root 下运行(ps 也显示了这一点,我省略了它以节省屏幕空间)。

简而言之:当我从 shell 运行 /opt/spwn_frm_init 时,一切正常。当我杀死它并让它从 inittab 重新生成时,它不会,并且 mount 失败并出现上述错误。

更新:
尝试挂载 ext3 驱动器时没有问题,但仅限于 NTFS 驱动器(使用 ntfs-3g)。

最佳答案

找到了!
生成的进程与从 shell 运行的另一个进程之间的区别之一是环境变量,当我只想调用 mount 时,环境变量通常应该是一个问题。
但是,当我注意到问题仅发生在 NTFS 驱动器时,我突然想到 mount 可能需要调用 ntfs-3g,因此值得检查第二个驱动器是否可以在 PATH 变量中访问。

which ntfs-3g 导致 /usr/local/bin/ntfs-3g,它在默认 shell PATH 中提到,但在 init 生成的 shell 中没有提到。

为了解决这个问题,我将这个 /usr/local/bin 添加到“HDD-PROCESS”中的 PATH 中,并且 mount 开始工作:)

mount 中更好的错误消息可能会节省大量时间...

关于linux - 生成的进程挂载失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28930599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com