Unity Desktop的启动脚本在哪里?

我想在lightdm身份validation成功后立即运行脚本,我的Unity开始加载。 我想以root用户身份运行我的脚本。

Unity中的启动脚本在哪里?

首先将您的脚本放入/usr/bin并授予执行权限。

现在在/home/[user-name]/.config/autostart/创建.desktop文件,它运行在启动时运行的脚本。

示例: – 让脚本的文件名为“example”或“example.sh”

使用带有以下行的gedit创建.desktop文件,并在/home/[user-name]/.config/autostart/另存为filename.desktop

 [Desktop Entry] Type=Application Exec=sudo example Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true Name=myscript Comment=Startup Script 

这里Exec=sudo exampleExec=sudo example.sh/usr/bin 为根运行您的脚本 .desktop文件授予执行权限。

现在,Script在启动时运行。

另一种可能性

$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 

Upstart的更多细节:

http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html

http://upstart.ubuntu.com/cookbook/

没有密码运行sudo

如何在没有密码的情况下使用sudo运行应用程序?

如何在没有密码的情况下运行特定的sudo命令?

以root身份运行命令,登录后还有另一个简单的技巧:

它需要两个步骤:

  • 在登录时创建触发器文件
  • 且仅触发器文件存在时,创建一个由root运行的cronjob(在/etc/crontab ),以运行一个小脚本(运行您的命令)。 由于触发器文件由同一脚本删除,因此您的命令只运行一次。

那么顺序是:

 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 

设置

两个小脚本:

一个在登录时创建触发器文件:

 #!/bin/sh touch $HOME/.trigger 

并且一个运行命令:

 #!/bin/bash FILE="/path/to/your/homedirectory/.trigger" # don't use $HOME here, since you run it by root if [ -f $FILE ]; then  rm -f $FILE fi 
  • 将两个脚本复制到两个空文件中,将它们保存为create_trigger.shrun_command.sh
  • 为方便起见,使它们都是可执行的。
  • 将以下命令添加到启动应用程序(Dash>启动应用程序>添加)

     /path/to/create_trigger.sh 
  • 将以下行添加到/etc/crontab文件( sudo nano /etc/crontab ):

     * * * * * root /path/to/run_command.sh 

现在,已定义的命令在登录后的一分钟内运行一次。