如何在启动时自动启动应用程序

如何在启动时自动启动应用程序

我是 Linux 新手,期待启动应用程序(每 10 秒切换一次 LED)。我已经编写了应用程序并且它工作正常,但现在我想在启动时自动启动它。

文档这里表示将启动脚本复制到/etc/init.d目录中,并在目录中创建指向复制脚本的符号链接rc.d

这些脚本文件的扩展名和名称应该是什么?我们可以手动添加符号链接吗rc.d?或者是否有一些特定的程序?

有什么建议如何实现它吗?

答案1

这是摘录自http://www.debian-administration.org/articles/28这似乎回答了你的问题。

注意:在下面的示例脚本中,只需添加对“ start)”部分的调用即可实际启动您的程序。您可以在不重新启动系统的情况下测试脚本的功能:使用完整路径调用它并为其指定参数“ start”或“ stop

开始:

Debian 使用类似 Sys-V 的 init 系统在系统运行级别更改时执行命令 - 例如在启动和关闭时。

如果您希望添加一个新服务以在计算机启动时启动,您应该将必要的脚本添加到该目录中/etc/init.d/。该目录中已有的许多脚本将为您提供可以执行的操作的示例。

这是一个非常简单的脚本,分为两部分:始终运行的代码和当使用“start”或“stop”调用时运行的代码。

#! /bin/sh
# /etc/init.d/blah
#

# Some things that run always
touch /var/lock/blah

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting script blah "
    echo "Could do more here"
    ;;
  stop)
    echo "Stopping script blah"
    echo "Could do more here"
    ;;
  *)
    echo "Usage: /etc/init.d/blah {start|stop}"
    exit 1
    ;;
esac

exit 0

将文件保存到正确的位置后,请通过运行“”确保其可执行chmod 755 /etc/init.d/blah

然后,您需要添加适当的符号链接,以便在系统关闭或启动时执行脚本。

最简单的方法是使用 Debian 特定的命令update-rc.d

root@skx:~# update-rc.d blah defaults
 Adding system startup for /etc/init.d/blah ...
   /etc/rc0.d/K20blah -> ../init.d/blah
   /etc/rc1.d/K20blah -> ../init.d/blah
   /etc/rc6.d/K20blah -> ../init.d/blah
   /etc/rc2.d/S20blah -> ../init.d/blah
   /etc/rc3.d/S20blah -> ../init.d/blah
   /etc/rc4.d/S20blah -> ../init.d/blah
   /etc/rc5.d/S20blah -> ../init.d/blah

答案2

较新版本的 Linux支持 systemd(正如@AlexanderShcheblikin 所说)。它比特定于 Debian 的解决方案具有更多功能并且更便携。

请阅读 这真是很棒的指南

这是一个快速参考最低限度需要:

  1. 具有可执行权限的脚本(例如myscript.sh)。
  2. myservice.service具有“.service”扩展名的单元文件(例如) /etc/systemd/system,具有 644 权限,其中包含执行脚本的命令。例如,

:

[Unit]
Description=Example systemd service.

[Service]
Type=simple
ExecStart=/bin/bash /path/to/myscript.sh

[Install]
WantedBy=multi-user.target
  1. 运行命令sudo systemctl enable myservice以使其能够在引导时启动。

答案3

使用起来crontab更加容易。

用于crontab -e编辑用户的 crontab。
在末尾添加以下行:

@reboot <command>

例子:

  • @reboot my_script.sh
  • @reboot python my_script.py arg1 arg2

最后,用于crontab -l确保您的脚本已添加到列表中。


更新:

例如,这个衬垫将添加一个在每次重新启动时运行 script.sh 的作业:

crontab -l > file; echo "@reboot /home/user/script.sh" >> file; crontab file; rm file;

图片来源:Gumby The Green 2019 年 7 月 16 日 10:20

https://stackoverflow.com/users/9364000/gumby-the-green

答案4

使用 Supervisor,这是一个有效的程序,可以使用参数管理和记录启动应用程序。了解更多信息http://supervisord.org/running.html和(按照安装说明进行操作。

创建一个conf文件/etc/supervisor/conf.d/{PROGRAM_NAME}.conf,这是代码,

[program:{PROGRAM_NAME}]
command=/usr/bin/{PROGRAM_NAME} -arg1 -arg2
autostart=true  
autorestart=true  
stderr_logfile=/var/log/supervisor/{PROGRAM_NAME}.err.log  
stdout_logfile=/var/log/supervisor/{PROGRAM_NAME}.out.log  

然后从cmd行执行:

supervisorctl reload

相关内容