linux没有scsi_id命令
-
回答:在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年前 -
关于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年前 -
在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年前