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

Jak mogę uruchomić polecenie po starcie systemu?

Chciałbym uruchomić prostą komendę powłoki echo 1 > /proc/sys/kernel/sysrq przy każdym starcie systemu, aby włączyć klucze sysrq. Kiedy podczas startu systemu powinno to być wykonane i gdzie powinienem umieścić skrypt, który to zrobi?

Odpowiedzi (3)

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

Zależy od distro.

Jeśli korzystasz z dystrybucji opartych na Debianie, istnieją przynajmniej dwa odpowiednie miejsca, /etc/rc.local i crontab. Możesz wywołać crontab jako root,

crontab -e

a następnie wstawić tę linię

@reboot /home/my_name/bin/my_command

gdzie my_command jest plikiem wykonywalnym (chmod 755 my_command).

Alternatywnie, możesz umieścić linię taką jak ta

/home/my_name/bin/my_command

w /etc/rc.local, i będzie ona wykonywana jako ostatnia. W każdym razie, pls do remember you are using root environment, not yours. Również z tego powodu, najlepiej jest używać ścieżek absolutnych.

Jeśli jesteś na dystro systemd (Arch Linux, Fedora 19,…) pierwsza opcja (crontab) jest nadal ważna, podczas gdy druga (/etc/rc.local) już nie. W tym przypadku powinieneś nauczyć się, jak uruchomić usługę, która ma być uruchamiana przez systemctl, ale to może być więcej niż się spodziewałeś po swoim prostym pytaniu.

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

Jeśli w twoim systemie działa wersja cron, która to obsługuje (konkretnie Vixie cron), możesz użyć @reboot w zadaniu crona.

Jest to jeden z 8 specjalnych łańcuchów, które obsługuje.

Cytując stronę man crontab(5) (z mojego systemu Ubuntu 12.04):

Zamiast pierwszych pięciu pól, może pojawić się jeden z ośmiu specjalnych ciągów znaków:

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 * * * *".

Należy pamiętać, że startup, jeśli chodzi o @reboot, to czas, w którym uruchamia się demon cron(8). W szczególności, może to być przed uruchomieniem niektórych demonów systemowych lub innych obiektów. Jest to spowodowane kolejnością bootowania maszyny.

Nie jest to jedyny sposób na uruchomienie czegoś w czasie startu, ale jest to alternatywa.

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

Prawie wszystkie warianty Linuksa (od bardzo, bardzo dawna) mają plik /etc/rc.local, który jest uruchamiany przy starcie systemu - możesz po prostu dodać do niego tę komendę.

To powiedziawszy, nie musisz nawet tego robić. Poprawnym" sposobem byłoby zmodyfikowanie / dodanie linii kernel.sysrq = 1 do /etc/sysctl.conf