2013-12-08 07:10:46 +0000 2013-12-08 07:10:46 +0000
27
27

Как я могу запустить команду после загрузки?

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

Ответы (3)

37
37
37
2013-12-08 07:37:04 +0000

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

Если вы работаете с дистрибутивами, производными 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, и она будет выполнена последней. В любом случае, pls помнит, что вы используете корневое окружение, а не ваше. Также по этой причине лучше всего использовать абсолютные пути.

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

19
19
19
2012-09-10 22:29:09 +0000

Если ваша система работает с версией 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). В частности, это может произойти до того, как некоторые системные демоны или другие средства будут запущены. Это связано с порядком загрузки машины.

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

9
9
9
2013-12-08 07:32:27 +0000

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

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

Похожие вопросы

6
10
5
37
11