- Как снять автозапуск программы под Linux?
- Управление автозагрузкой сервисов и скриптов в Linux
- Systemd: управление автозагрузкой служб в Linux
- Добавление сервиса в systemd
- Удаление сервиса из systemd
- Systemd: маскировка юнитов
- Автозапуска скриптов и сервисов с помощью rc.local
- Создание собственного демона и добавление его в systemd
- Автозапуск через cron
- .bashrc: автозапуск скриптов при запуске терминала
Как снять автозапуск программы под Linux?
Здравствуйте. У меня IBM SurePOS-500, при включении грузится Linux и запускается программа кассира. Как мне отключить автозапуск программы кассира? Помогите пожалуйста, понятно что я чайник.
что за программа?
Да нет, я совсем тупой, первый раз эту ось вижу. Я включаю POS он загружается (ну в биос могу зайти) дальше вижу загрузку Linux, потом программа кассира, затем в программе кассира выключить компьютер и всё. Могу под виндой файлы из образа посмотреть.
торговая программа PosX
Как снять автозапуск программы под Linux?
тут главное купить фотоаппарат чтобы умел снимать сериями, ну а далее всё просто — приготовься, нас старт. и жми на все кнопки, иначе не получится — слишком быстро linux грузится
жал на все, они тупо отображаются вместе с загрузкой
кнопки на фотоаппарате 🙂
с фотиком разберусь, давай по делу
У вас определенно вирус.
/usr/share/ нашёл, а /usr/share/autostart/ нет, может она динамически создаётся? Я в образе смотрел.
Ещё может быть в домашнем каталоге пользователя
Ну или уж в крайнем случае в виде команды в .xinitrc или даже в роли демона.
>Могу под виндой файлы из образа посмотреть.
Не можешь, лол. Изменить точно не можешь.
Ctrl+Alt+F1 в помощь
Ну если вам совсем тяжело разобраться то мжете выложить куда-либо образ вашего linux и вам его подправят.
Linux установлен, или запускается по сети или с диска?
Может, эта программа собой замещает ДЕ? Тогда поможет только Ctrl+Alt+F* — и будет вам консоль.
Да, кстати, в таком случае нужно ее автозапуск искать в конфигах GDM/KDM.
В линуксе тыща способов грузануть иксы и запустить в них сразу программу. Либо давай тарбол с /etc и
/.*
Либо давай в job объявление для телепатов.
Попробуй: Ctrl+Alt+F1. F6, Ctrl+Alt+BackSpace (если иксы упадут можно запустить при помощи команды startx)
autostart не наёл. xinitrc нешёл — etc/X11/xinit/xinitrc вот такая ерунда в нём: #!/bin/sh # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $
userresources=$HOME/.Xresources usermodmap=$HOME/.Xmodmap sysresources=/usr/X11R6/lib/X11/xinit/.Xresources sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then xrdb -merge $sysresources fi
if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi
if [ -f $userresources ]; then xrdb -merge $userresources fi
if [ -f $usermodmap ]; then xmodmap $usermodmap fi
# start some nice programs
twm & xclock -geometry 50×50-1+1 & xterm -geometry 80×50+494+51 & xterm -geometry 80×20+494-0 & exec xterm -geometry 80×66+0+0 -name login
Наверно могу изменить образ и смонтировать. Ctrl+Alt+F1 изменяет способ отображения интерфейса программы кассира PosXPC
С чего ты взял, что это линукс?
Загрузись, нажви Ctrl+Alt+F1, залогинься под юзером и набери uname -a. Выхлоп покажи сюда.
Заливаю потихоньку образ на маил. Хотелось бы самому разобраться и вообще. Linux грузится с жёского там 3 раздела: Linux Swap, Linux Ext2 (2 шт.) вижу только последний
при загрузке пишет: Welcom to RED HAD Linux
при загрузке, после биоса (нажмите del) жал Ctrl+Alt+F1 вышла строка LILO 22.8 boot: _ набрал: uname -a вышло: No such image. [Tab] shows a list. boot: uname -a нажал Tab вышло: lin boot: uname -a
Welcome to Red Hat Linux
Надо подождать начала загрузки ОС. LILO — загрузчик.
после загрузки LILO Ctrl+Alt+F1 ничего не даёт, но мможно нажать I+Enter и при загрузке каждого компонента жать Y или N
Так, давай по порядку. То, что ред хат, я уже понял.
1. Заводишь машинку, видишь POST (строчки бегут про железо), так?
2. Должен увидеть загрузчик или сразу пойти грузиться линукс.
3. После загрузки должны стартовать иксы (графика).
Вот когда стартуют иксы и загружается рабочая среда (рабочий стол или что там у тебя), тогда жми ктрлальтф1 (или ф2-ф5, на выбор), и скажи, что видишь.
там ещё есть: иктивируется интерфейс lo [ok] иктивируется интерфейс eth0 [ok]
1. да 2. да загрузчик LILO. 3. я так понимаю когда Linux грузится на английском строчки и [ok], когда иксы (графика) на русском почти и [ok] жму при загрузке иксов всё по очереди, бяка какаято выводится между тем что обычно выводит и ничего.
выполни pstree
и посомотри что порождает твою программу кассира
Как в консоль войти?
Да, примерно так. В иксах ты консоль видеть не должен, только графу, либо приглашение войти под юзером, либо сразу рабочее окружение. Жать при загрузке не нужно ничего, жать надо когда уже рабочее окружение будешь видеть.
при полной загрузке жму на Ctrl+Alt+F1 показывает туже менюшку, но в символьном интерфейсе, жму Ctrl+Alt+F2 в привычном интерфеёсе, жму Ctrl+Alt+F3 чёрный экран и только _ в углу верхнем левом, но тут жму Ctrl+Alt+Del вылазиют настройки программы в символьном интерфейсе (в них я тыкался, бесполезно)
ещё при загрузке вот это вылазит:
INIT: Entering runlevel: 3
Entering interactive startup
Starting asic: [ok]
Устанавливаются параметры сети: [ok]
Активируется интерфейс lo: [ok]
Активируется интерфейс eth0: [ok]
Запускается служба журналирования системы: [ok]
Запускается служба журналирования ядра: [ok]
Загружается раскладка клавиатуры: [ok]
Загружается системный шрифт: [ok]
Инициализируется генератор произвольных чисел: [ok]
Монтируются другие файловые системы: [ok]
Запускается xinetd: [ok]
Запускается lpd: [ok]
Checking postgresql installation: [ok]
Starting postgresql servise: [ok]
Запускается crond: [ok]
Starting posxstatus: [ok]
Starting updata: [ok]
Запускаются сервисы SMB: [ok]
Запускаются сервисы NMB: [ok]
Запускаются anacron: [ok]
Запускаются atd: [ok]
Starting posqueue: [ok]
>INIT: Entering runlevel: 3
Хм. У меня такое чувство, что иксы у тебя вообще не запускаются, судя по тому, что ты показал. Вопрос — как же работает твоя программа?
Слушай, возьми мобилу, сними видосик со всем этим процессом и покажи, мне аж инетресно стало.
думаю ТС просто обязан позвонить в сапп производителя и внедренца а не ип***ть мозг людям.
там обыкновенный линукс в 3 ините заместо логина стартует программа кассира.
Посмотрите два файлы:
Во-вторых, тот файл что отвечает за запуск демонов. Те, кто юзают редхет подскажите ТС где лежит там этот конфиг. В арче это /etc/rc.conf, а в RedHat не знаю какой.
# # inittab This file describes how the INIT process should set up # the system in a certain run-level. # # Author: Miquel van Smoorenburg, # Modified for RHS Linux by Marc Ewing and Donnie Barnes #
# Default runlevel. The runlevels used by RHS are: # 0 — halt (Do NOT set initdefault to this) # 1 — Single user mode # 2 — Multiuser, without NFS (The same as 3, if you do not have networking) # 3 — Full multiuser mode # 4 — unused # 5 — X11 # 6 — reboot (Do NOT set initdefault to this) # id:3:initdefault:
# System initialization. si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6
# Things to run in every runlevel. ud::once:/sbin/update
# Trap CTRL-ALT-DELETE #ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few minutes # of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 «Power Failure; System Shutting Down»
# If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c «Power Restored; Shutdown Cancelled»
# Run gettys in standard runlevels #1:2345:respawn:/sbin/mingetty tty1 #2:2345:respawn:/sbin/mingetty tty2 #3:2345:respawn:/sbin/mingetty tty3 #4:2345:respawn:/sbin/mingetty tty4 #5:2345:respawn:/sbin/mingetty tty5 #6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5 # xdm is now a separate service x:5:respawn:/etc/X11/prefdm -nodaemon cb::kbrequest:/sbin/mingetty tty10 1:2345:respawn:usr/local/bin/shtrih3 /dev/tty1 2> /dev/tty1 ca::ctrlaltdel:usr/local/bin/shtrih3 6 /dev/tty3 2> /dev/tty3 & 2:2345:respawn:/home/kassir/posemu_n/bin/init.sh > /dev/null 2> /dev/null
2:2345:respawn:/home/kassir/posemu_n/bin/init.sh > /dev/null 2> /dev/null
Вот эта строка и запускает ту самую программу. Могу ошибаться насчёт её конца из-за поехавшего форматирования в посте.
В общем можно заменить /home/kassir/posemu_n/bin/init.sh на, например, /bin/bash и после загрузки получить доступ непосредственно к консоли. Чтобы потом из консоли запустить кассовую программу надо будет набрать команду /home/kassir/posemu_n/bin/init.sh.
при старте /bin/bash лучше убрать «> /dev/null».
вся та строка должна теперь выглядить так:
Как бы это зделать не переписывая образы? Может кто нить даст ссылку чтоб загрузочную флэшку зделать.
Источник
Управление автозагрузкой сервисов и скриптов в 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
Снять маску можно командой:
# 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, это информация будет кстати.
Источник