26

Я хотел бы запускать простую команду оболочки echo 1 > /proc/sys/kernel/sysrq при каждой загрузке, чтобы включить ключи sysrq. Когда в загрузке это должно быть сделано, и где я должен поставить скрипт для этого?

3 ответа3

35

Зависит от дистрибутивов.

Если вы работаете с дистрибутивами, созданными в Debian, есть как минимум два подходящих места: /etc/rc.local и crontab. Вы можете вызвать crontab как root,

   crontab -e

а затем вставьте эту строку

   @reboot /home/my_name/bin/my_command

где my_command - исполняемый файл (chmod 755 my_command).

В качестве альтернативы, вы можете разместить такую строку

   /home/my_name/bin/my_command

в /etc/rc.local, и это будет выполнено последним. В любом случае, пожалуйста, помните, что вы используете корневую среду, а не свою. Также по этой причине лучше использовать абсолютные пути.

Если вы находитесь в системном дистрибутиве (Arch Linux, Fedora 19, ...), первый параметр (crontab) все еще действует, а второй (/etc/rc.local) больше не существует. В этом случае вы должны научиться запускать службу, запускаемую systemctl , но это может быть больше, чем вы ожидали , задав свой простой вопрос.

18

Если в вашей системе установлена версия cron которая ее поддерживает (в частности, Vixie cron), вы можете использовать @reboot в задании cron.

Это одна из 8 специальных строк, которые она поддерживает.

Цитирую справочную страницу crontab(5) (из моей системы Ubuntu 12.04):

Вместо первых пяти полей может появиться одна из восьми специальных строк:

string         meaning
------         -------
@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 * * * *".

Обратите внимание, что при запуске @reboot это время запуска демона cron(8) . В частности, это может произойти до запуска некоторых системных демонов или других средств. Это связано с порядком загрузки машины.

Это далеко не единственный способ запустить что-то во время загрузки, но это альтернатива.

10

Практически во всех вариантах Linux (давным-давно) есть файл /etc/rc.local, который запускается при запуске - вы можете просто добавить в него команду.

Тем не менее, вам даже не нужно это делать. "Правильный" способ - изменить / добавить строку kernel.sysrq = 1 в /etc/sysctl.conf

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .