Я хотел бы запускать простую команду оболочки echo 1 > /proc/sys/kernel/sysrq
при каждой загрузке, чтобы включить ключи sysrq. Когда в загрузке это должно быть сделано, и где я должен поставить скрипт для этого?
3 ответа
Зависит от дистрибутивов.
Если вы работаете с дистрибутивами, созданными в 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
, но это может быть больше, чем вы ожидали , задав свой простой вопрос.
Если в вашей системе установлена версия 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) . В частности, это может произойти до запуска некоторых системных демонов или других средств. Это связано с порядком загрузки машины.
Это далеко не единственный способ запустить что-то во время загрузки, но это альтернатива.
Практически во всех вариантах Linux (давным-давно) есть файл /etc/rc.local, который запускается при запуске - вы можете просто добавить в него команду.
Тем не менее, вам даже не нужно это делать. "Правильный" способ - изменить / добавить строку kernel.sysrq = 1 в /etc/sysctl.conf