Jak uruchomić skrypt powłoki przy starcie
Na instancji amazon linux, mam dwa skrypty o nazwie start_my_app
i stop_my_app
które uruchamiają i zatrzymują forever (który z kolei uruchamia mój węzeł.aplikacja js). Używam tych skryptów do ręcznego uruchamiania i zatrzymywania aplikacji węzła. Jak na razie dobrze.
Mój problem: chcę również skonfigurować go tak, aby start_my_app
był uruchamiany zawsze, gdy system się uruchomi. Wiem, że muszę dodać plik wewnątrz init.d
i wiem, jak dowiązać go symbolicznie do odpowiedniego katalogu w rc.d
, ale nie wiem, co właściwie musi wejść do pliku, który umieszczam w init.d
. Myślę, że to powinna być tylko jedna linijka, start_my_app
, ale to nie działa dla mnie.
15 answers
W pliku, który umieścisz /etc/init.d/
Musisz ustawić go jako wykonywalny za pomocą:
chmod +x /etc/init.d/start_my_app
Dzięki @meetamit, jeśli to nie działa, musisz utworzyć dowiązanie symboliczne do /etc/rc.d/
ln -s /etc/init.d/start_my_app /etc/rc.d/
Zwróć uwagę, że w najnowszym Debianie nie będzie to działać, ponieważ twój skrypt musi być zgodny z LSB (podaj przynajmniej następujące akcje: start, stop, restart, force-reload i status): https://wiki.debian.org/LSBInitScripts
Jako notatkę należy podać ścieżkę bezwzględną skryptu zamiast względnej, może rozwiązać nieoczekiwane problemy:
/var/myscripts/start_my_app
I nie zapomnij dodać na górze tego pliku:
#!/bin/sh
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-19 08:49:47
Ustaw crontab dla tego
#crontab -e
@reboot /home/user/test.sh
Po każdym uruchomieniu uruchomi skrypt testowy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-25 05:12:44
Proste podejście polega na dodaniu linii w /etc/rc.local
:
/PATH/TO/MY_APP &
Lub jeśli chcesz uruchomić polecenie jako root:
su - USER_FOOBAR -c /PATH/TO/MY_APP &
(końcówka ampersand tła proces i pozwala na rc.local to continue executing)
Jeśli chcesz mieć pełny skrypt init, Dystrybucja Debiana ma plik szablonu, więc:
cp /etc/init.d/skeleton /etc/init.d/your_app
I dostosować go trochę.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-30 13:57:24
Tak to robiÄ™ na systemach red-hat
Umieść swój skrypt w /etc/init.d
, należący do roota i wykonywalny. Na górze skryptu możesz podać dyrektywę dla chkconfig
. Przykład: poniższy skrypt służy do uruchomienia aplikacji java jako użytkownika oracle.
Nazwa skryptu to /etc/init.d/apex
#!/bin/bash
# chkconfig: 345 99 10
# description: auto start apex listener
#
case "$1" in
'start')
su - oracle -c "cd /opt/apex ; java -jar apex.war > logs/apex.log 2>logs/apex_error.log &";;
'stop')
echo "put something to shutdown or kill the process here";;
esac
To mówi, ż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
, aby włączyć lub wyłączyć skrypt przy starcie,
chkconfig --list apex
chkconfig --add apex
I możesz użyć usługi start / stop apex
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-20 20:59:42
InnÄ… opcjÄ… jest posiadanie polecenia @ reboot w crontabie.
Nie każda wersja cron obsługuje to, ale jeśli twoja instancja jest oparta na Amazon Linux AMI, to będzie działać.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-10 19:07:06
Wystarczy dodać wiersz do crontab..
Upewnij się, że plik jest wykonywalny:
chmod +x /path_to_you_file/your_file
Aby edytować plik crontab:
crontab -e
Wiersz, który musisz dodać:
@reboot /path_to_you_file/your_file
To proste!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-10 14:07:22
Wpisz cron
używając sudo
:
sudo crontab -e
Dodaj polecenie do uruchomienia po uruchomieniu, w tym przypadku skrypt:
@reboot sh /home/user/test.sh
Zapisz:
naciśnij ESC, a następnie :x, aby zapisać i zakończyć, lub naciśnij ESC, a następnie ZZ (to shift+zz)
Test Test :
Uruchom skrypt testowy bez crona, aby upewnić się, że faktycznie działa.
Upewnij się, że zapisałeś polecenie w cron, użyj
sudo crontab -e
Reboot the serwer, aby potwierdzić to wszystko działa
sudo @reboot
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-06 16:49:12
Możesz to zrobić:
chmod +x PATH_TO_YOUR_SCRIPT/start_my_app
Następnie użyj tego polecenia
update-rc.d start_my_app defaults 100
Zobacz tÄ™ stronÄ™ na Cyberciti .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-05 08:54:12
Utwórz własny / init wykonywalny
To nie jest to, czego chcesz, ale to jest zabawa!
Po prostu wybierz dowolny plik wykonywalny, nawet skrypt powłoki i uruchom jądro z parametrem linii poleceń:
init=/path/to/myinit
Pod koniec rozruchu, jądro Linuksa uruchamia pierwszy plik wykonywalny w przestrzeni użytkownika na podanej ścieżce.
Kilka projektów dostarcza popularne init
Pliki Wykonywalne używane przez duże dystrybucje, np. systemd, a w większości dystrybucji init będzie rozwidlał kilka procesów stosowanych w normalnej pracy systemu.
Ale możemy przechwycić /init
aby uruchomić własne Minimalne skrypty, aby lepiej zrozumieć nasz system.
Oto minimalna powtarzalna konfiguracja: https://github.com/cirosantilli/linux-kernel-module-cheat/tree/f96d4d55c9caa7c0862991025e1291c48c33e3d9/README.md#custom-init
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-01 18:29:47
Dla Debiana 9 Zobacz https://askubuntu.com/questions/228304/how-do-i-run-a-script-at-start-up . to mi pomogło. Krótka wersja dla Debiana 9: Dodaj polecenia (jako root) do / etc / rc.local
/path_to_file/filename.sh || exit 1 # Added by me
exit 0
Prawdopodobnie, /path_to_file/filename.sh powinien być wykonywalny (tak mi się wydaje).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-13 12:22:42
Absolutną najprostszą metodą, jeśli chcesz uruchomić prosty skrypt (lub cokolwiek), jest to, jeśli masz gui do użycia system > Preferencje, a następnie uruchom aplikacje.
Po prostu przejdź do skryptu, który chcesz i gotowe. (make script executable)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-24 03:18:05
To proste rozwiązanie działało dla mnie na instancji Amazon Linux z systemem CentOS.
Edytuj swój plik /etc/rc.d/rc.local
i umieść tam polecenie. W tym pliku jest napisane, że zostanie on wykonany Po wszystkich innych skryptach init. Więc bądź ostrożny w tym względzie. Tak obecnie wygląda ten plik.. Ostatnia linijka to nazwa mojego scenariusza.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-27 11:02:13
- Dodaj swój skrypt do /etc / init.d / katalog
- Zaktualizuj swoje poziomy RC:
$ update-rc.d myScript.sh defaults NN
gdzie NN jest kolejnością wykonania. 99 oznacza na przykład, że będzie uruchamiany po 98 i przed 100.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-17 19:03:29
Dla niektórych to zadziała Możesz po prostu dodać następujące polecenie do System > Preferencje>aplikacje startowe:
bash /full/path/to/your/script.sh
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-27 13:59:44
Jeśli chcesz umieścić startup również możesz użyć
Przede wszystkim Przenieś swój skrypt / etc / init.d wtedy chmod 777 / etc / init.d / nazwa skryptu
Po zastosowaniu polecenia
Update-rc.d Twój skrypt domyślnie usunąć update-rc.d-f Twój skrypt Usuń
Przy starcie widać, że aplikacja będzie działać.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-29 20:28:35