Debian系统的开机启动和进程看护

1.推荐的做法 - systemctl

systemctl,这种做法需要事先编辑一个.service的脚本放在/etc/systemd/system,这里有一个例子:

bash 复制代码
[Unit]
Description=Guide Rtsp Server - using mediamtx
After=network.target
 
[Service]
Type=simple
WorkingDirectory=/home/app/rtsp
ExecStart=/home/app/rtsp/mediamtx /home/app/rtsp/mediamtx.yml
Restart=always
RestartSec=5s
User=cat
Group=root

[Install]
WantedBy=multi-user.target

注意,上面已经附带有进程看护的部分。放入/etc/systemd/system目录后,执行命令行:

systemctl enable xxxxx.service

sudo reboot

即可使能这个开机脚本。

2. 注意事项

  • ExecStart不需要添加 & 放入后台执行的标记。ExecStart事实上是一个阻塞式的命令行。
  • 不要把delay语句,直接放入命令行,你可以把他们放入一个.sh脚本中。比如类似:
bash 复制代码
ExecStart=/bin/sleep 2; cd /home/app/camera.ch1; python3 /home/app/camera.ch1/camera.ch1
bash 复制代码
ExecStart=/bin/sleep 2 && cd /home/app/camera.ch1 && python3 /home/app/camera.ch1/camera.ch1

都是错的。这些指令在命令行执行没有问题,但是启动脚本的ExecStart会把所有的靠后的字段认为是命令行参数。

2.1. 启动脚本的出错的调试

开机脚本的日志在/var/log里,比如:daemonlog

May 4 13:44:54 lubancat start.sh[1528]: d run OutputOperator in NPU, please call rknn_create_memory using size_with_stride.

May 4 13:44:54 lubancat start.sh[1528]: W RKNN: [13:44:53.321] Output(327): size_with_stride larger than model origin size, if need run OutputOperator in NPU, please call rknn_create_memory using size_with_stride.

May 4 13:44:54 lubancat start.sh[1528]: W RKNN: [13:44:53.321] Output(328): size_with_stride larger than model origin size, if need run OutputOperator in NPU, please call rknn_create_memory using size_with_stride.

这类日志不太大的时候,可用

journalctl -xe

查看。

2.1 日志的尺寸设置

从略,请自行查看。

4. 权限问题

如果系统的root用户无法登陆,你可以把你当前使用的用户加入root组:

bash 复制代码
sudo usermod -aG groupname username

此外,如果涉及在.service开机脚本中调用其他的.sh脚本,execStart中的被调用脚本的读+执行权限尽量加上。

bash 复制代码
chmod +rx your_script_file.sh

另外在这些脚本中,注意加上首行的执行程序声明,例如:

bash 复制代码
#!/bin/bash

# 在这里添加您希望执行的命令或操作
echo "Hello, this is my script!"

# 示例操作:启动一个Python脚本
python3 /path/to/your/python_script.py param1 param2

注意,这些开机脚本中不要添加 &移入后台的处理,让它阻塞即可。

相关推荐
周湘zx16 分钟前
k8s中的存储
linux·运维·云原生·容器·kubernetes
Linux猿17 分钟前
828华为云征文 | 云服务器Flexus X实例:one-api 部署,支持众多大模型
服务器·大模型·llm·华为云·flexus云服务器x实例·华为云服务器·one-api
_平凡之路_1 小时前
解决ubuntu22.04 gnome-terminal 无法启动的问题
linux·运维·python
凯子坚持 c1 小时前
0基础带你入门Linux之使用
linux·运维·服务器
hgdlip1 小时前
电脑ip会因为换了网络改变吗
服务器·网络·tcp/ip·电脑
EterNity_TiMe_1 小时前
【Linux基础IO】深入Linux文件描述符与重定向:解锁高效IO操作的秘密
linux·运维·服务器·学习·性能优化·学习方法
python-码博士1 小时前
Rosetta 一:手把手教你用Linux安装Rosetta(全网最简洁)
linux·运维·服务器
你可以自己看2 小时前
python中函数式编程与高阶函数,装饰器与生成器,异常处理与日志记录以及项目实战
服务器·开发语言·python
神秘的土鸡2 小时前
Linux中Docker容器构建MariaDB数据库教程
linux·运维·服务器·数据库·docker·mariadb
Amd7942 小时前
Nuxt Kit中的 Nitro 处理程序
服务器·插件·处理程序·模块化·nuxt 3·预渲染·nitro