Unity Desktop 的启动脚本在哪里?

Unity Desktop 的启动脚本在哪里?

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

启动脚本在 Unity 中的什么位置?

答案1

首先将您的脚本放入/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 文件执行权限。

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

答案2

另一种可能性:

在中创建文件$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

更多详情暴发户

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

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

无需密码运行的信息sudo

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

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

答案3

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

它需要两个步骤:

  • 创建一个扳机登录时的文件
  • 创建一个 cronjob,由 root 运行(在 中设置/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
   <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
    

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

相关内容