Да, проблемой является бит suid для касания, и другая команда задач.
- корень rwsr-xr-x 1 базируется 64192 8 января 2012/bin/touch
Хотя мы нашли первопричину, мы должны восстановить целую систему, потому что мы не знаем, сколько двоичного файла затронуты. И мы все еще пытаемся найти то, что вызывает это. Это - только сервер для внутреннего пользования и не публикуется к Интернету.
Спасибо всем за справку.
init.D
], также известный как Sysv Script, предназначен для запуска и остановки служб при инициализации системы и отключения. ( /etc/init.d/
Сценарии также выполняются в системах с поддержкой SystemD для совместимости).
начало
и и и другие (см.
и многое другое (см. Политика Debian )
Crontab
(и, следовательно @reboot
).
@REBOOT
(не просто root) multi-user.target
. /etc/rc.local
часто считается уродливым или устаренным (по крайней мере, на Redhat ), все же он имел несколько приятных функций:
rc.local
был (почти) последней службой для начала. rc.local
выполняется после Network.target
по умолчанию (нет Network-online.target
!) Об этом Systemd's Networkget
и Network-online.target
,Прочитайте Беговые службы после сети .
Я пишу свой ответ ниже;
Q1: Какие ключевые различия между ними?
, кроме различий, упомянутых другими пользователями выше, я хотел бы выделить точку зрения, что @reboot зависит от Трунт демон. Вы зависите от приказа, в котором начинается Crond. Хотя большинство случаев Crond начинается нормально, но он может когда-нибудь начать (по крайней мере, я видел некоторые неудачи в некоторых моих проектах). Когда вы пишете скрипт init, сбой, как правило, произойдет, если вы делаете что-то не так в своем скрипте (Ex: полагаясь на службу, которая начнет после вашего обслуживания)
Q2: что более прочный?
на основе выше Я думаю, что init более надежно. Но есть еще один момент, как упомянуто «Франклин Пиат» в первом ответе. Обычно вам нужен скрипт init для демона, и вы должны следовать политике
Q3: есть ли лучший из двух?
Я не думаю, что так (rc.local немного старый и устарел)
Q4: Является ли это правильным способом встраивания скрипта для запуска во время загрузки?
Да. Обычно приложенные / пакетные писатели делают таким образом.
Во-первых, разъяснение в порядке:
HTTPD
или CRON
в Условия того, лучше ли использовать rc.local
или Cron
, чтобы запустить ваш скрипт, я подозреваю, что это больше вопрос эстетики больше, чем практичность. Cron
, как планировщик задач, предназначен как метод для обслуживания или обслуживания в машину, такой как проверка обновления, чистящие кэширует или выполнение аудита безопасности. Это не значит, что он ограничен выполнением этих функций, поскольку он может запускать любой скрипт или команду, желаемую в указанное время (например, @reboot
).
Использование rc.local
, с другой стороны, большего в падении в виде задача конфигурации системы, как rc.local
, выполняемый системой INIT Machines, Обычно ответственным за настройку конфигурации сети машин, услуг или сред (но опять же, не ограничивается только этой задачей).
Оба эти моменты, однако, следует закалить тот факт, что не все системы init предлагают механизм rc.local
, а не все демоны Cron предлагают @reboot
psuedo ярлык.
Как уже упоминалось, INIT.D
- это каталог, который содержит скрипты, которые управляют сервисами, которые могут быть запущены или остановлены в вашей системе (по крайней мере, на машинах, которые используют Sysv
Система INITY типа). В зависимости от вашей системы INIT и цели вашего скрипта, может быть разумно преобразовать ваш скрипт в скрипте , чтобы работать так же, как и сервис. Это, однако, сильно зависит от вашей системы init в качестве структуры, окружающей, как эти файлы построены, могут сильно отличаться.
Следует также отметить, что, как правило, скрипты Bash заканчиваются суффиксом .sh
, а не .txt
, как это немедленно обозначает файл - это оболочка скрипт вместо текстового файла. Это сказано, при условии, что он имеет Shebang ( #! / Bin / bash
) в верхней части файла или называется Bash / путь / к / к // Скрипт. Ктоверь
, он не должен иметь значение в терминах выполнения скрипта.