2012-01-21 2 views
1

Недавно я недавно прочитал какой-то исходный код, который обновил код на сервере. Вместо того, чтобы просто пишу это, чтобы обновить myfile:Удалить файл и символическую ссылку или перезаписать файл

mv myfile.inactive myfile 

Был такой:

rm myfile 
ln -s myfile.inactive myfile 

В чем разница? Почему вы хотите сделать это вторым способом?

myfile может быть исполняемым или текущим процессом, если это имеет значение.

ответ

2

первая версия переименовывает myfile.inactive в myfile. После этой команды нет myfile.inactive

второй создает символическую ссылку на myfile.inactive. Так что этот файл все еще существует. Когда вы удаляете (rm myfile) файл, вы удаляете только символическую ссылку. Имейте в виду, что если вы измените мой файл, он также будет изменен в myfile.inactive. Эта версия хороша, чтобы легко менять версию, которую вы используете. например myfile.debug, myfile.live, myfile.version1, myfile.version2 ... вам нужно только изменить символическую ссылку на один из файлов, чтобы «активировать» тот, который вы хотите.

+0

Если 'myfile' - текущий процесс, это не очень хорошая идея для' rm myfile', потому что ОС может потребоваться прочитать часть исполняемого файла. – olibre

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