Unity Desktop的启动脚本在哪里?


11

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

Unity中的启动脚本在哪里?


我想在X加载后运行脚本。
2014年


@Shnd X实际上在lightdm之前启动,因为lightdm也在X中运行。因此,如果您想以用户身份运行某些内容,则可能希望它在“ lightdm身份验证成功后”或换句话说“在桌面启动时”运行。当您仅使用bootet引导计算机时,也可以运行脚本,而不管是否有登录用户(例如,以X开头的用户),这都是一个完全不同的问题。如果要以用户身份运行某些内容,则可能需要这样做,答案取决于您的init系统。
erikbwork 2014年

Answers:


5

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

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

示例:-让您的脚本文件名是“ example”或“ example.sh”

使用gedit使用以下行创建.desktop文件,并将其另存为filename.desktop /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

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

现在,脚本在启动时运行。


1
有关在没有密码的情况下运行sudo的信息,请参见askubuntu.com/questions/39281/…–
Pandya

谢谢你的工作。但是有了暴发户,您可以使同一件事变得简单一些(请看我的回答)。
TuKsn 2014年


我认为.desktop文件不需要标记为可执行文件。
朱利安

4

另一种可能性:

在以下位置创建文件 $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命令?


“ $ HOME / .config / upstart”在我的机器上没有这样的目录。
卡拉马卡小子”

1
@KalamalkaKid您使用哪个Ubuntu版本?新贵目录应位于此位置/home/yourusername/.config/upstart/。在鹦鹉螺中打开您的家庭主管,按Ctrl + H,您应该看到目录.config
TuKsn 2014年

2

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

这需要两个步骤:

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

然后,顺序为:

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
   <your command here, run by root>
   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
    

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.