I am running Ubuntu 14.04 and user name is pandya.
pandya@pandya-desktop:~$ gnome-session-quit
When above command run without being sudo (sudo su
) in terminal, it successfully logs out.
But when running after sudo (as a root),
root@pandya-desktop:/home/pandya# gnome-session-quit
It gives error :
** (gnome-session-quit:3168): WARNING **: Failed to call logout: The name org.gnome.SessionManager was not provided by any .service files
So, because of being root, I tries to running command with sudo -u pandya gnome-session-quit
to run command as a user pandya. But it gives same error.
Then I tries follwing to run as pandya:
root@pandya-desktop:/home/pandya# su pandya
pandya@pandya-desktop:~$ gnome-session-quit
** (gnome-session-quit:3269): WARNING **: Failed to call logout: The name org.gnome.SessionManager was not provided by any .service files
But it gives same error.
Hence, My question is: How to logout as a root? Because I want to put gnome-session-quit
in sctipt which is to be run as root. (I don't want to kill forcefully process but want to normal logout prompt)
Further Specification:-
I have script which is to be run as root.
#! /bin/bash
....command to be executed.....
sudo -u pandya gnome-session-quit
Best Answer
I'm not entirely sure what you're trying to do but the reason the
sudo
command is failing is because you have started the X server aspandya
and are not exporting pandya's environment variables that allow you to communicate with the running Gnome session.So, this will allow you to kill your Gnome session:
From
man sudo
:If you want to have a script that runs some commands as root and then want it to be able to log you out, you can do it as follows:
Create the script, without
sudo
for the privileged commands but withsudo
for the logout. For example:Run the script with
sudo -E
:The
sudo -E script.sh
ensures that your env variables are available to the script and thesudo -E -u pandya
ensures that they are passed on to thegnome-session-quit
call.