mv命令在linux CENT / REDHAT OS上没有按预期工作

时间:2015-04-13 06:14:50

标签: linux centos redhat mv

这是关于我最近面临的问题。突然发布一个mv命令的Linux命令在各个方面都没有响应,下面是发生的问题的整体描述。

1)在目的地

中使用/ *执行移动命令
# mv -f *.txt /*

2)命令已成功移动了所需的内容,但没有将其移动到/ var

3)与所需内容一起,它还将/文件夹的内容递归移动到/ var location。

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

5)此移动通过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)这种行为是已知的Bug还是风险?

3)有没有任何已知的限制方法,类似于别名概念用法?

1 个答案:

答案 0 :(得分:2)

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

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