2015-04-13 6 views
0

Это касается недавней проблемы, с которой я столкнулся. Внезапно после выхода из mv-команды Linux ящик не реагировал на разные фронты, ниже приведено общее описание проблемы, которая произошла.Команда mv не работает, как предполагалось, на Linux CENT/REDHAT OS

1) команда перемещения выполнена с/* в пункте назначения

# mv -f *.txt /* 

2) команда успешно продвигался нужный контент, но не/он переместил его в/вар

3) вместе с желаемыми контент также перемещал содержимое/папок рекурсивно в/var location.

4) это привело к перемещению всех бинарных файлов и папок, необходимых для нормальной работы ОС

5) это движение ограничено Войти через SSH/консоль.

6) сообщение о восстановлении папок из системы/var location получило функции нормально.

Я попытался тиражирование проблема на тестовой системы Linux и он получил реплицируются, как показано ниже,

[[email protected] ~]# 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 

[[email protected] ~]# 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' 

[[email protected] ~]# ls 
-bash: /bin/ls: No such file or directory 

[[email protected] ~]# ls -lrt 
-bash: /bin/ls: No such file or directory 

[[email protected] ~]# cd/
.autofsck  boot/   lib/   sys/ 
.autorelabel dev/   proc/   var/ 

[[email protected] ~]# 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) Почему мв команда привела к такому поведению?

2) Является ли это поведение известной ошибкой или риском?

3) Есть ли какой-либо известный способ ограничить это, подобно использованию концепции псевдонима?

ответ

2

Когда вы сделаете echo mv -f *.txt /*, вы увидите, что последний * был расширен до/var. Поэтому вы действительно попросили переместить все файлы в/в/var.

Ответы на ваши вопросы:
1) Почему команда mv привела к такому поведению?
mv попытался выполнить именно то, что вы просили
2) Является ли это поведение известным ошибкой или риском?
Это не ошибка. У Unix/Linux нет подсказок «вы уверены», но доверяете вам.
3) Есть ли какой-либо известный способ ограничить это, подобно использованию концепции псевдонима?
Вы должны выполнять всю обычную работу как обычный пользователь, а не root. Разрешения на важные файлы таковы, что они не позволяют нормальному пользователю делать что-то вредное.
И когда вы должны сделать что-то как корень, будьте очень осторожны! Пытается переместить файлы txt в корневую папку подозрительно: корневой раздел является небольшим и должен храниться для системных файлов. Являются ли файлы .txt из Windows?

+0

Я еще не понял, что вы подразумеваете под «* был расширен до/var»? –

+0

В моей системе 'echo/*' дает '/ bin/boot/dev/etc/home/lib/lib64/lost + found/media/mnt/opt/proc/root/sbin/selinux/srv/sys/tmp/usr/var'. В моем случае подстановочный знак в вашей команде 'mv -f * .txt/*' был бы изменен на 'mv -f train.txt/bin/boot/dev/etc/home/lib/lib64/lost + found/media/mnt/opt/proc/root/sbin/selinux/srv/sys/tmp/usr/var'. Команда mv пытается переместить все в последний заданный параметр, каталог/var. –

+0

очень ясно сейчас. –

 Смежные вопросы

  • Нет связанных вопросов^_^