Кто-нибудь знает (из списка ресурсов), какие скрипты запускаются автоматически и когда, с момента запуска компьютера и до его выключения?
Я знаю несколько мест, куда можно добавить скрипты для автоматического запуска, но мне так и не удалось составить более-менее полный список.
Например, я знаю такие:
~/.profile
выполняется при входе в систему- Я могу использовать
crontab -e
для добавления скриптов, которые будут срабатывать в определенное время и/или в определенные даты.
Но я не могу понять, куда помещать скрипты, чтобы они выполнялись.
- после загрузки, до инициализации X
- после инициализации X (или другой графической оболочки), но до того, как кто-либо войдет в систему
- после входа в сеанс X
- до/после быстрого переключения пользователей
- перед выходом из сеанса X
- перед выключением в оболочке X
- после выключения X, перед остановкой системы
- после входа/перед выходом через tty-1..6
- после входа/перед выходом через SSH
Есть ли такой список? Если нет, то можем ли мы его здесь составить?
решение1
Для Ubuntu Linux у нас есть следующее решение:
Для после загрузки, до инициализации X:Ubuntu запускает X-Windows из GDM (те, кто использует ubuntu-desktop) или из KDM (те, кто использует kubuntu-desktop)
Чтобы запустить скрипт до GDM/KDM, вам нужно написать свой собственный скрипт upstart. Для этого вы можете прочитатьКулинарная книга Upstart.
После переключения пользователя:Вам необходимо добавить скрипт в
~/.bashrc
файл.После входа через tty:Вам необходимо добавить скрипт в
~/.bash_profile
файл.После входа в систему с использованием ssh, но не во время локального входа с использованием tty:В этом случае вам также придется добавить скрипт в тот же
~/.bash_profile
файл, но в этом случае проверьте наличиеSSH_CONNECTION
переменной среды и запускайте команды только в том случае, если вы обнаружите, что она существует.Перед выходом из системы через tty:Вам необходимо добавить скрипт в
~/.bash_logout
файл.Перед выходом из системы через ssh:Вам нужно добавить скрипт в
~/.bash_logout
файл, но в этом случае также проверьте наличиеSSH_CONNECTION
переменной окружения и запускайте команды только в том случае, если вы обнаружите, что она существует. В файле вам нужно добавить строкуif [[ -n $SSH_CONNECTION ]]
решение2
Если вас интересуют встроенные задачи Linux, вы также можете обратиться к уровням выполнения Linux, которые представляют собой режим работы, реализующий инициализацию в стиле Unix System V.
- 0 Halt Выключает систему.
- 1 Однопользовательский режим Режим для административных задач.
- 2 Многопользовательский режим Не настраивает сетевые интерфейсы и не экспортирует сетевые службы.
- 3 Многопользовательский режим с сетевым подключением Запускает систему в обычном режиме.
- 4 Не используется/Определяется пользователем Для специальных целей.
- 5 Запустите систему в обычном режиме с соответствующим менеджером дисплея. (с графическим интерфейсом) Как уровень запуска 3 + менеджер дисплея.
- 6 Перезагрузка Перезагружает систему.
Например, ниже вы можете увидеть частичный список процессов Linux и их настроек уровня выполнения:
chkconfig --list
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off
atd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
auditd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
autofs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
avahi-daemon 0:off 1:off 2:off 3:off 4:off 5:off 6:off
avahi-dnsconfd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
.
.
.