Na Amazon S3 przykład Linux, mam dwa skrypty nazywa start_my_app
i stop_my_app
którego start i zatrzymanie na wieki (co z kolei prowadzi mój wniosek node.js). Używam tych skryptów do ręcznego uruchamiania i zatrzymywania aplikacji Node.js. Na razie w porządku.
Mój problem: chcę również skonfigurować go tak, aby start_my_app
był uruchamiany przy każdym uruchomieniu systemu. Wiem, że muszę dodać plik do wewnątrz init.d
i wiem, jak dowiązać go do odpowiedniego katalogu w nim zawartego rc.d
, ale nie jestem w stanie dowiedzieć się, co faktycznie musi znaleźć się w pliku, w którym się umieszczam init.d
. Myślę, że powinna to być tylko jedna linia start_my_app
, ale to nie działało dla mnie.
init.d
rozwiązanie ( tutaj ) powinno być preferowane odrc.local
rozwiązania, ponieważ to drugie jest starym oprzyrządowaniem, które wciąż jest użyteczne, ponieważ nowe oprzyrządowanie jest kompatybilne wstecz.Odpowiedzi:
W pliku, który umieściłeś
/etc/init.d/
, musisz ustawić, aby był wykonywalny za pomocą:Dzięki @meetamit, jeśli to nie zadziała, musisz utworzyć dowiązanie symboliczne do
/etc/rc.d/
Pamiętaj, że w najnowszym Debianie nie będzie to działało, ponieważ twój skrypt musi być zgodny z LSB (zapewnij przynajmniej następujące działania: start, stop, restart, wymuszenie przeładowania i status): https: //wiki.debian .org / LSBInitScripts
Uwaga: zamiast ścieżki względnej należy podać bezwzględną ścieżkę skryptu, ponieważ może to rozwiązać nieoczekiwane problemy:
I nie zapomnij dodać na górze tego pliku:
źródło
ln
polecenia) do katalogu wewnątrzrc.d
/etc/rc.d
folderu, ale mam/etc/rcX.d
foldery (np. /Etc/rc0.d , /etc/rc1.d , /etc/rcS.d ), jest też plik /etc/rc.local . Myślę, że powinieneś utworzyć dowiązania symboliczne w folderze niestandardowym, takim jak/etc/rc9.d
lub w jednym z istniejących ... (Ubuntu Server 14.04)Ustaw crontab do tego
po każdym uruchomieniu uruchomi skrypt testowy.
źródło
@reboot sh $HOME/test.sh
w crontab jest jeszcze czystszecrontab -l
powinieneś pokazać,@reboot sh $HOME/test.sh
aby potwierdzić, że jest rzeczywiście ustawiony.Prostym podejściem jest dodanie linii w
/etc/rc.local
:lub jeśli chcesz uruchomić polecenie jako użytkownik specjalny:
(końcowe znaki handlowe i tło procesują i pozwala rc.local kontynuować wykonywanie)
Jeśli potrzebujesz pełnego skryptu inicjującego, dystrybucja debian ma plik szablonu, więc:
i trochę to dostosujcie.
źródło
stop_my_app
gdybym musiał ręcznie zatrzymać aplikację (przez uruchomienie ), musiałbym to zrobićsudo
, prawda? Zastanawiam się także, jaka dokładnie jest funkcja końcowego znaku handlowego (?).&
uruchom proces w tleinit.d
sposobu robienia rzeczy (wtedy wasza odpowiedź była dla mnie tylko prostszym obejściem) . Ten post zyskuje wiele wyświetleń i głosów, dlatego ważne jest, aby zachować dokładność.Tak właśnie robię w systemach Red Hat Linux .
Umieść skrypt w
/etc/init.d
posiadaniu roota i pliku wykonywalnego. Na górze skryptu możesz podać dyrektywę dlachkconfig
. Przykład: poniższy skrypt służy do uruchomienia aplikacji Java jako wyrocznia użytkownika.Nazwa skryptu to
/etc/init.d/apex
Oznacza to, że skrypt musi działać na poziomach 3, 4 i 5, a priorytet dla start / stop to 99 i 10.
Następnie jako użytkownik
root
możesz użyćchkconfig
do włączenia lub wyłączenia skryptu podczas uruchamiania:I możesz użyć
service start/stop apex
.źródło
Wprowadź
cron
za pomocąsudo
:sudo crontab -e
Dodaj polecenie, które zostanie uruchomione podczas uruchamiania, w tym przypadku skrypt:
@reboot sh /home/user/test.sh
Zapisać:
Naciśnij ESC, a następnie: x, aby zapisać i wyjść, lub naciśnij ESC, a następnie ZZ (to shift + ZZ)
Test Test Test :
Uruchom skrypt testowy bez crona, aby upewnić się, że rzeczywiście działa.
Upewnij się, że zapisałeś swoje polecenie w cron, użyj
sudo crontab -e
Uruchom ponownie serwer, aby potwierdzić, że wszystko działa
sudo @reboot
źródło
sudo
jeśli chcesz uruchomić określone polecenie podczas uruchamiania przy użyciu bieżącego użytkownika./tmp
??Po prostu dodaj linię do swojego crontab ..
Upewnij się, że plik jest wykonywalny:
Aby edytować plik crontab:
Linia, którą musisz dodać:
Tak proste!
źródło
# uname -a Linux accton-xp70a0-26-a1 3.11.10-301.fc20.x86_64 #1 SMP Thu Dec 5 14:01:17 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Inną opcją jest posiadanie polecenia @reboot w twoim crontabie.
Nie każda wersja crona obsługuje to, ale jeśli twoja instancja oparta jest na Amazon Linux AMI, to będzie działać.
źródło
Możesz to zrobić :
następnie użyj tego polecenia
Proszę zobaczyć tę stronę na Cyberciti .
źródło
Utwórz własny plik wykonywalny / init
Nie tego chcesz, ale jest fajnie!
Po prostu wybierz dowolny plik wykonywalny, nawet skrypt powłoki i uruchom jądro z parametrem wiersza poleceń:
Pod koniec rozruchu jądro Linux uruchamia pierwszy plik wykonywalny przestrzeni użytkownika na podanej ścieżce.
Popularnych jest kilka projektów
init
pliki wykonywalne używane przez główne dystrybucje, np. Systemd, aw większości dystrybucji init rozwinie wiele procesów wykorzystywanych podczas normalnej pracy systemu.Ale możemy przejąć kontrolę
/init
, aby uruchomić własne minimalne skrypty, aby lepiej zrozumieć nasz system.Oto minimalna odtwarzalna konfiguracja: https://github.com/cirosantilli/linux-kernel-module-cheat/tree/f96d4d55c9caa7c0862991025e1291c48c33e3d9/README.md#custom-init
źródło
To proste rozwiązanie działało dla mnie na instancji Amazon Linux z systemem CentOS. Edytuj
/etc/rc.d/rc.local
plik i umieść tam polecenie. W tym pliku wspomniano, że zostanie on wykonany po wszystkich innych skryptach inicjujących. W związku z tym bądź ostrożny. Tak wygląda obecnie plik. . Ostatnia linia to nazwa mojego skryptu.źródło
Absolutnie najłatwiejszą metodą, jeśli wszystko, co chcesz uruchomić, jest prosty skrypt (lub cokolwiek innego), jeśli masz GUI do korzystania z preferencji systemowych>, a następnie uruchamiania aplikacji.
po prostu przejdź do odpowiedniego skryptu i gotowe. (uczyń skrypt wykonywalnym)
źródło
W przypadku Debiana 9 patrz /ubuntu/228304/how-do-i-run-a-script-at-start-up . Pomogło mi to. Krótka wersja dla Debian 9: dodaj komendy (jako root) do /etc/rc.local
Prawdopodobnie plik /path_to_file/filename.sh powinien być wykonywalny (tak mi się wydaje).
źródło
W Lubuntu miałem do czynienia z odwrotną sytuacją. Skype zaczyna działać po uruchomieniu i znalazłem w
~/.config/autostart/
plikuskypeforlinux.desktop
. Zawartość pliku jest następująca:Usunięcie tego pliku pomogło mi.
źródło
$ update-rc.d myScript.sh defaults NN
gdzie NN to kolejność, w jakiej powinien zostać wykonany. Na przykład 99 oznacza, że będzie uruchamiany po 98, a przed 100.źródło
Praca z mikrousługami lub powłoką Python 3; używając Ubuntu Server 18.04 (Bionic Beaver) lub Ubuntu 19.10 (Eoan Ermine) lub Ubuntu 18.10 (Cosmic Cuttlefish) Zawsze lubię te kroki i zawsze działało :
Tworzenie mikrousługi o nazwie p przykład „brain_microservice1.service” w moim przypadku:
Wewnątrz tej nowej usługi, w której jesteś:
Daj uprawnienia:
Daj następnie pozwolenie na wykonanie:
Włącz wtedy, to spowoduje, że zawsze zacznie się przy starcie
Następnie możesz to przetestować;
$ sudo uruchom ponownie teraz
Zakończ = SUKCES !!
Można to zrobić za pomocą tego samego skryptu ciała, aby uruchomić powłokę, zareagować ... skrypt uruchamiania bazy danych ... dowolny kod systemu operacyjnego ... mam nadzieję, że ta pomoc ...
...
źródło
Nawiązałem do tego bloga, zawsze brzmi dobry wybór
https://blog.xyzio.com/2016/06/14/setting-up-a-golang-website-to-autorun-on-ubuntu-using-systemd/
vim /lib/systemd/system/gosite.service
źródło
Oto prostsza metoda!
Po pierwsze: napisz skrypt powłoki i zapisz go .sh tutaj jest przykładem
ten skrypt wyłączy wewnętrzną klawiaturę podczas uruchamiania.
Po drugie: otwórz aplikację „Preferencje uruchamiania aplikacji”
wprowadź opis zdjęcia tutaj
wprowadź opis zdjęcia tutaj
Po trzecie: kliknij Dodaj. po czwarte: w sekcji NAZWA podaj nazwę. po piąte: w sekcji poleceń przejdź do swojego .sh. po szóste: edytuj sekcję poleceń, aby:
po siódme: kliknij Dodaj. Otóż to! Skończone!
Teraz potwierdź, uruchamiając ponownie komputer.
Twoje zdrowie!
źródło
Bezbolesną, najłatwiejszą i najbardziej uniwersalną metodą jest po prostu wykonanie jej za pomocą
~.bash_profile
lub~.profile
(jeśli nie masz pliku bash_profile) .Wystarczy dodać polecenie wykonania na dole tego pliku, a zostanie ono uruchomione po uruchomieniu systemu.
Mam ten na dole przykład;
~\Desktop\sound_fixer.sh
źródło
~/.bash_profile
wykonuje się, gdy użytkownik się loguje - nie podczas uruchamiania systemu. W pierwotnym pytaniu chodzi o uruchomienie serwera aplikacji Node.js podczas uruchamiania komputera. Twoje rozwiązanie wymagałoby od człowieka zalogowania się do komputera przed uruchomieniem serwera Node.js. A jeśli jakiś problem spowoduje ponowne uruchomienie serwera z dnia na dzień, aplikacja nigdy nie wróci do życia, dopóki człowiek się nie zaloguje.W przypadku niektórych osób będzie to działać:
Możesz po prostu dodać następujące polecenie do Systemu → Preferencje → Aplikacje startowe :
źródło