Hero Image
开机自启动

设置程序开机自启动 开机自启动项的实现在ubuntu以及linux操作系统中一般采用systemd;在docker中一般采用supervisor来实现。 systemd systemd是Ubuntu系统中非常重要的一个组件,可以提高系统的稳定性、安全性和可维护性。具体的来看systemd是一种用于管理Linux操作系统的系统和服务的守护进程,具有非常重要的作用: 启动和停止服务:systemd可用于管理系统中运行的所有服务,包括网络、文件系统、进程和应用程序。 管理系统进程:systemd可以在系统启动时自动启动特定的进程,也可以监控进程的运行状态并在必要时重新启动它们。 控制系统挂起和恢复:systemd可以监控系统的状态并在需要时进行挂起、休眠或恢复操作。 日志记录和故障排除:systemd提供了一个统一的日志系统,可以轻松地查看和分析系统日志,有助于诊断和解决故障。 定时任务管理:systemd的timer单元可以执行定时任务,比如定期备份系统数据等。 设置Python/Cpp程序在系统开机后自动启动 要在Ubuntu系统下将Python程序设置为开机自启动并在后台运行,可以按照以下步骤操作: 创建一个shell脚本文件 在Ubuntu系统中,可以使用sudo nano命令创建一个shell脚本文件,例如: sudo nano /usr/local/bin/myprogram.sh 在打开的文本编辑器中,输入以下内容: 一个使用服务开机后自动启动python程序的例子 #!/bin/bash /usr/bin/python3 /path/to/myprogram.py & # /usr/bin/python3 : 表示Python解释器的路径, # /path/to/myprogram.py : 表示Python程序的路径。 # & : 在脚本末尾添加一个&符号可以让程序在后台运行 给shell脚本文件添加执行权限 # 给刚刚创建的shell脚本文件添加执行权限: sudo chmod +x /usr/local/bin/myprogram.sh 创建一个systemd服务文件 执行以下命令,将创建一个systemd服务文件,该文件用来描述服务以告诉systemd如何来启动和停止它。 sudo nano /etc/systemd/system/myprogram.service 在打开的文本编辑器中,输入以下内容: [Unit] Description=My Python Program After=multi-user.target [Service] Type=idle ExecStart=/bin/bash /usr/local/bin/myprogram.sh [Install] WantedBy=multi-user.target 主要参数解释: [Unit] : 配置服务中的一个节,主要用来定义服务单元。该节下有以下几个属性可以设置:Description:指定服务的描述信息。 Documentation:指定服务的文档地址。Requires:指定服务的依赖关系,表示该服务依赖于指定的服务。Wants:指定服务的依赖关系,表示该服务希望指定的服务运行,但不是必须的。After:指定服务的启动顺序,表示该服务应该在指定的服务之后启动。Before:指定服务的启动顺序,表示该服务应该在指定的服务之前启动。Conflicts:指定服务的冲突关系,表示该服务与指定的服务不能同时运行。 [Service] : 配置服务中的一个节,主要用来定义服务属性。该节下有以下几个属性可以设置:Type:指定服务的进程类型,可选值包括simple、forking、oneshot、dbus和notify等。User:指定服务运行的用户。Group:指定服务运行的用户组ExecStart:指定服务启动时要执行的命令或脚本。ExecStop:指定服务停止时要执行的命令或脚本。WorkingDirectory:指定服务的工作目录。PIDFile:指定服务进程的PID文件路径。Restart:指定服务重启的行为,设定为no: 服务退出后不会自动重新启动。always: 无论退出原因如何,服务都将自动重新启动。on-success: 仅在服务以退出状态0(成功)退出时才自动重新启动。 on-failure: 仅在服务以退出状态非0(失败)退出时才自动重新启动。on-abnormal: 仅在服务以异常退出状态(如由信号导致的退出)退出时才自动重新启动。on-abort: 仅在服务以中止退出状态(如由程序自己退出)退出时才自动重新启动。on-watchdog: 仅在服务超时退出时才自动重新启动。需要使用WatchdogSec选项来启用看门狗定时器。可以使用逗号分隔符将多个选项组合在一起。例如,Restart=on-failure,always表示在服务以失败退出时重新启动服务,同时也会在服务因其他原因退出时自动重新启动。。TimeoutStartSec:指定服务启动超时时间。TimeoutStopSec:指定服务停止超时时间。ExecStartPre:设定延迟启动。