Linux bash Script?
#!/usr/bin/env bash
set -e
cd ~/Desktop/Folder/
source ~/Desktop/Folder/.venv/bin/activate
Ich kann dieses Script selber über ein offenes cmd Fenster ausführen mit dem Befehl:
source ~/Desktop/start.sh
und im offenen cmd Fenster bin ich dann im richtigen Pfad und das venv ist aktiviert.
Um das jetzt noch weiter zu automatisieren, möchte ich, dass direkt bei Systemstart ein neues cmd fenster geöffnet wird und darin der Befehl "source ~/Desktop/start.sh" ausgeführt wird. Wie kriege ich das hin?
Warum benutzt Du nicht direkt die Autostart-Funktion deiner Distribution um Befehle auszuführen?
Was?
1 Antwort
Dafür muss nicht jedesmal die Konsole geöffnet werden, das kann man im Hintergrund ausführen.
Das Ganze geht über cronjob, systemd etc pp
Die in meinen Augen beste Variante :
SystemdDafür brauchen wir
- Skript
- Service
Dafür erstellst du ein Skript, das hast du schon also kannst du das auch überspringen.
sudo nano /path/to/script.sh
Mit folgendem Inhalt
#!/bin/bash
Das was das Skript halt machen soll, oder eben der Befehl
Das Skript muss nun ausführenbar gemacht werden
sudo chmod -x /path/to/script.sh
Ausprobieren ob dein Skript macht was es soll kannst du mit
sh /path/to/script.sh
Service
Danach brauchen wir noch den Service der dieses Skript ausführt
sudo nano path/toService/Name.service
Diese Datei muss folgenden inhalt haben
[Unit]
Description=was macht der Service
[Service]
ExecStart=/path/to/script.sh
Type=simple
[Install]
WantedBy=multi-user.target
Das Ganze denn speichern und
sudo chmod 644 path/toService/Name.service
Danach
sudo systemctl enable Name.service
sudo systemctl start Name.service
Ob der Service Job läuft siehst du hier
sudo systemctl status Name.service
Wie du dir denken kannst habe ich natürlich ein paar Platzhalter verwendet
/path/to/script.sh >>> das wäre dort wo du deine Skripte speichern willst und halt auch den Namen dafür verwenden
Name.service >>> hier ist Name der Platzhalter und kann von dir relativ frei gewählt werden (sofern der Name noch frei ist)
Das das Ganze über das Terminal einzugeben ist, erklärt sich hoffentlich selbst. In meinem Beispiel wäre es ein Service der startet bei Start des PCs. Dies lässt sich natürlich beliebig erweitern oder modifizieren.
Bspw mit :
Wenn erst ein anderer Service gestartet werden muss bevor dein Service Aktiv ist
Requires=xyz.service
Versuch mal
#!/usr/bin/env bash
cd ~/Desktop/Test/
source ~/Desktop/Test/.venv/bin/activate
adb connect 192.1.1.1:5555
buildozer -v android debug deploy run logca
Danke für die perfekte Anleitung, probiere ich gleich morgen mal aus!
Ich hätte noch ein kleines Problem nebenbei... wenn ich das Script ausführe und Ctrl + c drücke um eine adb verbindung zu beenden, schließt sich direkt das gesamte cmd Fenster. Wie schaffe ich es, dass nur der adb Prozess beendet wird?
So sieht es gerade aus: