Of course, now you have duplicate screensavers running, and it's not apparent in the process listing which one belongs to which X server. I certainly don't want to kill the real screensaver on :0, leaving my local console unlocked!
$ ps ax|grep screensave
6166 ? S 16:30 xautolock -time 1 -locker xscreensaver-command -lock -detectsleep -corners -+00 -cornerdelay 1
17200 ? S 9:25 xscreensaver -nosplash
25747 ? S 7:13 xautolock -time 1 -locker xscreensaver-command -lock -detectsleep -corners -+00 -cornerdelay 1
56143 pts/17 SN+ 0:00 grep --color=auto screensave
140723 ? S 0:07 xscreensaver -nosplash
Seeing as the DISPLAY var is a part of the environment where the X application was invoked, it should be in:
/proc/<PID>/environ
cat /proc/<PID>/environ gives a whole block of unbroken text (unsure why this is not broken), but if you look closely you'll find the DISPLAY variable in there.
The awk command was borrowed from elsewhere on the Internet. It basically says, break things apart using '=' as a field separator (FS) and \0 as a return separator (RS). I tried investigating this further, seeing as '\0' is the null return used in some GNU utils including xargs, went down the following path:
This seemed like the most straightforward way to break it out:
/bin/echo -e $(cat /proc/137572/environ)
However the output was still not broken into lines. Oh well.
Note the use of /bin/echo as echo is usually a shell built-in.
Anyway, let's use awk like I mentioned before, by substituting the PIDs I found above.
PID=17200
$ awk 'BEGIN{FS="="; RS="\0"} $1=="DISPLAY" {print $2; exit}' /proc/$PID/environ
:0
Well that's not it.
PID=140723
$ awk 'BEGIN{FS="="; RS="\0"} $1=="DISPLAY" {print $2; exit}' /proc/$PID/environ
:20
Bingo.
Tie it together loosely:
for PID in $(pgrep xscreensa); do echo -n $PID; awk 'BEGIN{FS="="; RS="\0"} $1=="DISPLAY" {print $2; exit}' /proc/$PID/environ;done
6166:0
25747:20
Now I can quickly tell which processe below to which DISPLAY.
Now I can quickly tell which processe below to which DISPLAY.
No comments:
Post a Comment