I want to run a script as soon as my lightdm authentication succeed, and my Unity starts loading. and i want to run my scripts as a root user.
where are startup scripts located in Unity ?
I want to run a script as soon as my lightdm authentication succeed, and my Unity starts loading. and i want to run my scripts as a root user.
where are startup scripts located in Unity ?
First put your script into /usr/bin
and give execute permission.
Now create .desktop file in /home/[user-name]/.config/autostart/
which run your script which runs at startup.
Example:- Let your filename of script is "example" or "example.sh"
Create .desktop file with gedit with following lines and save as filename.desktop in /home/[user-name]/.config/autostart/
[Desktop Entry]
Type=Application
Exec=sudo example
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=myscript
Comment=Startup Script
Here Exec=sudo example
or Exec=sudo example.sh
runs your script as a root from /usr/bin
Give execute permission to .desktop file.
Now, Script runs on startup.
Another possibility:
Create a file in $HOME/.config/upstart/my-upstart-script.conf
start on desktop-start
stop on desktop-end
script
sudo fdisk -l > /home/[user-name]/upstart-test.txt
end script
Further details to Upstart:
http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html
http://upstart.ubuntu.com/cookbook/
Infos to run sudo
without password:
/home/yourusername/.config/upstart/
. Open your home director in nautilus, press Ctrl+H and you should see the directory .config
– TuKsn
Jun 13 '14 at 21:39
To run a command as root, after login, there is another simple trick:
It takes two steps:
/etc/crontab
), to run a tiny script (running your command) if and only if the trigger file exists. Since the trigger file is removed by the same script, your command only runs once.The sequence then is:
USER LOGIN > trigger file is created > cronjob runs script (with your command) and removes trigger file, > next time the script passes, since the trigger file does not exist anymore
The setup
The two small scripts:
One to create the trigger file on login:
#!/bin/sh
touch $HOME/.trigger
and one two run the command:
#!/bin/bash
FILE="/path/to/your/homedirectory/.trigger"
# don't use $HOME here, since you run it by root
if [ -f $FILE ]; then
<your command here, run by root>
rm -f $FILE
fi
create_trigger.sh
and run_command.sh
. Add the following command to your Startup Applications (Dash > Startup Applications > Add)
/path/to/create_trigger.sh
Add the following line to the /etc/crontab
file (sudo nano /etc/crontab
):
* * * * * root /path/to/run_command.sh
Now the defined command runs a single time within one minute from login.