linux中mount的文件不久失效,Linux – mount命令返回零/ 0但不起作用

听起来很奇怪,我有一个 shell脚本,它被udev规则触发,将附加的USB设备挂载到系统文件树.该脚本在USB设备连接到系统时运行,因此规则似乎没问题.我通过syslog监视脚本的进度,它也很好,甚至mount命令返回零,它说:

root[1023]: mount: /dev/sda1 mounted on /media/partitionlabel.

但最后设备没有安装,它没有列在/ etc / mtab – / proc / mounts – findmnt – mount中.如果我在设备上运行umount,它也说,设备没有安装.

但是,如果我从终端手动运行脚本作为root,那么它工作正常,设备可以挂载,但不是由udev运行时.

我已经在脚本开始时添加了8秒的休眠时间,以确保它不是时间问题,并且还从规则文件名中删除了数字,以确保udevd将新规则放在规则队列的底部,并且脚本将遵循其他系统规则,但没有成功.

系统日志:

(装置附后)

kernel: usb 1-1.2: new high-speed USB device number 12 using dwc_otg

kernel: usb 1-1.2: New USB device found, idVendor=058f, idProduct=6387

kernel: usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3

kernel: usb 1-1.2: Product: Mass Storage

kernel: usb 1-1.2: Manufacturer: Generic

kernel: usb 1-1.2: SerialNumber: 24DCF568

kernel: usb-storage 1-1.2:1.0: USB Mass Storage device detected

kernel: scsi host6: usb-storage 1-1.2:1.0

kernel: scsi 6:0:0:0: Direct-Access Generic Flash Disk 8.07 PQ: 0 ANSI: 4

kernel: sd 6:0:0:0: [sda] 1968128 512-byte logical blocks: (1.00 GB/961 MiB)

kernel: sd 6:0:0:0: [sda] Write Protect is off

kernel: sd 6:0:0:0: [sda] Mode Sense: 23 00 00 00

kernel: sd 6:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA

kernel: sda: sda1

kernel: sda: p1 size 1968126 extends beyond EOD, enabling native capacity

kernel: sda: sda1

kernel: sda: p1 size 1968126 extends beyond EOD, truncated

kernel: sd 6:0:0:0: [sda] Attached SCSI removable disk

root[1004]: /usr/local/sbin/udev-auto-mount.sh - status: started to automount sda1

root[1019]: /usr/local/sbin/udev-auto-mount.sh - status: Device Label is partitionlabel and Filesystem is vfat.

root[1021]: /usr/local/sbin/udev-auto-mount.sh - status: mounting the device sda1 by filesystem vfat to /media/partitionlabel.

root[1023]: mount: /dev/sda1 mounted on /media/partitionlabel.

root[1024]: /usr/local/sbin/udev-auto-mount.sh status: mount command proceed for vfat, retval is 0

root[1025]: /usr/local/sbin/udev-auto-mount.sh - status: succeed!

CONFIGS:

/etc/udev/rules.d/local-rules:

udev中定义的规则是:

# /etc/udev/rules.d/local-rules

ENV{ID_BUS}=="usb", ACTION=="add", ENV{DEVTYPE}=="partition", \

RUN+="/usr/local/sbin/udev-automounter.sh %k $ENV{ID_FS_LABEL_ENC}"

udev-auto-mount.sh

该脚本由另一个在udev规则中定义的脚本启动.

它如此直接,它使得挂载点目录和使用其文件系统类型和一些常规选项将USB设备安装到挂载点.我在mount命令中添加了“-v”选项以使其更加详细,并将所有输出重定向到syslog,因此我可以看到它是如何运行的,但它并没有说太多.

#!/bin/sh

## /usr/local/sbin/udec-auto-mount.sh

##

logger -s "$0 - status: started to automount ${1}"

DEVICE=$1

sleep 8

#...

#...

# Checking inputs, getting filesystem type (ID_FS_TYPE), partition label

# (ID_FS_LABEL) and ...

mkdir "/media/${ID_FS_LABEL}"

logger -s "$0 - status: mounting the device ${DEVICE} by filesystem ${ID_FS_TYPE} to /media/${ID_FS_LABEL}."

case $ID_FS_TYPE in

vfat) mount -v -t vfat -o sync,noatime,nosuid,nodev /dev/${DEVICE} "/media/${ID_FS_LABEL}" 2>&1 | logger

let retVal=$?

logger -s "$0 status: mount command proceed for vfat, retval is ${retVal}"

;;

*) mount -v -t auto -o sync,noatime /dev/${DEVICE} "/media/${ID_FS_LABEL}"

;;

esac

if [ ${retVal} -eq 0 ]; then

logger -s "$0 - status: succeed!"

exit 0

else

logger -s "$0 Error: unable to mount the device ${DEVICE}, retval is ${retVal}"

rmdir "/media/${ID_FS_LABEL}"

fi

exit 0

也许它有帮助:

有时,在脚本无法安装USB设备后,当我分离设备时,系统日志会出现一些错误:

kernel: usb 1-1.2: USB disconnect, device number 11

systemd-udevd[143]: error: /dev/sda: No such file or directory

systemd-udevd[977]: inotify_add_watch(7, /dev/sda, 10) failed: No such file or directory

编辑:

这是’mount’版本:

$mount -V:

mount from util-linux 2.27.1 (libmount 2.27.0: assert, debug)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值