Я хотел бы запускать простую команду оболочки echo 1 > /proc/sys/kernel/sysrqпри каждой загрузке, чтобы включить ключи sysrq. Когда в загрузке это должно быть сделано, и где я должен поставить скрипт для этого?
Прошу отличаться, @davidgo. Ссылки, которые вы цитируете, немного устарели: хотя crontab работает, /etc/rc.local не работает на systemdтаких дистрибутивах, как Arch Linux. Ссылаясь на них, мы могли бы отправить Деметрия в погоню за диким гусем. Некоторое обновление, время от времени, должно быть сделано.
MariusMatutiae
Ответы:
37
Зависит от дистрибутивов.
Если вы работаете с дистрибутивами, созданными в 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, но это может быть больше, чем вы рассчитывали с вашим простым вопросом.
Можете ли вы подтвердить это для Fedora? Мой поиск говорит мне, что rc.local все равно будет работать, если он существует и является исполняемым, но по умолчанию не настроен. Я чувствовал тревожные последствия, если rc.local не работает! (Я мог только найти ссылки на это для Fedora 18 - forums.fedoraforum.org/showthread.php?t=291889 )
davidgo
Вы правы, в Fedora 19 она еще может быть, если вы действительно этого хотите. Но он больше не упакован, docs.fedoraproject.org/en-US/Fedora/16/html/Release_Notes/… bullet 3.2.4. Кроме того, он не существует в Arch Linux вообще, поэтому я подумал, что было бы безопасно включить предупреждение об этом.
MariusMatutiae
2
может быть, это неизвестный псевдоним для меня, но @bootон не существует, просто @rebootdebianhelp.co.uk/crontab.htm
Заратустра
19
Если ваша система работает под управлением версии, cronкоторая ее поддерживает (в частности, Vixie cron), вы можете использовать ее @rebootв задании cron.
Это одна из 8 специальных строк, которые она поддерживает.
Цитирую crontab(5)man-страницу (из моей системы 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
systemd
таких дистрибутивах, как Arch Linux. Ссылаясь на них, мы могли бы отправить Деметрия в погоню за диким гусем. Некоторое обновление, время от времени, должно быть сделано.Ответы:
Зависит от дистрибутивов.
Если вы работаете с дистрибутивами, созданными в Debian, есть как минимум два подходящих места: /etc/rc.local и crontab. Вы можете вызвать crontab как root,
а затем вставьте эту строку
где
my_command
исполняемый файл (chmod 755 my_command
).В качестве альтернативы, вы можете разместить такую строку
в /etc/rc.local, и это будет выполнено последним. В любом случае, пожалуйста, помните, что вы используете корневую среду, а не свою. Также по этой причине лучше использовать абсолютные пути.
Если вы находитесь в системном дистрибутиве (Arch Linux, Fedora 19, ...), первый параметр (crontab) по-прежнему действует, а второй (/etc/rc.local) больше не существует. В этом случае вы должны научиться запускать службу, которая будет запускаться
systemctl
, но это может быть больше, чем вы рассчитывали с вашим простым вопросом.источник
@boot
он не существует, просто@reboot
debianhelp.co.uk/crontab.htmЕсли ваша система работает под управлением версии,
cron
которая ее поддерживает (в частности, Vixie cron), вы можете использовать ее@reboot
в задании cron.Это одна из 8 специальных строк, которые она поддерживает.
Цитирую
crontab(5)
man-страницу (из моей системы Ubuntu 12.04):Это далеко не единственный способ запустить что-то во время загрузки, но это альтернатива.
источник
Практически во всех вариантах Linux (давным-давно) есть файл /etc/rc.local, который запускается при запуске - вы можете просто добавить в него команду.
Тем не менее, вам даже не нужно это делать. «Правильный» способ - изменить / добавить строку kernel.sysrq = 1 в /etc/sysctl.conf
источник