mv 命令在 linux CENT/REDHAT OS 上无法正常工作
mv command not working as intended on linux CENT/REDHAT OS
这是关于我最近遇到的问题。突然 post 执行 mv 命令 Linux 框在各个方面都没有响应,下面是对所发生问题的总体描述。
1) 在目标中使用 /* 执行的移动命令
# mv -f *.txt /*
2) 命令已成功移动所需的内容但未移动到 / 已将其移动到 /var
3) 除了所需的内容,它还将 / 文件夹的内容递归地移动到 /var 位置。
4) 这导致正常 OS 操作所需的所有二进制文件和文件夹的移动
5) 此移动限制通过SSH/console登录。
6) post 从 /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 没有提示 "are you sure" 但相信你。
3) 是否有任何已知的方法来限制这一点,类似于别名概念的使用?
您应该以普通用户而不是 root 身份执行所有正常工作。重要文件的权限是这样的,他们不允许普通用户做一些有害的事情。
当您必须 以 root 身份执行某些操作时,请务必小心!
尝试将 txt 文件移动到根目录是可疑的:根分区很小,应该保留系统文件。 .txt 文件来自 Windows?
这是关于我最近遇到的问题。突然 post 执行 mv 命令 Linux 框在各个方面都没有响应,下面是对所发生问题的总体描述。
1) 在目标中使用 /* 执行的移动命令
# mv -f *.txt /*
2) 命令已成功移动所需的内容但未移动到 / 已将其移动到 /var
3) 除了所需的内容,它还将 / 文件夹的内容递归地移动到 /var 位置。
4) 这导致正常 OS 操作所需的所有二进制文件和文件夹的移动
5) 此移动限制通过SSH/console登录。
6) post 从 /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 没有提示 "are you sure" 但相信你。
3) 是否有任何已知的方法来限制这一点,类似于别名概念的使用?
您应该以普通用户而不是 root 身份执行所有正常工作。重要文件的权限是这样的,他们不允许普通用户做一些有害的事情。
当您必须 以 root 身份执行某些操作时,请务必小心!
尝试将 txt 文件移动到根目录是可疑的:根分区很小,应该保留系统文件。 .txt 文件来自 Windows?