当前位置: 首页>>技术教程>>正文


如何在启动时运行脚本?

, , ,

问题描述

我在一个文件夹中有一个脚本:

/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只是表示它在计算机启动时运行(不一定在重新启动时运行)。

第三种解决思路

从终端

  1. ~/.config/autostart文件夹中创建文件newshell.sh.desktop

    gedit ~/.config/autostart/newshell.sh.desktop
    
  2. 更改ExecNameComment值并添加到文件中:第一行

     [Desktop Entry]
     Type=Application
     Exec=/full/link/to/your/newshell.sh
     Name=newshell
     Comment=whatever you want
    
  3. 保存

要么

你可以从GUI中完成:

  1. 在Ubuntu 14.04中运行”startup applications”工具,你只需在搜索框中输入它。

  2. 添加相同的ExecNameComment

第四种思路

在你家里,你有一个名为.bashrc的文件。该文件在会话开始时执行。

只要在文件末尾加上这样的内容即可:

sh /path/to/your/script.sh

编辑:对不起,我没有回答你的问题,因为我的解决方案是在用户登录时执行的…

要在登录之前执行某些操作,可以尝试使用rcconf或rc-file:http://www.debianadmin.com/manage-linux-init-or-startup-scripts.html

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/784.html,未经允许,请勿转载。