Как удалить автозагрузку linux

Управляем автозагрузкой в Linux

Systemd — управление автозагрузкой служб в Linux

В большистве популярных современных популярных дистрибутивов Linux (CentOS, RHEL, Debian, Fedora и Ubuntu) в качестве демона автозагрузки вместо init.d используется systemd.

Systemd – менеджер системы и служб Linux, используется для запуска других демонов и управления ими в процессе работы, использует unit-файлы из /etc/systemd/system (init.d использовал скрипты из каталога /etc/init.d/). Systemd позволяет распараллелить запуск служб в процессе загрузки ОС, тем самым ускоряя запуск.

Для управления system используется команда systemctl.

Для начала, после загрузки системы, мы проверим список юнитов, которые в данный момент добавлены в systemd:

Список unit-файлов можно получить командой:

Данная команда отобразит все доступные юнит-файлы (не зависимо от того, были они загружены в systemd после загрузки ОС или нет).

Чтобы вывести список активных сервисов и их состояние, выполните:

Следующая команда выведет список юнитов, которые загрузил или пытался загрузить systemd. Так как после запуска некоторые юниты могут стать неактивными, с помощью флага — all вы получите полный список.

Добавление сервиса в systemd

Для управления сервисами в systemd используется особый синтаксис. После имени серверсв в конце нужно указывать .service. Например:

команда добавит в автозагрузку веб-сервер nginx

Данная команда создаст символическую ссылку на копию файла, указанного в команде сервиса, в директории автозапуска systemd.

Вывод этой команды показывает в какой директории был создан симлинк на файл сервиса.

Чтобы посмотреть добавлен тот или иной сервис в автозагрузку, можно проверить его статус:

При выводе нужно обратить внимание на строку:

Значение enabled означает что данный сервис загружается автоматически (добавлен в автозагрузку). Если сервис не загружается автоматом, здесь буде указано disabled.

Удаление сервиса из systemd

Вы можете удалить сервис из автозагрузки, чтобы он не запускался после старта Linux (при этом сам сервис с сервера не удаляется). Чтобы удалить сервис из автозагрузки, выполните команду (* — нужный сервис):

Например, чтобы удалить из автозагрузки nginx, выполните:

После выполнения команды, симлинк на файл сервиса будет удален из директории systemd. Можно проверить, есть ли юнит в автозагрузке:

Systemd — маскировка юнитов

Иногда встречаются ненужные сервисы, которые после удаления их из автозагрузки, все равно там оставались и запускаются после перезагрузки. Чтобы решить этот вопрос, можно замаскировать сервис:

И после этого он вообще не будет запускаться:

Снять маску можно командой:

Если после маскировки сервиса, вы проверите юнит-файлы, то увидите, что сервис помечен как замаскированный (состояние masked).

Таким нехитрым способом, можно избавить себя от удаления сервиса, даже если он не удаляется из автозагрузки systemd.

Собственный демон и добавление его в systemd

Можно создать собственный демон, которым будем управлять через systemd.

Например, нам нужно запускать все тот же скрипт /root/script.sh после перезагрузки системы. Начнем с создания файла нашей будущей службы:

Содержимое файла будет следующее:

User — пользователь под которым будет запускаться демон

Type=oneshot — процесс будет завершен до запуска дальнейших юнитов

Проверяем и перезапускаем:

Если все хорошо, добавляем его в автозагрузку:

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

Источник

Как навсегда убрать программу с автозагрузки?

Всех приветствую! Есть у меня такая прога на Debian как Bitmask, это VPN такой. Так вот после обновления он начал каждый раз автоматически загружаться при каждом старте системы, а это нужно далеко не всегда да и к тому же если он загружается без наличия интернета, его конфиги такие как логин и пароль стираются и для подключения их нужно вводить по новой, такая специфика этого приложения. Использую среду LXDE и в ней в графическом интерфейсе есть параметр «настройка параметров сесси рабочего стола» так вот там убираю галочку автозагрузки Bitmask и этот VPN не загружется уже при старте системы, но стоит мне его запустить вручную, как он снова начинает загружаться сам. Как отключить автозагрузку конкретного приложения навсегда?

Читайте также:  Удалить все сетевые подключения windows 10 net use

