问题描述
我在一个文件夹中有一个脚本:
/path/to/my/script.sh
每次系统启动时(即使没有人登录到系统),我都需要运行此脚本。为了做到这一点,我需要做些什么?
最佳解决思路
您将需要以下权限的root权限。要获得root用户,请打开一个终端并运行该命令
sudo -i
并且命令提示符将更改为’#’,表明终端会话具有root权限。
选择#1:向/etc/rc.local
添加命令
vi /etc/rc.local
内容如下:
# This script is executed at the end of each multiuser runlevel
/path/to/my/script.sh || exit 1 # Added by me
exit 0
备选方案2:添加Upstart作业(适用于15.04以上的系统)
创建/etc/init/myjob.conf
vi /etc/init/myjob.conf
内容如下
description "my job"
start on startup
task
exec /path/to/my/script.sh
选择#3:添加一个init脚本(过时)
在/etc/init.d/myscript
中创建一个新脚本。
vi /etc/init.d/myscript
(显然它不一定要被称为”myscript”。)在这个脚本中,做任何你想做的事情。也许只是运行你提到的脚本。
#!/bin/sh
/path/to/my/script.sh
使其可执行。
chmod ugo+x /etc/init.d/myscript
配置init系统以在启动时运行此脚本。
update-rc.d myscript defaults
次佳解决思路
你不需要root,甚至不需要登录。
您可以编辑您的crontab(crontab -e
)并创建一个如下所示的条目:
@reboot /path/to/script.sh
这样,你可以像普通用户一样运行它。 @reboot
只是表示它在计算机启动时运行(不一定在重新启动时运行)。
第三种解决思路
从终端
-
在
~/.config/autostart
文件夹中创建文件newshell.sh.desktop
:gedit ~/.config/autostart/newshell.sh.desktop
-
更改
Exec
,Name
和Comment
值并添加到文件中:第一行[Desktop Entry] Type=Application Exec=/full/link/to/your/newshell.sh Name=newshell Comment=whatever you want
-
保存
要么
你可以从GUI中完成:
-
在Ubuntu 14.04中运行”startup applications”工具,你只需在搜索框中输入它。
-
添加相同的
Exec
,Name
和Comment
。
第四种思路
在你家里,你有一个名为.bashrc的文件。该文件在会话开始时执行。
只要在文件末尾加上这样的内容即可:
sh /path/to/your/script.sh
编辑:对不起,我没有回答你的问题,因为我的解决方案是在用户登录时执行的…
要在登录之前执行某些操作,可以尝试使用rcconf或rc-file:http://www.debianadmin.com/manage-linux-init-or-startup-scripts.html