我想要启动一个进程,一旦它被插入使用USB硬盘驱动器。
由于UDEV规则明确提到不要从RUN命令运行长时间的进程,因此我会向我的服务发送FIFO消息,然后打开相关进程。安装从产生的进程失败
所以流程如下:
UDEV>运行动作进程>向服务发送FIFO消息>服务获取消息>运行使用HDD(又名HDD-PROCESS)的进程。
如果我从shell-1运行我的服务并从shell-2运行'action process'(UDEV运行的那个),那么一切正常(包括使用udev进行尝试时)。
但是在部署中,该服务是从init产生的,如果发生这种情况,mount
命令会失败,说“没有这样的设备”。
然后,我用fork
和setsid
分开“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
- 一切根下运行(
ps
显示,太,我省略了以节省屏幕空间)。
所以简而言之:当我从shell运行/opt/spwn_frm_init
时,一切正常。当我杀了它并让它从inittab重新生成时,它不会和mount
失败并出现上述错误。
UPDATE:
试图mount
一个ext3驱动器时,但只对NTFS一个是没有问题的(使用NTFS-3G)。