linux没有scsi_id命令

不及物动词 其他 547

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    回答:在Linux中,确实没有原生的”scsi_id”命令。”scsi_id”命令通常用于获取SCSI设备的唯一标识符。然而,Linux提供了其他方法来获取类似的信息。

    在Linux中,可以通过/sys/class/scsi_device/目录来访问SCSI设备的信息。每个SCSI设备都在该目录下有一个对应的目录,目录名称的格式为”hostX:X:X:X”,其中X表示SCSI总线号、SCSI设备号以及SCSI通道号。在每个设备的目录下,有一个文件”device/scsi_device”,该文件的内容即为设备的唯一标识符。

    可以通过以下命令获取SCSI设备的唯一标识符:

    “`shell
    cd /sys/class/scsi_device/
    ls -l | awk ‘{print $9}’ | xargs -I {} sh -c “cat {}/device/scsi_device”
    “`

    另外,也可以使用udev规则来获取SCSI设备的唯一标识符。udev是Linux系统中用于设备管理的工具,它可以根据设备的属性生成规则,并在设备插入或移除时执行相应的操作。通过在udev规则中添加以下内容,可以实现获取SCSI设备唯一标识符的功能:

    “`shell
    ACTION==”add”, SUBSYSTEM==”scsi”, ATTRS{vendor}==”xxxx”, ATTRS{model}==”xxxx”, ATTRS{serial}==”xxxx”, ENV{ID_SCSI_ID}=”$attr{type}:$attr{vendor}:$attr{model}:$attr{serial}”
    “`

    以上命令中,”xxxx”分别代表SCSI设备的厂商、型号和序列号。可以根据实际情况修改这些属性的值。在udev规则中添加了上述内容后,可以通过读取”ID_SCSI_ID”环境变量来获取SCSI设备的唯一标识符。

    总之,虽然Linux系统中没有原生的”scsi_id”命令,但是可以通过访问/sys/class/scsi_device/目录或使用udev规则来获取SCSI设备的唯一标识符。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    关于Linux没有scsi_id命令的问题,以下是五点要点的解答:

    1. scsi_id命令是用于获取与SCSI设备关联的唯一标识符。它可以用于查找SCSI设备的WWN(World Wide Name)或EUI(Extended Unique Identifier),以便在Linux系统中唯一标识和识别这些设备。然而,从RHEL 7 / CentOS 7版本开始,scsi_id命令在标准发行版中被移除了。

    2. scsi_id命令被移除主要是因为它依赖于sysfs文件系统,而从Linux 3.19内核版本开始,sysfs文件系统已经过时。取而代之的是使用udev和systemd来管理设备,这意味着scsi_id命令不再适用于当前的Linux发行版。

    3. 在新的Linux发行版中,可以通过使用udev规则来获取SCSI设备的唯一标识符。udev规则是一种规则模式,用于在设备插入系统时触发相关操作。通过创建自定义的udev规则,可以识别和标识SCSI设备。

    4. 通过udev规则获取SCSI设备的唯一标识符可以使用以下步骤:
    a. 在udev规则目录(通常是`/etc/udev/rules.d/`)中创建一个新文件,例如`60-scsi-id.rules`。
    b. 在文件中输入以下内容:
    “`
    KERNEL==”sd*”, SUBSYSTEM==”block”, PROGRAM==”/usr/lib/udev/scsi_id –whitelisted –device=/dev/%k”, RESULT==””, SYMLINK+=”disk/by-id/scsi-*”
    “`
    c. 保存文件,并重新加载udev规则,例如执行`sudo udevadm control –reload-rules`

    5. 以上的udev规则将通过调用`/usr/lib/udev/scsi_id`来获取SCSI设备的唯一标识符,并将其创建为`/dev/disk/by-id/scsi-*`的符号链接。可以使用`ls -l /dev/disk/by-id/`来查看这些符号链接,以了解SCSI设备的唯一标识符。

    需要注意的是,上述解决方法可能会因Linux发行版和版本的不同而有所差异。在使用之前,请确保查阅相关的文档和参考资料,以适应您所使用的具体Linux系统。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在Linux系统中,`scsi_id`命令用于获取SCSI设备的唯一标识符。不过,在一些Linux发行版中,`scsi_id`命令可能没有预装。但是我们可以通过其他方式来获取SCSI设备的唯一标识符。本文将介绍两种常用的获取SCSI设备唯一标识符的方法。

    ## 方法一:使用udevadm命令获取SCSI设备唯一标识符

    1. 首先,我们需要安装`udevadm`命令。在大部分Linux发行版中,`udevadm`命令是预装的,如果你的系统没有该命令,你可以通过以下命令安装:

    “`shell
    sudo apt-get install udev
    “`

    “`shell
    sudo yum install udev
    “`

    2. 使用`udevadm`命令获取SCSI设备的唯一标识符。打开终端,并执行以下命令:

    “`shell
    sudo udevadm info –query=all –name=/dev/sdX
    “`

    这里的`/dev/sdX`是你要获取唯一标识符的SCSI设备所对应的设备文件路径。例如,要获取`sdb`设备的唯一标识符,可以执行以下命令:

    “`shell
    sudo udevadm info –query=all –name=/dev/sdb
    “`

    命令执行后,将会输出SCSI设备的详细信息,唯一标识符通常位于`ID_SERIAL`、`ID_SERIAL_SHORT`或`ID_WWN`字段中。

    ## 方法二:使用udev规则获取SCSI设备唯一标识符

    1. 使用文本编辑器打开`/etc/udev/rules.d/99-scsi_id.rules`文件,如果该文件不存在,则需要创建。

    “`shell
    sudo vi /etc/udev/rules.d/99-scsi_id.rules
    “`

    2. 在文件中添加以下内容:

    “`plaintext
    ACTION==”add”, SUBSYSTEMS==”block”, KERNEL==”sd*[!0-9]”, RUN+=”/sbin/scsi_id -gus /dev/$kernel”
    “`

    这条规则将会在每次添加SCSI设备时运行`scsi_id`命令,并返回唯一标识符。

    3. 保存文件并退出文本编辑器。

    4. 重新加载udev规则。

    “`shell
    sudo udevadm control –reload-rules
    “`

    5. 重新插入或重启SCSI设备。

    6. 使用以下命令获取SCSI设备的唯一标识符:

    “`shell
    sudo udevadm monitor –environment –udev
    “`

    这个命令将会显示udev事件流中所有的环境变量,你可以在输出中找到`ID_SERIAL`, `ID_SERIAL_SHORT`或`ID_WWN`字段,它们包含了SCSI设备的唯一标识符。

    总结:通过以上两种方法,你可以在Linux系统中获取SCSI设备的唯一标识符。如果你在使用过程中遇到问题,可以参考相关文档或请求社区支持。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部