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 example
或Exec=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.sh
和run_command.sh
。 - 为方便起见,使它们都是可执行的。
-
将以下命令添加到启动应用程序(Dash>启动应用程序>添加)
/path/to/create_trigger.sh
-
将以下行添加到
/etc/crontab
文件(sudo nano /etc/crontab
):* * * * * root /path/to/run_command.sh
现在,已定义的命令在登录后的一分钟内运行一次。