Сценарий завершения работы, кажется, выполняется дважды

  • Что и где файл на каждый сокет?
  • "Все" - это преувеличение. Это не строгая политика, это просто обычная практика использования файловой системы для интерфейсов, так как доступ к файловой системе является синонимом системных вызовов (т.е. файловая система на самом деле является интерфейсом с ядром, и поэтому обеспечивает удобный формат для всех видов вещей). Другие операционные системы используют это не так широко, поэтому это считается отличительной особенностью.
  • Как упоминает Хауке Лейджинг, [114013] "unix local" сокеты [114014] имеют файловый узел, как и именованные трубы (см. [114015] man fifo[114016]). Однако, сокеты интернет-протокола (используемые для сетевой связи) этого не делают. Вместо этого, они ассоциируются в пространстве пользователя с номером порта. Обратите внимание, что сокет сервера на одном порту соединяет нескольких клиентов, каждый из которых имеет свой отдельный сокет (один локальный файл сокета unix также может быть использован таким образом с сервером, т.е. может быть несколько сокетов, связанных с одним и тем же адресом файла), и в коде они фактически идентифицируются индивидуально с помощью отдельных цифровых файловых дескрипторов [114017].

    Таким образом, в этом смысле все сокеты [114019] во многом похожи на файлы и имеют ссылку в [114021]/proc/[pid]/fd/[114022]. Вы даже можете вызвать [114023]readlink()[114024] на этом inode и получить специальное имя файла, которое используется в инструментах командной строки, таких как [114025]lsof[114026], я полагаю; также вы можете получить информацию о дескрипторе сокета через [114027]fstat()[114028].[113544].

    2
    09.12.2014, 10:35
    1 ответ

    readme в этом каталоге утверждает, что скрипты в этом каталоге вызываются только один раз на powerOff (а не на перезагрузке).

    С простым тестовым программой

    #!/bin/bash
    
    LOG=/root/backup.log
    date >> $LOG
    echo $* >> $LOG
    

    Я заметил, что однажды программа фактически называлась дважды, один раз без параметра и один раз с параметром «Стоп». Однако я не смог воспроизвести его.

    Я бы предложил воспользоваться фактическими параметрами вызова к программе, а также в тесте скрипта для $ 1 Быть Stop .

    Также более важно ставить эту программу в виде резервного копирования в /etc/init.d и составить ссылку из /etc/rc0.d/k01backup Для этого скрипта, но это не должно влиять на его операцию никак. Любые инструменты, управляющие такими записями, работают с созданием / удалением этих ссылок.

    На основании попытки этого основного сценария OP обнаружил, что появился резервный файл от редактирования файла: /etc/rc0.d/k01backup ~ , которые также были выполнены. Положив файл файл резервного копирования в /etc/init.d/ с самого начала, и изготовление ссылки не позволило бы это произойти (независимо от того, будет ли / etc / init.d / backup ~ файл или нет).

    2
    27.01.2020, 22:13

    Теги

    Похожие вопросы