Ausgabe umleiten in Datei in Python3

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Knuffi
User
Beiträge: 62
Registriert: Dienstag 28. Oktober 2014, 19:52

Hallo Leute,

Printausgaben in eine .txt umzuleiten ist kein Problem.

aber wie leite ich die Ausgabe von

pidof programmname

in eine Datei um?

Wer hat einen Tip.

Danke

Knuffi
geraldfo
User
Beiträge: 73
Registriert: Samstag 28. Januar 2023, 20:19
Wohnort: Nähe Wien
Kontaktdaten:

pidof programmname > datei

LG
Knuffi
User
Beiträge: 62
Registriert: Dienstag 28. Oktober 2014, 19:52

Danke
Habe auch probiert, kam keine Fehlermeldung. Nur habe ich diese Datei nirgends gefunden. Wo wird diese im Raspberry PI 3 abgespeichert.
geraldfo
User
Beiträge: 73
Registriert: Samstag 28. Januar 2023, 20:19
Wohnort: Nähe Wien
Kontaktdaten:

Ich gehe davon aus, dass du das Kommando in der Befehlszeile aufrufst.
In allen mir bekannten System wird datei im aktuellen Arbeitsverzeichnis abgelegt.

Achte darauf, dass eine gleichnamige Datei in diesem Verzeichnis noch nicht existiert. Sie würde sonst überschrieben werden.

Hat nichts mit Python zu tun.
Knuffi
User
Beiträge: 62
Registriert: Dienstag 28. Oktober 2014, 19:52

Ok. Danke mal daddeln was beim Raspberry 3 das Arbeitsverzeichnis ist, im Home/user ist nichts abgespeichert
Knuffi
User
Beiträge: 62
Registriert: Dienstag 28. Oktober 2014, 19:52

Alles klar, ich Pappnase der Pfad kommt vorher
pidof gnokii > /home/user/test.txt

Danke für die Hilfe.
Klasse
Benutzeravatar
DeaD_EyE
User
Beiträge: 1224
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Das hier ist ein Forum über Python, also gehe ich mal von aus, dass du mit Python die pid-Datei öffnen und irgendwas damit machen willst.

Da unter Linux so gut wie alles eine Datei ist, kommt man an die Namen der laufenden Programme ziemlich einfach.
Zu finden ist der Name in /proc/<PID>/comm.

Wenn man das z.B. mit Python machen will:

Code: Alles auswählen

from pathlib import Path


def pidof(name: str) -> list[int]:
    return [
        int(match.parent.name)
        for match in Path("/proc/").glob("*/comm")
        if match.read_text().rstrip() == name
    ]


pidof(name="bash")
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
__blackjack__
User
Beiträge: 14005
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Oder „cross platform“ mit dem `psutil`-Modul:

Code: Alles auswählen

#!/usr/bin/env python3
import psutil


def pidof(name):
    return [
        process.pid
        for process in psutil.process_iter(["name"])
        if process.info["name"] == name
    ]


def main():
    print(pidof("apache2"))


if __name__ == "__main__":
    main()
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Benutzeravatar
DeaD_EyE
User
Beiträge: 1224
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Ja, das ist auf jeden Fall die bessere Lösung, da man sich selbst nicht um die Unterschiede des OS kümmern muss.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten