Karl Pearson wrote:
On Mon, February 9, 2009 3:25 pm, Ray Van Dolson wrote:
On Mon, Feb 09, 2009 at 02:21:24PM -0800, redhat buglecreek com
wrote:
I'm am writing a script that sets some various security settings on
Redhat Boxes. I would like to try to determine if a gui may be
running
on the box the script is run on. If so, I would echo some
additional
text to stdout that instructs the user that they may required to
manually perform some additional settings manually. Things having
to
do
with screen savers. Anyway, I thought about the following:
1. use the runlevel command or who -r to see if the system is in
runlevel 5. This seems flawed since the box may have been started
in
runlevel 3 and the startx command may have been used. The commands
would
show runlevel 3.
2. Check if the environment variable DISPLAY is set. If so, seems
like
there is a good chance that they are running a gui. (maybe)
DISPLAY is set by the user's login process, so it would be empty for a
cron job.
Is there a better way to check this that anyone can think of?
Would it be sufficient for your needs to check is the X process is
running?
Theoretically, there is probably some way to interact with a running
X
server directly from a script (even if you're not in control of its
terminal) to determine if it's running.
The easiest way is a small shell script:
#!/bin/bash
RES=`ps ax | grep -v grep | grep -i xorg`
if [ $? -eq 0 ]; then
echo X is running
else
echo X is NOT running
fi
(substitute the name of your X server for "xorg" if you're not running
XOrg). On top of that, $RES will be empty if X isn't running, and will
contain the line from "ps ax" describing it if X is running.
This should work regardless of if the machine starts X by going into run
level 5 and firing up a greeter or startx from some other run level. It
looks for the instance of the X server itself.
Also, X typically listens on port 6000 locally.
Not unless you TELL it to. It will listen on local Unix domain ports,
but not TCP/IP.
I suspect I've confused more than helped, but ask away and someone
smarter than me will respond.
The shell snippet I provided