Potrzebujesz skryptu wykonywanego przy każdym ponownym uruchomieniu w +1 minucie. Umieściłem rekord, @rebootale jest za wcześnie na mój skrypt. Jak wykonać go jakiś czas po ponownym uruchomieniu?
Dlaczego jest za wcześnie ? Może skrypt init byłby bardziej odpowiedni (jeśli chodzi o zależności, np. Ten skrypt wymaga najpierw skonfigurowania sieci )?
sr_
mój skrypt musi zostać wykonany po wszystkich innych, ostatnich słowach
Yurij73,
ponieważ twoje zadanie musi zostać wykonane po wszystkim, a ponieważ pojęcie wszystkiego jest dość zmienne (dodanie nowej aplikacji autostart @ reboot nie jest tak rzadkie), myślę, że to od Ciebie zależy, czy umieścisz swoje zadanie w skryptach rc w sposób, w jaki serwery są Twoim celem. Umieszczenie zadania na dole zadań określonych w pliku /etc/rc.local jest zwykle tym, czego potrzebujesz, ale w zależności od konfiguracji uruchamiania systemu może to nie zawsze być prawdą. Przetestuj to i sprawdź, czy to działa dla Ciebie.
MelBurslan,
Brzmi jak skrzynka dla Upstart?
nafg
Odpowiedzi:
64
Czy skrypt ma być uruchamiany tylko minutę po uruchomieniu, czy może być używany także w innych momentach? W pierwszym przypadku możesz dodać sleep 60na początku skryptu, lub w drugim przypadku dodać go do pliku crontab:
@reboot sleep 60 && my_script.sh
Jak jednak wskazał sr_, być może zajmujesz się tym w niewłaściwy sposób, a odpowiedni skrypt init.d lub rc.d byłby bardziej niezawodnym rozwiązaniem.
Lub użyj opcji wiersza polecenia, aby dostosować opóźnienie (np. script -s XCo przełoży się na sleep Xwnętrze skryptu).
Peter
Czy mogę zastosować to do pliku runrunner w /etc/init.d/?
Andres Angel,
@AndresAngel - Przepraszam, nie wiem. Używam FreeBSD, który nie ma taskrunner, ani, w tym przypadku,/etc/init.d
D_Bye
na moim rhel7 sen w ogóle nie działa, śpi wiecznie i nigdy nie wraca.
Inder R Singh
16
Jeśli potrzebujesz wykonać coś po ponownym uruchomieniu, kiedy sieć stanie się dostępna, możesz na przykład napisać jednostkę systemową, która zostanie wykonana w wymaganym czasie (oczywiście będzie to działać tylko w systemach z systememd).
W tym celu utwórz plik /etc/systemd/system/my_script.serviceo następującej treści:
@reboot echo /root/bin/do_the_stuff | at now + 2 minutes
# at assigns it an execution time truncated to whole minutes,
# so this means it will execute in 1--2 minutes.
... z dodanym wspomnianym zastrzeżeniem, że jeśli naprawdę chcesz uruchomić to po wszystkich innych rzeczach, powinieneś sprawdzić, jak to zrobić w init, którego używa twój system operacyjny.
Odpowiedzi:
Czy skrypt ma być uruchamiany tylko minutę po uruchomieniu, czy może być używany także w innych momentach? W pierwszym przypadku możesz dodać
sleep 60
na początku skryptu, lub w drugim przypadku dodać go do pliku crontab:Jak jednak wskazał sr_, być może zajmujesz się tym w niewłaściwy sposób, a odpowiedni skrypt init.d lub rc.d byłby bardziej niezawodnym rozwiązaniem.
źródło
script -s X
Co przełoży się nasleep X
wnętrze skryptu).taskrunner
, ani, w tym przypadku,/etc/init.d
Jeśli potrzebujesz wykonać coś po ponownym uruchomieniu, kiedy sieć stanie się dostępna, możesz na przykład napisać jednostkę systemową, która zostanie wykonana w wymaganym czasie (oczywiście będzie to działać tylko w systemach z systememd).
W tym celu utwórz plik
/etc/systemd/system/my_script.service
o następującej treści:Następnie wykonaj:
Jesteś skończony!
źródło
Chciałbym użyć
at
. Jak w:... z dodanym wspomnianym zastrzeżeniem, że jeśli naprawdę chcesz uruchomić to po wszystkich innych rzeczach, powinieneś sprawdzić, jak to zrobić w init, którego używa twój system operacyjny.
źródło