Правильный способ редактирования записей /etc/init.d

Вопрос или проблема

В какой-то момент в жизни моей текущей установки 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. Устранение текущей проблемы

Чтобы исправить текущую ситуацию, выполните следующие шаги:

  1. Удалите резервный файл:

    sudo rm /etc/init.d/halt~
  2. Проверьте конфигурацию сервиса:

    sudo update-rc.d halt defaults
  3. Перезагрузите систему или перезапустите сервис:

    sudo service halt restart

Заключение

Способы редактирования и место хранения резервных копий могут значительно повлиять на функциональность вашей системы. Убедитесь, что вы следуете рекомендациям по управлению скриптами и избегаете распространенных ошибок, которые могут привести к неожиданным проблемам. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...