Хз что это за прога и какая логика ее работы. Может в настройках САМОЙ ПРОГРАММЫ есть опции, отвечающие за это поведение.

Кстати порадовало слово НАВСЕГДА в заголовке. Прям и хочется чего-нибудь сострить на эту тему, типа сжечь компьютер или освятить комнату:-)

Хз что это за прога и какая логика ее работы. Может в настройках САМОЙ ПРОГРАММЫ есть опции, отвечающие за это поведение.

В том то и дело что в настройках самой программы ничего подобного нет. По адресу /home/имя пользователя/.config/autostart постоянно появляется файл с названием этой проги, когда его удаляю он появляется снова после каждого запуска проги и так бесконечно. Может в линуксе есть какие то методы закинуть софтину в черный список который не даст загружаться автоматически?

становится похоже на winfaq, он похоже правда близок, только не в том виде, как задумывался 🙂

touch /home/имя пользователя/.config/autostart/

Ок, это я могу сделать. Хотелось бы понимать какую функцию выполняет данная команда?

создает пустой файл с названием скрипта автозапуска. твоя мегахакерская программа попробует создать на его месте свой скрипт о ибломится т.к. файл уже есть. профит.

только его еще надо запретить всем пользователям от записи. ибо если программа не тупая, то она просто перезапишет содержание этого файла

создает пустой файл с названием скрипта автозапуска. твоя мегахакерская программа попробует создать на его месте свой скрипт о ибломится т.к. файл уже есть. профит.

Выполнял я эту команду как с рутового терминала так и с обычного, запрещал так же запуск и изменение файла, а мой VPN при этом успешно создавал файл с таким же названием и автозагрузка продолжается. Может есть команды которые будут удалять этот файл перед каждым выключением или загрузкой ПК?

тут два варианта, либо ты сидишь под рутом, либо ты лжешь.

Там поди не Debian , а кали .

тут два варианта, либо ты сидишь под рутом, либо ты лжешь.

Сижу не под рутом, под рутом только запрещал изменение и запуск файла. После команды touch /home/имя пользователя/.config/autostart/ появляется пустой файл, после чего вручную создать рядом файл с таким же именем не могу, пишет что файл уже существует, при этом моя прога успешно создает текстовый файл со своими конфигами без проблем. Имя файла проверял как только мог, везде одинаково что я создаю что моя прога.Нажимал на файл который создает мой VPN правой кнопкой — переименовать, копировал название файла и вводил командой touch это для того если я слепой и не могу отличить буквы в названии файла. А еще после этого обратил внимание на расширение файлов. Расширения никакого нету вообще.

Нет, Кали от дебиан могу отличить и знаю что у меня чистый Дебиан.

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

Не используй XDG-автозагрузку. Я давно на свой скрипт перешле и подобных проблем не имею. С инитом таких проблем нет, systemd позволяет маскировать сервисы.

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

Вобщем поковырял я это дело, ситуация стала еще интереснее. Короче оказалось что файловый менеджер скрывал расширение .desktop когда обнаружил это обрадовался, думал сейчас всё порешаю, но не тут то было. Выполнил команду из под рута, затем из под рута запретил запуск и изменение файла, убедился в том что владелец файла рут и пошел тестить свой VPN клиент из под обычного пользователя. Открыл папку автостарта с этим файлом и запускал свою прогу специально НЕ с рутового терминала. В момент запуска VPN мой файл сначала пропадал, а затем сразу появлялся. Проверил сам что без рут прав тот пустой файл о котором идёт речь запросто удаляется. Предполагаю моя прога сначала удаляет файл, а затем просто создает новый с таким же именем и расширением. Можно ли как то запретить удаление этого файла всем кроме рута?

Читайте также:  Creative audio control panel для windows 10

еще раз. создай файл от рута. сделай chmod 600 на файл от рута. попробуй удалить пользователем. ты какие-то невероятности рассказываешь. если только ты не поменял юзеру gid и uid на 0 сам спецом.

Короче загуглил как запретить удаление файла с помощью команды chattr и провернул это дело. Наконец то вопрос решил, программа не запускается при каждом включении ПК и запрет удаления файла на работоспособности самйо программы никак не сказывается. Спасибо за помощь!

Источник

Управление автозагрузкой сервисов и скриптов в Linux

Управление автозагрузкой сервисов и скриптов в Linux

