Вопрос или проблема
В какой-то момент в жизни моей текущей установки Devuan (stable) я отредактировал запись в /etc/init.d
, в данном конкретном случае, /etc/init.d/halt
.
Это могло произойти еще при версии Jesse или Beowulf, сейчас система обновлена до Daedalus через Chimaera.
Прошло довольно много времени, и я не могу вспомнить, но, возможно, я использовал jed
(мой обычный редактор), nano
или редактор mc
.
Дело в том, что в результате я получил две записи:
/etc/init.d/halt
/etc/init.d/halt~
В то время, считая, что новая созданная запись (очевидно, резервная копия) просто останется там, я оставил все как есть. То есть, под остаться там я имею в виду, что не знал, что происходит в системе, и не принимал это во внимание.
~$ ls -1 /etc/init.d
--- обрезано ---
halt
--- обрезано ---
halt~
--- обрезано ---
~$
Хотя я заглядываю в свои журналы раз в две недели, чтобы увидеть, могу ли я поймать что-то странное, я не делаю то же самое с запущенными службами, если это не требуется. Например: что-то кажется неправильным или недавняя проблема с CUPS/cups-browsed CVE, из-за которой все метались.
Так что я проверил и, к своему удивлению, нашел это:
~$ sudo service --status-all
--- обрезано ---
[ - ] halt~ <- это *резервная* копия, которая загружается.
--- обрезано ---
~$
Как я уже объяснял, оба файла присутствуют в /etc/init.d
и имеют одинаковые атрибуты.
Они также имеют одинаковый размер, потому что для тестирования я отредактировал оригинальный файл, чтобы он отражал содержимое резервной копии.
~$ ls -l /etc/init.d/halt
-rwxr-xr-x 1 root root 1417 Sep 29 08:01 /etc/init.d/halt
~$
~$ ls -l /etc/init.d/halt~
-rwxr-xr-x 1 root root 1417 Sep 28 07:56 /etc/init.d/halt~
~$
Может ли кто-нибудь сказать мне почему загружается резервный файл вместо отредактированного файла? То есть /etc/init.d/halt~
вместо /etc/init.d/halt
.
Что я пропустил / сделал неправильным образом? Где мне следует искать?
Ответ или решение
Причина, по которой файл /etc/init.d/halt~
загружается вместо оригинального файла /etc/init.d/halt
, заключается в том, как система инициализации обрабатывает скрипты в каталоге /etc/init.d
. Давайте проанализируем ситуацию и дадим рекомендации по правильному редактированию и управлению этими скриптами.
1. Почему используется файл halt~
Файлы, заканчивающиеся на тильду (~
), обычно создаются редакторами как резервные копии оригинальных файлов. Ваша система могла воспринять файл halt~
как действительный скрипт и загрузить его вместо оригинала. Это может произойти, если следующие условия выполнены:
- Проблемы с именованием: В некоторых системах имена скриптов должны соответствовать определённым критериям. Например, если имя файла не совпадает точно с ожидаемым, оно может не распознаваться системой.
- Проблемы с конфигурацией системы: Обычно, система инициализации (SystemV или другой тип) загружает скрипты в
/etc/init.d
и может не распознавать файлы, созданные как резервные копии.
2. Как правильно редактировать скрипты в /etc/init.d
Чтобы избежать подобных проблем в будущем, следует соблюдать следующие рекомендации:
-
Избегайте создания резервных файлов: Убедитесь, что ваш редактор не создает резервные копии в каталоге
/etc/init.d
. Проверяйте настройки вашего редактора. Например, вnano
можно использовать команды с опциями, не создающими резервные копии. -
Используйте другие места для резервных копий: Вместо того чтобы оставлять резервные копии в каталоге
/etc/init.d
, создайте резервные копии в другом месте, где они не будут интерпретироваться как скрипты. Например, вы можете создать каталог для резервных копий в вашем домашнем каталоге. -
Проверьте скрипты после редактирования: После изменения скрипта с помощью команды
sudo service --status-all
проверьте, какие скрипты загружаются, и убедитесь, что загружается именно тот, который вы редактировали. -
Проверка на ошибки: После редактирования файлов в
/etc/init.d
можно использовать команду для проверки их корректности. Например:sudo service halt status
3. Устранение текущей проблемы
Чтобы исправить текущую ситуацию, выполните следующие шаги:
-
Удалите резервный файл:
sudo rm /etc/init.d/halt~
-
Проверьте конфигурацию сервиса:
sudo update-rc.d halt defaults
-
Перезагрузите систему или перезапустите сервис:
sudo service halt restart
Заключение
Способы редактирования и место хранения резервных копий могут значительно повлиять на функциональность вашей системы. Убедитесь, что вы следуете рекомендациям по управлению скриптами и избегаете распространенных ошибок, которые могут привести к неожиданным проблемам. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.