在Linux上启动脚本的最佳方式是什么?

4
我想要在系统启动时运行我的脚本,并寻找最佳方式,我的方式是:
  • 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
在基于systemd的环境中,服务是启动脚本/程序的最佳选项。请注意,您可以设置其他参数来确定何时启动服务并添加依赖项。 - Prabhakar Lad
1个回答

9
有几种方法可以实现这一点,但是对于以下任何方法,您都需要root权限。要获取root权限,请打开终端并运行以下命令:
sudo su

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

备选方案1:添加一个初始化脚本

/etc/init.d/myscript中创建一个新的脚本:

vi /etc/init.d/myscript

(显然,它不必被称为“myscript”。)在这个脚本中,你可以做任何你想做的事情。也许只需运行你提到的脚本即可。
#!/bin/sh
/path/to/my/script.sh

将其变为可执行文件:
chmod ugo+x /etc/init.d/myscript

配置启动系统以在启动时运行此脚本:
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 只是表示它在计算机启动时运行(不一定只在重新启动时运行)。

1
不喜欢这个答案 - Radical Edward

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接