Есть ли любой файл конфигурации, который оценен однажды, каждый раз операционная система запускает. bashrc не делает квалифицирует, так как он оценен каждый раз, терминал гнома запускается..
Существует 2 места, которые я использую, когда я должен добавить "выполненный однажды" команды:
Однажды при каждом пользовательском входе в систему (быть этим Graphical/GDM или вход в систему текста/консоли): ~/.profile
Профессионалы:
Недостатки:
dash
Однажды, когда GDM запускается (прежде чем любой пользователь войдет в систему): /etc/gdm/Init/Default
Профессионалы:
Недостатки:
gdm
пользователь. Таким образом, персональные сценарии и путь к ним должны быть читаемыми миром и исполняемымиИспользуйте метод, который удовлетворяет Вашей потребности.
крон может помочь здесь.
Помимо запуска чего-то на минуте, часе, дне недели, месяца и т.д. это также начинает некоторые специальные операции:
@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
Около других ответов можно поместить запуск (суперпользователь) команды в /etc/rc.local
.
Вы изучили задания крона? Можно установить один в перезагрузке @reboot
в Вашем crontab
Просто добавьте команды к /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
).
Предупредите, что неправильная команда в той оболочке может полностью уничтожить Вашу систему.
В дополнение к crontab решению: можно сделать это (как корень) нев интерактивном режиме через
echo "@reboot /path/to/runonce-script.bash" | crontab
и помещенный в этот сценарий a
crontab -r
для удаления его снова. Еще сценарий будет выполняться после каждой перезагрузки.