В данной статье мы рассмотрим основы управлением автозагрузкой сервисов и скриптов в Linux CentOS 7/8. В частности, разберем основы работы с демоном systemd, научимся добавлять в автозагрузку сервисы и убирать их оттуда, а также рассмотрим альтернативные варианты запуска скриптов или демонов после старта системы.

Задача статьи – научить вас быстро разобраться со списками служб и скриптов которые запускаются в Linux автоматически, добавить в автозагрузку свои службы или скрипты, или отключить автозапуск определённых программ.

Systemd: управление автозагрузкой служб в Linux

В большистве популярных современных популярных дистрибутивов Linux (CentOS 7, RHEL, Debian, Fedora и Ubuntu) в качестве демона автозагрузки вместо init.d используется systemd. Systemd – менеджер системы и служб Linux, используется для запуска других демонов и управления ими в процессе работы, использует unit-файлы из /etc/systemd/system (init.d использовал скрипты из каталога /etc/init.d/). Systemd позволяет распараллелить запуск служб в процессе загрузки ОС, тем самым ускоряя запуск.

Для управления system используется команда systemctl.

Для начала, после загрузки системы, мы проверим список юнитов, которые в данный момент добавлены в systemd:

Список unit-файлов можно получить командой:

Данная команда отобразит все доступные юнит-файлы (не зависимо от того, были они загружены в systemd после загрузки ОС или нет).

Чтобы вывести список активных сервисов и их состояние, выполните:

# systemctl list-units -t service

Следующая команда выведет список юнитов, которые загрузил или пытался загрузить systemd. Так как после запуска некоторые юниты могут стать неактивными, с помощью флага —all вы получите полный список.

# systemctl list-units —all

Как видим из списка, здесь отображаются даже сервисы, которые не были найдены на диске «not-found».

Использую данную команду, вы можете добавить и другие флаги, например:

  • —state — используется для определения состояния демона Load, Active, Sub
  • —type — позволяет фильтровать юниты по их типу.

systemctl list-units —all —state=active — выведет список только активных юнитов

systemctl list-units —type=service — выведет список юнитов, которые являются сервисом.

Добавление сервиса в systemd

Для управления сервисами в systemd используется особый синтаксис. После имени серверсв в конце нужно указывать .service. Например:

systemctl enable nginx.service – команда добавит в автозагрузку веб-сервер nginx

Данная команда создаст символическую ссылку на копию файла, указанного в команде сервиса, в директории автозапуска systemd.

# systemctl enable nginx.service

Чтобы посмотреть добавлен тот или иной сервис в автозагрузку, можно проверить его статус:

systemctl status nginx.service

При выводе нужно обратить внимание на строку:

Значение enabled означает что данный сервис загружается автоматически (добавлен в автозагрузку). Если сервис не загружается автоматом, здесь буде указано disabled.

Удаление сервиса из systemd

Вы можете удалить сервис из автозагрузки, чтобы он не запускался после старта Linux (при этом сам сервис с сервера не удаляется). Чтобы удалить сервис из автозагрузки, выполните команду:

systemctl disable нужный_сервис

Например, чтобы удалить из автозагрузки nginx, выполните:

# systemctl disable nginx.service

После выполнения команды, симлинк на файл сервиса будет удален из директории systemd. Можно проверить, есть ли юнит в автозагрузке:

# systemctl is-enabled sshd

Systemd: маскировка юнитов

В моей практике встречались «вредные» сервисы, которые после удаления их из автозагрузки, все равно там оставались и запускались после рестарта ОС. Чтобы решить этот вопрос, можно замаскировать сервис:

systemctl mask nginx.service

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

# systemctl mask nginx.service

# service nginx restart

Снять маску можно командой:

Читайте также:  Ответы doors для windows

# systemctl unmask nginx.service

Если после маскировки сервиса, вы проверите юнит-файлы, то увидите, что сервис помечен как замаскированный (состояние masked):

Таким нехитрым способом, можно избавить себя от удаления сервиса, даже если он не удаляется из автозагрузки systemd.

Автозапуска скриптов и сервисов с помощью rc.local

Для запуска различных скриптов при загрузке Linux чаще всего используется rc.local.

Но помимо скриптов, через rc.local так же можно и запускать сервисы, даже те, которые запускаются через systemd. Не могу ответить на вопрос, для чего использовать в таком случае rc.local, если есть systemd, но пару примеров я приведу.

Начнем с того, что файл /etc/rc.local должен быть исполняемым:

chmod +x /etc/rc.local

Rc.local должен быть добавлен в автозагрузку systemd:

systemctl enable rc-local

И на примере того же nginx, мы можем добавить в rc.local команду запуска веб-сервера:

service nginx start

Но я редко использую rc.local для запуска сервисов. Чаще rc.local используется, когда нужно запустить скрипт, либо выполнить разово какую-то команду.

К примеру, я создал скрипт /root/test.sh который выполняет некоторые действия, и хочу запустить его сразу после запуска системы. Добавляем в файл rc.local строку:

Начиная с CentOS 7, разработчики указывают на то, что rc.local устаревший демон и осуществлять автозапуск скриптов или сервисов через него, это прошлый век. Но пока он работает, я пользуюсь им, так как он очень прост в эксплуатации.

Создание собственного демона и добавление его в systemd

Вы можете создать собственный демон, которым можно будет управлять через systemd.

Например, нам нужно запускать все тот же скрипт /root/test.sh после перезагрузки системы. Начнем с создания файла нашей будущей службы:

touch /etc/systemd/system/test-script.service
chmod 664 /etc/systemd/system/test-script.service
nano /etc/systemd/system/test-script.service

Содержимое файла будет следующее:

User – пользователь под которым будет запускаться демон

Type=oneshot — процесс будет завершен до запуска дальнейших юнитов

Проверяем и перезапускаем:
# systemctl daemon-reload
# systemctl start test-script.service
# systemctl status test-script.service

Если вас устроило то, как работает сервис, добавьте его в автозагрузку:

# systemctl enable test-script.service

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

Автозапуск через cron

Если вам с какой-то периодичностью нужно запускать скрипт или команду, вы можете воспользоваться cron-ом:

crontab -e — открыть терминал для написания задания cron

И добавьте туда нужное вам задание, например:

* * * * * /root/test.sh — запускать скрипт каждую минуту.

Можно написать скрипт watch-dog, который по заданию будет проверять, например, статус какого-либо сервиса и, если он не работает, запускать его. На нескольких своих проектах я использую подобную схему.

Чтобы вывести список всех заданий в крон, нужно выполнить команду:

Допустимые значения для времени запуска заданий cron по порядку:

  • Минуты от 0 до 59
  • Часы от 0 до 59
  • День месяца от 1 до 31
  • Месяц от 1 до 12
  • День недели от 0 до 7 (0 или 7 это воскресение)

В нашем задании скрипт запускается каждую минуту, поэтому там стоят «*».

Так же вы можете разместить нужный вам скрипт в директориях cron:

  • /cron.daily – выполнение скрипта ежедневно
  • /cron.hourly – выполнение скрипта ежечасно
  • /cron.monthly — выполнение скрипта ежемесячно
  • /cron.weekly — выполнение скрипта еженедельно

Скрипты в указанных директория будут запускаться согласно автоматически подготовленного расписания.

.bashrc: автозапуск скриптов при запуске терминала

Если вам требуется выполнять какие-то действия при запуске терминала ssh, вы можете добавить любую команду или выполнение скрипта в .bash_profile или .bashrc. Теоретически, вы можете добавить какое-либо действие в любой из этих файлов, оно выполнится в любом случае. Обычно все необходимое добавляется в .bashrc, а сам .bashrc запускают из .bash_profile.

Я добавил в файл .bashrc команду на рестарт веб-сервиса nginx:

service nginx restart

После этого сохранил файл и перезапустил терминал:

Как видите, при запуске терминала, веб-сервер был перезапущен. Какие действия можно выполнять при запуске терминала? Вероятно, запускать какие-то вспомогательные утилиты, например, проверка uptime сервера:

Или вы хотите, чтобы при запуске терминала, вы сразу попадали в нужную вам директорию и запускали mc, добавьте в .bashrc

Надеюсь эта статья по управлению автозапуском сервисов и скриптов в LInux (статья писалась для CentOS) оказалась полезной для вас. Наверняка тем, кто только познает азы системного администрирования Linux, это информация будет кстати.

Источник

Оцените статью