Скрипт Bash при запуске? (Linux)

12

Есть ли способ сделать / запустить скрипт bash при перезагрузке (как, например, в Debian / Ubuntu, так как это то, что есть в моих 2 коробках дома)

Кроме того, какие-либо рекомендуемые руководства для выполнения задач cron? Я совершенно новый для них (но они будут очень полезны)

msmith1114
источник

Ответы:

21

В Ubuntu / Debian / Centos вы можете настроить задание cron для запуска @reboot. Это запускается один раз при запуске системы. Используйте crontab -e для редактирования crontab и добавления строки, как в примере ниже, например

@reboot /path/to/some/script 

Есть много ресурсов для Cron, если вы ищете их. На этом сайте есть несколько хороших примеров.


источник
7

Другой типичный способ запуска чего-либо при загрузке на многих платформах * nix - это (или я думаю, что это может начать терять предпочтение - см. Альтернативы ) помещение сценариев в каталог, который, в зависимости от конкретной ОС / дистрибутива, может быть что - то вроде /etc/rc2.d, /etc/rc3.d, /etc/rc/rc3.dи т.п. (различные дистрибутивы используют различные «уровни выполнения», который , когда число приходит из - см ссылку ниже). Зачастую они также связаны между собой файлами или файлами /etc/init.d, для более легкого выполнения вручную, и принимают аргументы «start» и / или «stop» на большинстве * nix-платформ, а также «status», «restart», и т.д. на многих платформах Linux. В таких системах, как правило , они выполняются init,inittab, В системах * BSD существует другой стиль схожей концепции , и, как указано выше, существует множество вариантов.

В указанном выше стиле сценарии, например, /etc/rc2.d(для системы с уровнем запуска по умолчанию 2) обычно начинаются либо с буквы, Sлибо Kс двухзначного числа. Сценарии, которые начинаются с S, запускаются в лексикографическом порядке (что обычно переводит в числовой порядок) при загрузке до уровня 2 с аргументом «start». При завершении работы сценарии с префиксом K запускаются аналогичным образом с аргументом «stop».

Файлы в /etc/init.d(или иногда /etc/rc/init.d, или в других вариациях) именуются без префиксов S и K или числовых чисел. Как правило, файлы в различных каталогах /etc/rc?.d имеют символическую ссылку на реальные файлы, на которые часто ссылается префикс относительного пути ../init.d/.

В разных системах существуют различные утилиты для управления ими, включения и выключения и т. Д. В IRIX (по крайней мере, с IRIX 4, если мне не изменяет память), это был инструмент под названием chkconfig, который не манипулирует ссылки, но которые будут проверены сценариями, чтобы увидеть, должны ли они работать или нет. Я думаю, что IRIX была первой ОС, у которой было что-то подобное. Позже, в какой-то версии RedHat, которая у меня была, был инструмент с тем же именем, но он вел себя немного по-другому, фактически управляя символическими ссылками - посмотрите, chkconfig(8)что я думаю, вероятно, та же (или очень похожая) версия как я использовал тогда.

В системе Ubuntu 9.04, к которой у меня есть доступ, похоже, update-rc.dэто скрипт для запуска.

Если вы работаете в системе, использующей inittab, вы также можете добавлять вещи прямо туда - что может быть особенно полезно для вещей, которые вы хотите запускать не только один раз при загрузке, но и активно контролировать ( init), respawnесли они когда-либо сбой или прекращение. Смотрите вывод man inittab(если он есть) в вашей системе для получения дополнительной информации. И / или man init, и т. Д. Есть много разных вкусов, и я (в настоящее время) не очень хорошо знаком с Debian или Ubuntu, поэтому я не уверен, на что именно вам указать, но, надеюсь, это даст вам некоторые отправные точки ,

раздел @reboot в crontob является новым для меня, но также кажется, что это может быть полезным вариантом - хотя я бы посоветовал сценарии инициализации как предпочтительные для многих вещей. Но посмотрите man 5 crontabдля получения дополнительной информации о том, что вы можете поместить в конфигурацию cron, и как можно сказать, что нужно запускать, и когда (в том числе, предполагая версию cron для Vixie / ISC [см. Cron history ] с помощью @reboot).

Я надеюсь, что это полезно.

Lindes
источник