在linux上启动时启动脚本的最佳方法是什么

时间:2016-11-29 08:43:37

标签: linux boot systemd

我想在系统启动时找到一个脚本,并寻找最好的方法,我的方法是:

  • vi /etc/systemd/system/myscript.service

    [Service]
    Type=simple
    ExecStart=/usr/bin/myscript
    CPUSchedulingPolicy=rr
    CPUSchedulingPrioty=27
    [Install]
    WantedBy=multi-user.target graphical.target
    
  • systemctl daemon-reload; systemctl enable myscript; systemctl start rmyscript

它运作良好,但只是想知道是否有另一种更好的方法。

1 个答案:

答案 0 :(得分:1)

有两种方法可以实现此目的,但您需要root权限才能实现以下任何目标。要获得root权限,请打开终端并运行命令:

sudo su

,命令提示符将变为“#”,表示终端会话具有root权限。

备选方案#1。添加intscript

/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

备选方案#2。将命令添加到/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

备选方案#3。添加Upstart作业

创建/etc/init/myjob.conf

vi /etc/init/myjob.conf

具有以下内容:

description "my job"
start on startup
task
exec /path/to/my/script.sh

顺便说一句:

如果您可以编辑crontab (crontab -e)并创建如下条目,则无需成为root用户:

@reboot /path/to/script.sh

这样,您就可以以普通用户身份运行它。 @reboot只是意味着它在计算机启动时运行(不一定只是在它重新启动时)。