在系统的根目录下面,new一个新的service文件出来,/etc/systemd/system/my-auto-start-app.service
内如如下:
[Unit]
Description=OPT APP Startup Script
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/jetson/sl
Environment="LD_LIBRARY_PATH=:/home/jetson/sl"
ExecStart=/home/jetson/sl/auto-start-run-app
ExecStartPre=/bin/sleep 5
Restart=on-failure
User=root
#Group=root
[Install]
WantedBy=multi-user.target
启动服务并设置自启动,保存该文件后,在系统中执行:sudo systemctl enable my-auto-start-app.service,
reboot系统后,即可实现自启动auto-start-run-app
保存并退出上述.service文件,下面的命令可以启动服务并将其添加到系统自启动项中:
sudo systemctl start my-auto-start-app.service
sudo systemctl enable my-auto-start-app.service
执行完该命令后,可以使用systemctl命令来查看该服务的状态:
sudo systemctl status my-auto-start-app.service
启动服务后,它将在系统启动时自动启动。也可以在任何时候使用以下命令停止服务并从自启动项中删除:
sudo systemctl stop my-auto-start-app.service
sudo systemctl disable my-auto-start-app.service
//-------------------------------------------------------------------------------------\\
\\-------------------------------------------------------------------------------------//
[Unit]
[Unit]是systemd服务文件的一个部分,用于定义服务的基本信息。
Description字段包含了一个简短的描述,用于描述服务的名称,方便用户在查找时快速了解服务的作用。
[Service]
[Service]是systemd服务文件中的另一个部分,用于定义服务的具体行为。
Type字段是服务运行时的类型,simple表示它是一个后台进程,通常用于只有一个进程的服务。
ExecStart字段包含了要运行的命令,多个命令可以用换行符(\n)隔开。
User字段指定了以哪个用户的身份运行这个服务,这里选择root用户。
[Install]
[Install]定义了systemd服务的安装信息。
WantedBy字段指定了服务将要执行的“target”(一种操作系统运行级别),这里指定的“multi-user.target”是Linux系统默认的、
包含多个用户的运行级别,相当于传统的“init 3”运行级别。这意味着服务将在系统启动时自动运行。
2024-06-03扩展备注:
在 .service 文件中,通过 Restart= 和 WatchdogSec= 选项可以实现服务的 keep alive 功能。
Restart= 选项:这个选项用于指定当服务发生故障时如何重启。常见的取值有:
no:不自动重启服务。
always:无论服务是否正常退出,都自动重启。
on-success:只有当服务成功退出时才重启。
on-failure:只有当服务失败退出时才重启。
on-abnormal:只有当服务非正常退出时才重启。
WatchdogSec= 选项:这个选项用于定义一个监视器(watchdog),用于检测服务是否处于活跃状态。如果监视器超过指定的时间没有收到来自服务的响应,那么系统会认为该服务已经出现问题,并触发相应的重启操作。示例:
WatchdogSec=30s
以上两个选项结合使用,可以保持对服务进行 keep alive 监控和自动重启。
需要注意的是,具体配置方法可能因不同操作系统或 init 系统而异,请根据所使用的环境参考相关文档进行配置。
备注:参考源自STARBLOCKSHADOW博客【Linux】使用systemd设置开机自启动命令,感谢