为什么“sudo cp”不能复制 /sys 目录中的文件?

为什么“sudo cp”不能复制 /sys 目录中的文件?

我想制作该/sys目录的精确副本,并尝试以下命令:

sudo cp -ra /sys ~/Documents/dir1

它没有像我预期的那样工作...我收到很多错误消息,例如:

cp: error reading '/sys/fs/cgroup/memory/memory.force_empty': Invalid argument
cp: error reading '/sys/devices/system/cpu/cpu0/cache/index0/power/autosuspend_delay_ms': Input/output error
cp: cannot open '/sys/devices/system/clockevents/clockevent0/unbind_device' for reading: Permission denied
cp: error reading '/sys/devices/virtual/block/loop0/trace/enable': No such device or address

为什么sudo复制cp每个文件还不够?

答案1

/sys目录不是普通目录,而是“虚拟”目录。来自“Linux 文件系统详解“:

/系统

/sys 是另一个虚拟目录,如 /proc 和 /dev,也包含连接到计算机的设备的信息。

在某些情况下,您还可以操纵这些设备。例如,我可以通过修改 /sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-eDP-1/intel_backlight/brightness 文件中存储的值来更改笔记本电脑屏幕的亮度(您的机器上可能有不同的文件)。但要做到这一点,您必须成为超级用户。原因是,与许多其他虚拟目录一样,弄乱 /sys 中的内容和文件可能会很危险,并且可能会破坏您的系统。在您确定自己知道自己在做什么之前,请勿触碰。

类似的目录有/dev/proc/run

由于这些目录中的文件在系统运行时一直被创建、更改和删除,因此复制它们没有任何意义。

将这些目录更多地视为动态快照系统的当前状态,而不是静态介质儲存。

即使这样,您仍然会收到错误的原因可能是在命令生效sudo之前文件已被系统完全锁定或删除。cp

相关内容