Linux bash Script?

stealthuser  19.01.2025, 21:44

Warum benutzt Du nicht direkt die Autostart-Funktion deiner Distribution um Befehle auszuführen?

hiwhatsup22 
Beitragsersteller
 19.01.2025, 21:48

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 :

Systemd

Dafür brauchen wir

  • Skript
  • Service
Skript

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

hiwhatsup22 
Beitragsersteller
 19.01.2025, 22:09

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:

#!/usr/bin/env bash

set -e
cd ~/Desktop/Test/
source  ~/Desktop/Test/.venv/bin/activate
adb connect 192.1.1.1:5555

buildozer -v android debug deploy run logcat 
anTTraXX  19.01.2025, 22:18
@hiwhatsup22

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
hiwhatsup22 
Beitragsersteller
 19.01.2025, 21:58

Danke für die perfekte Anleitung, probiere ich gleich morgen mal aus!