484 Stimmen

Wie führt man ein Shell-Skript beim Start aus

Auf einer Amazon S3 Linux-Instanz habe ich zwei Skripte namens start_my_app und stop_my_app, die forever starten und beenden (was dann meine Node.js-Anwendung ausführt). Ich verwende diese Skripte, um meine Node.js-Anwendung manuell zu starten und zu stoppen. Soweit so gut.

Mein Problem: Ich möchte auch einrichten, dass start_my_app jedes Mal ausgeführt wird, wenn das System hochfährt. Ich weiß, dass ich eine Datei in init.d hinzufügen muss und ich weiß, wie ich sie in das entsprechende Verzeichnis innerhalb von rc.d verknüpfen muss, aber ich kann nicht herausfinden, was tatsächlich in die Datei kommen muss, die ich in init.d platziere. Ich denke, es sollte nur eine Zeile sein, wie z.B. start_my_app, aber das hat bei mir nicht funktioniert.

5 Stimmen

Ich bin kein Experte in dieser Art von Dingen, aber ich denke, die init.d-Lösung (hier) sollte der rc.local-Lösung vorgezogen werden, da letztere das alte Werkzeug ist, das nur noch verwendbar ist, weil das neue Werkzeug abwärtskompatibel ist.

0 Stimmen

Pm2 start my_app; pm2 startup; pm2 save github.com/Unitech/pm2 pm2 start my_app; pm2 startup; pm2 speichern github.com/Unitech/pm2

0 Stimmen

Im Raspbian gibt es eine .config/lxsession/LXDE-pi/autostart, die für mich besser funktioniert hat - gibt es ein Äquivalent in anderen Betriebssystemen? Der Grund, warum es für mich besser funktioniert hat, war, dass nicht alles (in meinem Fall Apache) initialisiert wird, wenn rc.local ausgeführt wird, während autostart der Start der Benutzersitzung ist und daher so ziemlich alles zu diesem Zeitpunkt initialisiert werden sollte.

1voto

aerijman Punkte 2219

In Lubuntu musste ich mit der gegenteiligen Situation umgehen. Skype startete nach dem Booten und ich fand in ~/.config/autostart/ die Datei skypeforlinux.desktop. Der Inhalt der Datei ist wie folgt:

[Desktop Entry]
Name=Skype für Linux
Comment=Skype Internet-Telefonie
Exec=/usr/bin/skypeforlinux
Icon=skypeforlinux
Terminal=false
Type=Anwendung
StartupNotify=false
X-GNOME-Autostart-enabled=true

Das Löschen dieser Datei hat mir geholfen.

1voto

akbar ali Punkte 25

Hier ist eine einfachere Methode!

Erstens: Schreiben Sie ein Shell-Skript und speichern Sie es als .sh hier ist ein Beispiel

#!/bin/bash
Icoff='/home/akbar/keyboardONOFF/icon/Dt6hQ.png'
id=13
fconfig=".keyboard"
echo "disabled" > $fconfig
xinput float $id
notify-send -i $Icoff "Interne Tastatur deaktiviert";

dieses Skript deaktiviert die interne Tastatur beim Start.

Zweitens: Öffnen Sie die Anwendung "Startanwendungseinstellungen"

Bildbeschreibung eingeben

Bildbeschreibung eingeben

Drittens: Klicken Sie auf Hinzufügen. viertens: Geben Sie im NAMEN-Bereich einen Namen ein. fünftens: Gehen Sie im Befehlsbereich zu Ihrer .sh . sechstens: Bearbeiten Sie Ihren Befehlsbereich zu:

bash  pfad/zur/datei/.sh  --start

siebtens: Klicken Sie auf Hinzufügen. Das war's! Fertig!

Bestätigen Sie jetzt durch Neustarten Ihres PCs.

Prost!

1 Stimmen

Dies ist nur für einige Desktop-Umgebungen anwendbar

1voto

Mikhail Ionkin Punkte 539

Für Debian 9 siehe https://askubuntu.com/questions/228304/how-do-i-run-a-script-at-start-up. Es hat mir geholfen. Kurze Version für Debian 9: Befehle hinzufügen (als Root) zu /etc/rc.local

/path_to_file/filename.sh ||  exit 1   # Von mir hinzugefügt
exit 0

Wahrscheinlich sollte /path_to_file/filename.sh ausführbar sein (denke ich).

0voto

Juko Punkte 39

Schmerzloses, einfachstes und universellstes Methode ist einfach, es mit ~.bash_profile oder ~.profile auszuführen (wenn Sie keine bash_profile-Datei haben).

Fügen Sie einfach den Ausführungsbefehl am Ende dieser Datei hinzu und er wird ausgeführt, wenn das System gestartet wird.

Ich habe hier unten ein Beispiel; ~\Desktop\sound_fixer.sh

4 Stimmen

Das ist nicht korrekt. ~/.bash_profile wird ausgeführt, wenn sich der Benutzer anmeldet - nicht wenn das System hochgefahren wird. In der ursprünglichen Frage soll ein Node.js-App-Server beim Start des Computers ausgeführt werden. Deine Lösung würde erfordern, dass sich ein menschlicher Benutzer zuerst am Computer anmeldet, bevor der Node.js-Server startet. Und wenn aus irgendeinem Grund ein Server während der Nacht neu gestartet wird, wird die App nie wieder zum Leben erweckt, bis der Mensch sich erneut anmeldet.

0voto

Renan Moura Punkte 47

Bei der Arbeit mit Python 3 Mikroservices oder der Shell; Verwendung von Ubuntu Server 18.04 (Bionic Beaver) oder Ubuntu 19.10 (Eoan Ermine) oder Ubuntu 18.10 (Cosmic Cuttlefish) mag ich immer diese Schritte, und es hat auch immer funktioniert:

  1. Erstellen eines Mikroservices namens p Beispiel "brain_microservice1.service" in meinem Fall:

    $ nano /lib/systemd/system/brain_microservice1.service
  2. Innerhalb dieses neuen Dienstes, in dem Sie sich befinden:

    [Unit]
    Description=brain_microservice_1
    After=multi-user.target
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/python3.7 /root/scriptsPython/RUN_SERVICES/microservices    /microservice_1.py -k start -DFOREGROUND
    ExecStop=/usr/bin/python3.7 /root/scriptsPython/RUN_SERVICES/microservices/microservice_1.py -k graceful-stop
    ExecReload=/usr/bin/python3.7 /root/scriptsPython/RUN_SERVICES/microservices/microservice_1.py -k graceful
    PrivateTmp=true
    LimitNOFILE=infinity
    KillMode=mixed
    Restart=on-failure
    RestartSec=5s
    
    [Install]
    WantedBy=multi-user.target
  3. Geben Sie die Berechtigungen:

    $ chmod -X /lib/systemd/system/brain_microservice*
    $ chmod -R 775 /lib/systemd/system/brain_microservice*
  4. Geben Sie dann die Ausführungsberechtigung:

    $ systemctl daemon-reload
  5. Aktivieren Sie dann, das wird sie immer beim Start starten lassen

    $ systemctl enable brain_microservice1.service
  6. Dann können Sie es testen;

    $ sudo reboot now

  7. Ende = ERFOLG!!

Dies kann mit dem gleichen Skript im Body erfolgen, um die Shell, React ... Datenbankstartskript ... beliebigen Code ... auszuführen ... hoffe das hilft Ihnen...

...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X