Chciałbym uruchomić proste polecenie powłoki echo 1 > /proc/sys/kernel/sysrqprzy każdym uruchomieniu, aby włączyć klucze sysrq. Kiedy powinienem to zrobić i gdzie powinienem umieścić skrypt, aby to zrobić?
Zaczynam się różnić, @davidgo. Referencje, które cytujesz, są nieco przestarzałe: podczas gdy crontab działa, /etc/rc.local nie działa na systemddystrybucjach takich jak Arch Linux. Odwołując się do nich, możemy wysłać Demetri na dziką gęś. Czasami trzeba trochę zaktualizować.
MariusMatutiae
Odpowiedzi:
37
Zależy od dystrybucji.
Jeśli korzystasz z dystrybucji wywodzącej się z Debiana, istnieją co najmniej dwa właściwe miejsca: /etc/rc.local i crontab. Możesz wywołać crontab jako root,
crontab -e
a następnie wstaw tę linię
@reboot /home/my_name/bin/my_command
gdzie my_commandjest plik wykonywalny ( chmod 755 my_command).
Alternatywnie możesz umieścić taką linię
/home/my_name/bin/my_command
w /etc/rc.local, a to zostanie wykonane jako ostatnie. W każdym razie, pls pamięta, że używasz środowiska root, a nie twojego. Również z tego powodu najlepiej jest używać ścieżek bezwzględnych.
Jeśli korzystasz z dystrybucji systemowej (Arch Linux, Fedora 19, ...) pierwsza opcja (crontab) jest nadal aktualna, a druga (/etc/rc.local) już nie istnieje. W takim przypadku powinieneś nauczyć się, jak uruchomić usługę, która ma być obsługiwana systemctl, ale może to być więcej niż można się spodziewać po tym prostym pytaniu.
Czy możesz to potwierdzić dla Fedory? Moje wyszukiwanie mówi mi, że rc.local będzie nadal działać, jeśli istnieje i jest wykonywalny, ale nie jest domyślnie skonfigurowany. Dostrzegłem niepokojące konsekwencje, jeśli rc.local nie działa! (Mogłem znaleźć tylko odniesienia do tego dla Fedory 18 - forums.fedoraforum.org/showthread.php?t=291889 )
davidgo
Masz rację, w Fedorze 19 możesz go nadal mieć, jeśli naprawdę tego chcesz. Ale nie jest już zapakowany, docs.fedoraproject.org/en-US/Fedora/16/html/Release_Notes/… punktor 3.2.4. Ponadto, nie istnieje on całkowicie w Arch Linux, więc pomyślałem, że bezpiecznie jest dołączyć ostrzeżenie o tym.
Jeśli twój system działa w wersji, cronktóra go obsługuje (w szczególności Vixie cron), możesz użyć go @rebootw zadaniu cron.
Jest to jeden z 8 obsługiwanych ciągów specjalnych.
Cytując crontab(5)stronę podręcznika (z mojego systemu Ubuntu 12.04):
Zamiast pierwszych pięciu pól może pojawić się jeden z ośmiu ciągów specjalnych:
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 * * * *".
Pamiętaj, że jeśli chodzi o uruchamianie, @rebootto czas uruchamiania demona cron (8) . W szczególności może to nastąpić przed uruchomieniem niektórych demonów systemu lub innych obiektów. Wynika to z sekwencji kolejności rozruchu maszyny.
Nie jest to jedyny sposób, aby uruchomić coś podczas rozruchu, ale jest to alternatywa.
Prawie wszystkie warianty Linuksa (od długiego, długiego czasu) mają plik /etc/rc.local, który działa podczas uruchamiania - możesz po prostu dodać do niego polecenie.
To powiedziawszy, nawet nie musisz tego robić. „Poprawnym” sposobem byłoby zmodyfikowanie / dodanie wiersza kernel.sysrq = 1 do pliku /etc/sysctl.conf
systemd
dystrybucjach takich jak Arch Linux. Odwołując się do nich, możemy wysłać Demetri na dziką gęś. Czasami trzeba trochę zaktualizować.Odpowiedzi:
Zależy od dystrybucji.
Jeśli korzystasz z dystrybucji wywodzącej się z Debiana, istnieją co najmniej dwa właściwe miejsca: /etc/rc.local i crontab. Możesz wywołać crontab jako root,
a następnie wstaw tę linię
gdzie
my_command
jest plik wykonywalny (chmod 755 my_command
).Alternatywnie możesz umieścić taką linię
w /etc/rc.local, a to zostanie wykonane jako ostatnie. W każdym razie, pls pamięta, że używasz środowiska root, a nie twojego. Również z tego powodu najlepiej jest używać ścieżek bezwzględnych.
Jeśli korzystasz z dystrybucji systemowej (Arch Linux, Fedora 19, ...) pierwsza opcja (crontab) jest nadal aktualna, a druga (/etc/rc.local) już nie istnieje. W takim przypadku powinieneś nauczyć się, jak uruchomić usługę, która ma być obsługiwana
systemctl
, ale może to być więcej niż można się spodziewać po tym prostym pytaniu.źródło
@boot
nie istnieje, po prostu@reboot
debianhelp.co.uk/crontab.htmJeśli twój system działa w wersji,
cron
która go obsługuje (w szczególności Vixie cron), możesz użyć go@reboot
w zadaniu cron.Jest to jeden z 8 obsługiwanych ciągów specjalnych.
Cytując
crontab(5)
stronę podręcznika (z mojego systemu Ubuntu 12.04):Nie jest to jedyny sposób, aby uruchomić coś podczas rozruchu, ale jest to alternatywa.
źródło
Prawie wszystkie warianty Linuksa (od długiego, długiego czasu) mają plik /etc/rc.local, który działa podczas uruchamiania - możesz po prostu dodać do niego polecenie.
To powiedziawszy, nawet nie musisz tego robić. „Poprawnym” sposobem byłoby zmodyfikowanie / dodanie wiersza kernel.sysrq = 1 do pliku /etc/sysctl.conf
źródło