linux - 在 Linux 上启动时启动脚本的最佳方式是什么

标签 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 启用我的脚本; systemctl 启动 rmyscript

它运行良好,但只是想知道是否有其他更好的方法。

最佳答案

有几种方法可以实现这一点,但您需要 root 权限才能执行以下任何操作。要获取 root,请打开终端并运行命令:

sudo su

并且命令提示符将更改为“#”,表示终端 session 具有 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 仅表示它在计算机启动时运行(不一定仅在重新启动时运行)。

关于linux - 在 Linux 上启动时启动脚本的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40861280/

相关文章:

java - Eclipse 释放堆回到系统

linux - 为什么我预定的工作没有完成?

linux - -zxvf 在 tar -zxvf <文件名> 中是什么意思?

boot - 操作系统开发 - 使用 qemu 从软盘启动

从 systemd 服务运行的 docker 启动但立即退出并重新启动,但是从 shell 运行的 docker 运行正常

django - Ubuntu 服务 Upstart 或 SystemD,Django 开发服务器即服务

php - 来自 MSSQL Server 和 Linux 的桥接数据

android - 启动时启动 Activity

assembly - 有没有办法检索 BIOS 在其中找到并加载引导扇区的设备 ID?

linux - 在USB硬盘上设置minecraft服务器服务问题