Chciałem uruchomić polecenie na naszym systemie Linux po jego zrestartowaniu, widziałem, że można to zrobić przy użyciu crontab. Chciałem uruchomić to polecenie
sudo ifdown eth0 && sudo ifup -v eth0
na crontabie mogę po prostu zrobić:
@reboot sudo ifdown eth0 && sudo ifup -v eth0
czy muszę to zapisać w skrypcie?
Dziękuję Ci
Odpowiedzi:
Kilka uwag tutaj, zanim to zadziała:
sudo
w pracy crona. Zamiast tego edytujroot
crontab zamiast własnego, np.sudo crontab -e
A następnie wprowadź polecenia bezsudo
.cron
i prawdopodobnie lepiej byłoby umieścić go/etc/rc.local
przedexit 0
linią.@reboot
powinien również działać po silnym wyłączeniu lub awarii, ale istnieją różne implementacje crona, więc YMMV. Widziałem komentarze w różnych miejscach potwierdzające oba.EDYCJA (2016/02/17): Usunięto nieprawidłowy napis na ścieżkach bezwzględnych; kudos @muru
EDYCJA (2016/10/17): Dodano notatkę zamknięcia
EDYCJA (2017/09/11): Zmieniona notatka zamknięcia. Nie jestem tego pewien.
źródło
etc/rc.local
bez sudo. więc wtedy będzie tylko ifdown eth0 && sudo ifup -v eth0 wyjście 0cron
używaPATH
podanego w/etc/environment
, który ma/sbin
./etc/pam.d/cron
ładujepam_env
, więc/etc/environment
należy przeczytać iPATH
użyć domyślnego zestawu. Ta odpowiedź została opublikowana tuż przed wydaniem 12.04.Możesz do tego użyć crontab, ale jeśli użyjesz
sudo
, będziesz potrzebowałNOPASSWD
reguły,sudoers
aby to zrobić. (Zobacz Jak uruchomić zadanie cron za pomocą polecenia sudo .)Łatwiej byłoby edytować
/etc/rc.local
i dodawać te polecenia przedexit 0
wierszem.źródło