Прекратить запуск программы при запуске в Linux

29

Как остановить запуск программы при запуске в Linux. Я хочу удалить некоторые приложения из автозагрузки, чтобы позволить им управлять, supervisordнапример, apache2

Frozenskys
источник
Именно поэтому я не пометил это ... Я ищу все варианты, так как работаю с несколькими разными дистрибутивами.
Frozenskys

Ответы:

29

В зависимости от вашего дистрибутива используйте утилиту chkconfig или update-rc.d для включения / отключения системных служб.

В системе стиля Redhat / Suse / Mandrake:

sudo chkconfig apache2 off 

На Debian:

sudo update-rc.d -f apache2 remove

Проверьте их страницы руководства для получения дополнительной информации.

jacksonh
источник
Зачем вам нужен -f (я полагаю, это сила) в дистрибутивах на основе Debian?
Frozenskys
2
Здесь есть два набора файлов. У вас есть настоящий скрипт инициализации в /etc/init.d/, и у вас есть ссылки на него в каталоге уровня запуска /etc/rcrunlevel.d/. Эти парни указывают на скрипт в /etc/init.d/ Если вы не используете -f, то update-rd.d завершится неудачей, ЕСЛИ БЕЗ сценария в /etc/init.d/ уже удален. Если вы используете -f, то update-rc.d будет корректно удалять файлы ссылок независимо от того, был ли удален скрипт /etc/init.d/.
Джексон
Ах, это имеет большой смысл, я забыл, что сценарии уровня запуска были просто ссылками на сценарии инициализации. Спасибо за дополнительное объяснение.
Frozenskys
6

Если вы имеете дело с современной системой Ubuntu и несколькими другими дистрибутивами, вам, возможно, придется столкнуться с комбинацией традиционных скриптов инициализации и скриптов upstart. Управление сценариями инициализации покрыто другими ответами. Ниже приведен один из способов остановить запуск службы upstart при загрузке:

# mv /etc/init/servicename.conf /etc/init/servicename.conf.disabled

Проблема этого метода заключается в том, что он не позволяет запустить службу с помощью:

# service start servicename

Альтернатива этому - открыть servicename.confфайл в вашем любимом редакторе и закомментировать любые строки, начинающиеся с:

start on

То есть измените это на

#start on ...

где «...» - это то, что было после «начала» ранее. Таким образом, когда вы хотите снова включить его, вам не нужно запоминать, какими были параметры «start on».

Наконец, если у вас есть новая версия upstart, вы можете просто добавить слово «manual» в конец файла конфигурации. Вы можете сделать это прямо из оболочки:

# echo "manual" >> /etc/init/servicename.conf

Это заставит upstart игнорировать любые фразы «start on» ранее в файле.

Стивен Д
источник
2

О последних системах Fedora и Future RHEL

systemctl disable httpd.service

отключит службу httpd

Аластер
источник
Благодарность! Я перепробовал много методов, но эта systmctlкоманда работала нормально.
love.by.Иисус
1

Чтобы перечислить все службы запуска

    systemctl

Чтобы остановить запуск службы при запуске

    sudo systemctl disable servicename

Например, если нам нужно остановить запуск SSH-сервера при запуске

    sudo systemctl disable sshd.service

Мы можем включить это снова, используя

    sudo systemctl enable sshd.service

Почти все дистрибутивы Linux используют systemd для начальной загрузки сервисов запуска. Таким образом, приведенные выше команды работают для большинства дистрибутивов.

принц
источник
Добро пожаловать в U & L, и спасибо за ваш вклад! Я хотел бы отметить, что этому вопросу уже около восьми лет, поэтому принятый ответ был верным на тот момент. Использование systemctl может быть правильным сейчас , но это верно для другого вопроса .
Джефф Шаллер
@ Принц спасибо за подробные объяснения. Это помогло мне понять, как загрузочный запуск работает в моем Xubuntu.
love.by.Иисус
0

Slackware и Arch linux имеют похожие методы остановки / запуска процессов при загрузке, отличающиеся от приведенных выше примеров в стиле Ubuntu и Redhat.

Как в Slackware, так и в Arch, в каталоге существуют сценарии sh /etc/rc.d, обычно один сценарий для демона или один сценарий для подсистемы.

Например, Slackware запускает веб-сервер Apache с помощью скрипта /etc/rc.d/rc.httpd, который вызывается в подходящее время при запуске системы с аргументом «start». Arch Linux имеет скрипты с разными именами, но происходит то же самое.

Чтобы не запускать какой-либо процесс во время загрузки системы, в Slackware вы просто делаете соответствующий скрипт в /etc/rc.d не исполняемым. Чтобы предотвратить запуск Apache при следующей загрузке:

chmod -x /etc/rc.d/rc.httpd

Чтобы остановить Apache, запущенный при загрузке: /etc/rc.d/rc.httpd stop вам нужно быть пользователем root.

Арка немного сложнее. Файл /etc/rc.conf, сценарий оболочки, имеет массив DAEMONS. Чтобы Apache не запускался при загрузке, вы должны изменить эту строку в /etc/rc.conf:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd httpd ntpd postgresql)

К этой строке:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd ntpd postgresql)

Чтобы остановить уже работающий Apache, вы должны выполнить /etc/rc.d/httpd stopот имени пользователя root.

Брюс Эдигер
источник
0

В Ubuntu 10.04 вы можете управлять некоторыми программами запуска из графического интерфейса.

SystemPreferencesStartup Applications

Настройки запуска приложений

jjclarkson
источник
1
Исходного изображения больше нет.
чепанг
-1

1) нажмите суперключ на клавиатуре 2) найдите «Startup Applications» 3) выберите программу, которую вы хотите отключить 4) нажмите как на этот ответ, если worx.

Бхаша Бхаванишанкар
источник