• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

who zeigt KDE Benutzer nicht an

f.gruber

Hacker
Wieder mal was Neues:

Ich hab seit Jahren ein Backupskript im Einsatz, das nur dann mit dem Backup beginnt, wenn kein Benutzer am System angemeldet ist. Dazu frage ich die Anzahl der angemeldeten Benutzer ab:
Code:
AnzahlUser=`who | wc -l`
Seit Upgrade auf Suse Leap 42.1 funktioniert das plötzlich nicht mehr. Ein in KDE angemeldete User erscheint anscheinend nicht mehr in der Ausgabe von who.
Wenn ich mich mit diesem PC per SSH verbinde, sehe ich die Bestätigung dieser Vermutung, weil mir der obige Befehl nur den per SSH angezeigten Benutzer zeigt. Der gleichzeitig über KDE eingeloggte User wird nicht angezeigt.

Hat da jemand einen lehrreichen Tipp für mich.
 
Ich habe kein suse, aber versuch mal ob der User per "who -a" aufgelistet wird. ZB who -m zeigt laut man-page nur Benutzer an die die Standardeingabe verwenden, evtl. ist das ja als default gesetzt?
 
OP
F

f.gruber

Hacker
Geier0815 schrieb:
... versuch mal ob der User per "who -a" aufgelistet wird. ...
Code:
# who -a
          Systemstart  2016-01-08 10:14                                                                       
          Runlevel 5   2016-01-08 10:14                                                                       
LOGIN     tty1         2016-01-08 10:14          775 id=tty1                                  
root      + pts/0        2016-01-08 11:38   .    3283 (xxx-xxx-xxx-xxx.adsl.highway.telekom.at)
Man sieht, dass root eingeloggt ist. Der Name des über KDE eingeloggte Benutzers erscheint nicht in der Ausgabe.
 
Du hast ein Terminal innerhalb deiner KDE-Session aufgemacht oder wie kommt root auf pts0? Versuch das ganze mal von tty1 aus <STRG><ALT><F1> drücken und anmelden. Was kommt dabei raus wenn Du vorher alle Konsolenprogramme im KDE schließt?

Sollten wir dem Ganzen nicht auf die Schliche kommen, kannst Du ja statt per who zu checken ob wer angemeldet ist, gucken ob kdm (oder was Du da auch verwendest) unten ist, oder sicherst Du bei laufendem KDE?
 
OP
F

f.gruber

Hacker
Geier0815 schrieb:
Du hast ein Terminal innerhalb deiner KDE-Session aufgemacht oder wie kommt root auf pts0? Versuch das ganze mal von tty1 aus <STRG><ALT><F1> drücken und anmelden. Was kommt dabei raus wenn Du vorher alle Konsolenprogramme im KDE schließt?
Habe kein Terminal innerhalb der KDE Sitzung aufgemacht. Der Rechner steht 30 km von mir entfernt, ich kann also nicht <STRG><ALT><F1> drücken. Auf dem Rechner ist ein Benutzer über KDE eingeloggt. Ich weiß das, weil ich über x11vnc nachgeschaut habe. Ich logge mich nun über SSH ein und erhalte die oben gepostete Ausgabe von who -a. Also nichts zu sehen von dem Benutzer, der über KDE eingeloggt ist und fleißig arbeitet :irre:

... kannst Du ja statt per who zu checken ob wer angemeldet ist, gucken ob kdm (oder was Du da auch verwendest) unten ist, oder sicherst Du bei laufendem KDE?

Ich sichere nicht bei laufendem KDE!
Ein cronjob startet alle 10 Minuten das Backupskript, welches als erstes feststellt, ob jemand eingeloggt ist, eben über den Befehl who | wc -l. Wenn die Ausgabe dieses Befehls 0 ist, dann wird das Backup über rsync angestoßen und der PC anschließend heruntergefahren, sonst endet das Script ohne was zu tun. Ich verwende das auf mehreren Rechnern schon lange so und es hat bisher funktionert.

Wenn es aber eine andere Methode gibt, um festzustellen, ob ein Benutzer über KDE eingeloggt ist, kann ich das ja ändern. Deinen Hinweis auf kdm verstehe ich nicht ganz.
 
OP
F

f.gruber

Hacker
Habe jetzt folgenden Lösungsansatz versucht:
Code:
desktopList="kwin openbox"
for desktop in $desktopList ; do
	if [ `ps -e | grep $desktop | wc -l` -eq 0 -a `who | wc -l` -eq 0 ] 
		then readyToStart="true" 
	else readyToStart="false" 
done
if [ $readyToStart = "true"  ] ; then
   ....  backup wird durgeführt
fi
Es wird überprüft, ob ein grafischer Desktop läuft (die Liste ist erweiterbar)
Es wird auch überprüft, ob kein User eingeloggt ist, nämlich möglicherweise ich selber per SSH :D.
Scheint zu funktionieren, muss es noch eingehend testen.
 
Oben