gpt4 book ai didi

linux - mv 命令在 Linux CENT/REDHAT 操作系统上无法按预期工作

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:57 25 4
gpt4 key购买 nike

这是关于我最近遇到的问题。突然执行 mv 命令后 Linux 盒子在各个方面都没有响应,下面是所发生问题的总体描述。

1) 在目标位置使用/* 执行移动命令

# mv -f *.txt /*

2) 命令已成功移动所需内容,但未移动到/,而是将其移动到/var

3) 除了所需的内容之外,它还将/文件夹的内容递归移动到/var 位置。

4) 这导致正常操作系统操作所需的所有二进制文件和文件夹的移动

5) 此 Action 限制通过 SSH/控制台登录。

6) 从/var 位置恢复文件夹后系统功能正常。

我尝试在测试 Linux Box 上复制该问题,结果如下所示,

[root@TestVM001 ~]# ls -lrt
total 84
-rw-r--r-- 1 root root 4224 Feb 5 17:28 install.log.syslog
-rw-r--r-- 1 root root 38536 Feb 5 17:35 install.log
-rw------- 1 root root 955 Feb 5 17:35 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Feb 5 20:03 Desktop
-rw-r--r-- 1 root root 119 Feb 5 20:28 ifcfg-eth0
-rw-r--r-- 1 root root 119 Feb 6 15:17 ifcfg-eth1
-rw-r--r-- 1 root root 44 Mar 1 05:08 student.txt
drwxr-xr-x 3 root root 4096 Mar 14 17:59 admin

[root@TestVM001 ~]# mv -vf * /*
`admin' -> `/var/admin'
`anaconda-ks.cfg' -> `/var/anaconda-ks.cfg'
`Desktop' -> `/var/Desktop'
`ifcfg-eth0' -> `/var/ifcfg-eth0'
`ifcfg-eth1' -> `/var/ifcfg-eth1'
`install.log' -> `/var/install.log'
`install.log.syslog' -> `/var/install.log.syslog'
`student.txt' -> `/var/student.txt'
`/bin' -> `/var/bin'
mv: cannot move `/boot' to `/var/boot': Device or resource busy
mv: cannot move `/dev' to `/var/dev': Device or resource busy
`/etc' -> `/var/etc'
`/home' -> `/var/home'
mv: cannot move `/lib' to a subdirectory of itself, `/var/lib'
`/lost+found' -> `/var/lost+found'
`/media' -> `/var/media'
`/mnt' -> `/var/mnt'
`/opt' -> `/var/opt'
mv: cannot move `/proc' to `/var/proc': Device or resource busy
`/root' -> `/var/root'
`/sbin' -> `/var/sbin'
`/selinux' -> `/var/selinux'
`/srv' -> `/var/srv'
mv: cannot move `/sys' to `/var/sys': Device or resource busy
`/tmp' -> `/var/tmp'
`/usr' -> `/var/usr'

[root@TestVM001 ~]# ls
-bash: /bin/ls: No such file or directory

[root@TestVM001 ~]# ls -lrt
-bash: /bin/ls: No such file or directory

[root@TestVM001 ~]# cd /
.autofsck boot/ lib/ sys/
.autorelabel dev/ proc/ var/

[root@TestVM001 ~]# cd /var/
account/ games/ lost+found/ selinux/
admin/ gdm/ mail/ spool/
anaconda-ks.cfg home/ media/ srv/
bin/ ifcfg-eth0 mnt/ student.txt
cache/ ifcfg-eth1 nis/ tmp/
crash/ install.log opt/ tux/
cvs/ install.log.syslog preserve/ usr/
db/ lib/ racoon/ www/
Desktop/ local/ root/ yp/
empty/ lock/ run/
etc/ log/ sbin/

关于此场景的问题是,1)为什么 mv 命令会导致这样的行为?

2) 此行为是否是已知的错误或风险?

3)是否有任何已知的方法来限制这一点,类似于别名概念的使用?

最佳答案

当您执行echo mv -f *.txt/*时,您将看到最后一个*已扩展到/var。所以你实际上要求将/中的所有文件移动到/var 。

您的问题的答案:
1) 为什么 mv 命令会导致这样的行为?
mv 试图完全按照您的要求做
2) 此行为是否是已知的错误或风险?
这不是一个错误。 Unix/Linux 没有提示“你确定吗”,但相信你。
3)是否有任何已知的方法来限制这一点,类似于别名概念的使用?
您应该以普通用户而非 root 身份完成所有正常工作。重要文件的权限是这样的,他们不允许普通用户做一些有害的事情。
当您必须以 root 身份执行某些操作时,请务必小心!尝试将 txt 文件移动到根目录是可疑的:根分区很小,应该保留系统文件。 .txt 文件是来自 Windows 的吗?

关于linux - mv 命令在 Linux CENT/REDHAT 操作系统上无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29598880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com