C++程序开机自启动
1、检查系统目录/lib/systemd/system/rc-local.service,如果没有自己新建,文件内容如下图所示(如果文件存在本身是没有[Install]项的,需要自己添加进去)
cd /lib/systemd/system/
sudo vim rc-local.service //这里一定要使用sudo切换管理员账户,否则无法修改rc-local.service
2、创建/etc/rc.local脚本文件,脚本内容如下图所示(注意,这里创建的是rc.local)
sudo vim /etc/rc.local
sudo chmod +x /etc/rc.local //给rc.loacl可执行权限
rc.local文件写入以下内容
#! /bin/bash
cd /home/zxh/project/mqtt_voltage/
./mqtt_demo& fork &
cd /home/zxh/project/mqtt_water/
./mqtt_demo&
exit 0
注:如果在 /etc/rc.local 中添加的是 ./test.sh 这种类型,或者是一个可执行程序,要在末尾加上&,不然重启ubuntu的时候会卡在启动界面进不去系统;fork&同时启动多个程序。
3、启用服务
sudo systemctl enable rc-local //注意,这里是 rc-local
4、启动服务
sudo systemctl start rc-local.service //rc-local.service
sudo systemctl status rc-local.service //rc-local.service
参考链接 ubuntu18.04设置程序开机自启动_红尘-有梦的博客-CSDN博客_ubuntu18设置开机自启动
Ubuntu20.04 开机自启动程序 - lccsuse - 博客园
python程序开机自启动
1、在/etc/systemd/system/目录下创建myscript.service文件,并写入以下内容。
sudo vim /etc/systemd/system/myscript.service
# myscript.service
[Unit]
Description=My Script Service
[Service]
Type=simple
ExecStart=/usr/bin/python3 -u /home/bdlf/2、car_detect/test_zxh.py
WorkingDirectory=/home/bdlf/2、car_detect
StandardOutput=file:/home/bdlf/2、car_detect/yourfile.log
StandardError=file:/home/bdlf/2、car_detect/yourfilerror.log
User=bdlf
Group=bdlf
Restart=on-failure
Environment="PYTHONPATH=/home/bdlf/2、car_detect/"
[Install]
WantedBy=multi-user.target
注:Environment参数可通过以下命令查询
echo $PYTHONPATH
若返回为空,说明该变量没有被设置,在python可执行文件的同级目录下执行
export PYTHONPATH="$PWD"
2、重新加载服务:
sudo systemctl daemon-reload
3、启动开机自启:
sudo systemctl enable myscript.service
4、开启服务:
sudo systemctl start myscript.service
5、查看服务状态:
sudo systemctl status myscript.service
查看服务状态如果终端新鲜绿色的active(running)表示开启成功,其他显示都表示没有成功。
6、停止运行的服务
sudo systemctl stop myscript.service
7、关掉开机自启
sudo systemctl disable myscript.service