Любой файл выполнился однажды, когда система запускает

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

5
задан 28 May 2011 в 00:29

6 ответов

Существует 2 места, которые я использую, когда я должен добавить "выполненный однажды" команды:

Однажды при каждом пользовательском входе в систему (быть этим Graphical/GDM или вход в систему текста/консоли): ~/.profile

Профессионалы:

  • Это работает, даже если сервер № GDM/X11/Graphical используется. Значение его будет работать с логинами текстового режима и SSH
  • Это НЕ оценено, когда терминал гнома запускается, как требуется. ТОЛЬКО при входе в систему
  • Выполняемый с пользовательскими полномочиями, его безопасным при предоставлении полного доступа к персональным сценариям.
  • Бегите за всеми, какое монтирование сделано, таким образом, целая файловая система доступна.

Недостатки:

  • Если пользователь войдет в систему, выйдет из системы и войдет в систему снова, то это будет выполняться снова, однажды на вход в систему. Так не "истинный" системный запуск только. Но это может удовлетворить Вашей потребности.
  • Так как это выполняется даже в логинах текстового режима, его желательное для НЕ размещения любой команды, которая требует сервера GDM/X11 (как демон совместных действий)
  • Bash только используется с логинами текстового режима. Таким образом, при использовании GDM, никакие bashisms не приняты в сценарии, так как Ubuntu выполнит его с dash

Однажды, когда GDM запускается (прежде чем любой пользователь войдет в систему): /etc/gdm/Init/Default

Профессионалы:

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

Недостатки:

  • Выполненное использование gdm пользователь. Таким образом, персональные сценарии и путь к ним должны быть читаемыми миром и исполняемыми
  • Не может использоваться, если никакой сервер GDM не используется (понятное дело). Так это привычка, выполненная в стартапах текстового режима
  • Снова, не выполненный в ударе, таким образом, bashisms нужно избежать.

Используйте метод, который удовлетворяет Вашей потребности.

2
ответ дан 23 November 2019 в 08:50

крон может помочь здесь.

Помимо запуска чего-то на минуте, часе, дне недели, месяца и т.д. это также начинает некоторые специальные операции:

@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".

Редактирование сделано из командной строки со следующей командой:

sudo crontab -e

у основания файла (ниже # m h dom mon dow command) можно добавить строку, которая выполняет то, как что Вы хотите так @reboot /directory/to/file выполнит/directory/to/file во время начальной загрузки.

Всего одно предупреждение: необходимо удостовериться, что нет никакого вывода из того сценария или что вывод перенаправляется в файл (или/dev/null), так как нет никакого дисплея для крона для отправки вывода (и он закончит операцию).

Пример sudo crontab -e

# For more information see the manual pages of crontab(5) and cron(8)
# 
PATH=/usr/sbin:/usr/bin:/sbin:/bin
# m h  dom mon dow   command
@reboot /usr/bin/testscript

и...

cd /usr/bin/
sudo vi testscript 
echo "works" >/tmp/testing
chmod 775 testscript

Теперь для перезагрузки... И вот рабочий пример:

ls -l /tmp/testing
-rw-r--r-- 1 root root 6 2011-05-29 08:34 /tmp/testing
rinzwind@discworld:/tmp$ more /tmp/testing
works
5
ответ дан 23 November 2019 в 08:50

Около других ответов можно поместить запуск (суперпользователь) команды в /etc/rc.local.

2
ответ дан 23 November 2019 в 08:50

Вы изучили задания крона? Можно установить один в перезагрузке @reboot в Вашем crontab

1
ответ дан 23 November 2019 в 08:50

Просто добавьте команды к /etc/rc.local. Это выполняется однажды в конце процесса начальной загрузки. Удостоверьтесь, что Вы выходите с кодом ошибки 0.

(0)asus-romano:~/PDF% cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

Я использую это на другом компьютере с тех пор... с тех пор... хорошо, вероятно, Ultrix в 1989. Необходимо удостовериться работы сценария, вызванные как корень и без графических интерфейсов. Способ протестировать его выполняет его, формируют виртуальную консоль (Ctrl-Alt-F1, Ctrl-Alt-F7 для возвращения к графической среде) в корневой оболочке (sudo -i).

Предупредите, что неправильная команда в той оболочке может полностью уничтожить Вашу систему.

1
ответ дан 23 November 2019 в 08:50

В дополнение к crontab решению: можно сделать это (как корень) нев интерактивном режиме через

echo "@reboot /path/to/runonce-script.bash" | crontab

и помещенный в этот сценарий a

crontab -r

для удаления его снова. Еще сценарий будет выполняться после каждой перезагрузки.

0
ответ дан 23 November 2019 в 08:50

Другие вопросы по тегам:

Похожие вопросы: