如何编写一个 bash 脚本来获取 /dev/random 的次要和主要设备号
how to write a bash script that would get minor and major device numbers of /dev/random
我正尝试在 chroot 环境中 运行 一个程序,它需要 /dev/random
作为资源。
我可以手动对其执行 ls -l
,然后使用 mknod c xx yy
再次创建文件,但我需要将其设置为自动,我认为这些版本号与 linux 版本不同另一个所以这就是为什么我有以下问题:
我如何编写一个 bash 脚本来提取 /dev/random
的次要和主要数字并将其与 mknod 一起使用?我可以使用 ls -l
但我不知道如何提取它的子字符串...
ls -l /dev/random
的确切 return 是:
crw-rw-rw- 1 root root MINOR, MAJOR mars 30 19:15 /dev/random
我要提取的两个数字是 MINOR 和 MAJOR。但是,如果有更简单的方法来创建没有 ls 和 mknod 的节点,我将不胜感激。
你可以通过stat
获取主次设备号:
MINOR=`stat -c %T /dev/random`
MAJOR=`stat -c %t /dev/random`
然后您可以创建一个设备节点:
mknod mydevice c "$MAJOR" "$MINOR"
另一种方法(不需要解析设备编号)是使用 tar
创建一个包含设备文件详细信息的存档:
cd /dev
tar cf /somewhere/devicefiles.tar random null [any other needed devices]
然后
cd /somewhere/chroot-location
tar xf /somewhere/devicefiles.tar
后一种方法的优点是它不依赖 stat
的 -c
选项,后者是 GNU 扩展。
效率的一个小改进是只进行一次调用(并使用小写变量名,这是 shell 中除内置函数和环境变量之外的所有变量的惯例):
read minor major < <(stat -c '%T %t' /dev/random)
顺便说一句,在 GNU 系统上,我建议使用 cp -a
在设置期间将明确列入白名单的设备文件复制到 chroot 中:
cp -a /dev/random /your/chroot/dev/random
试试这个。
主要=ls -l /dev/random | awk '{ print }'
次要=ls -l /dev/random | awk '{ print }'
我正尝试在 chroot 环境中 运行 一个程序,它需要 /dev/random
作为资源。
我可以手动对其执行 ls -l
,然后使用 mknod c xx yy
再次创建文件,但我需要将其设置为自动,我认为这些版本号与 linux 版本不同另一个所以这就是为什么我有以下问题:
我如何编写一个 bash 脚本来提取 /dev/random
的次要和主要数字并将其与 mknod 一起使用?我可以使用 ls -l
但我不知道如何提取它的子字符串...
ls -l /dev/random
的确切 return 是:
crw-rw-rw- 1 root root MINOR, MAJOR mars 30 19:15 /dev/random
我要提取的两个数字是 MINOR 和 MAJOR。但是,如果有更简单的方法来创建没有 ls 和 mknod 的节点,我将不胜感激。
你可以通过stat
获取主次设备号:
MINOR=`stat -c %T /dev/random`
MAJOR=`stat -c %t /dev/random`
然后您可以创建一个设备节点:
mknod mydevice c "$MAJOR" "$MINOR"
另一种方法(不需要解析设备编号)是使用 tar
创建一个包含设备文件详细信息的存档:
cd /dev
tar cf /somewhere/devicefiles.tar random null [any other needed devices]
然后
cd /somewhere/chroot-location
tar xf /somewhere/devicefiles.tar
后一种方法的优点是它不依赖 stat
的 -c
选项,后者是 GNU 扩展。
效率的一个小改进是只进行一次调用(并使用小写变量名,这是 shell 中除内置函数和环境变量之外的所有变量的惯例):
read minor major < <(stat -c '%T %t' /dev/random)
顺便说一句,在 GNU 系统上,我建议使用 cp -a
在设置期间将明确列入白名单的设备文件复制到 chroot 中:
cp -a /dev/random /your/chroot/dev/random
试试这个。
主要=ls -l /dev/random | awk '{ print }'
次要=ls -l /dev/random | awk '{ print }'