前言
近期学弟学妹正在做校电赛,不太会配置开机自启动文件,以下是一个记录。
有问题可以发邮件到邮箱layraliu@foxmail.com
一、Supervisor
Supervisor 是一个客户端/服务器系统,允许用户控制类 UNIX 操作系统上的多个进程。它可以很方便的监听、启动、停止、重启一个或多个进程。
注意:Supervisor 只在 Python 3.4 或更高版本以及 Python 2.7 上工作。
1.安装
apt-get install supervisor
2.配置文件
cd /etc/supervisor/conf.d/ #进入配置文件夹
sudo nano 配置文件名.conf #建立配置文件并编辑
以下是配置文件:
[program:配置文件名]
directory=运行文件所在文件夹绝对路径
command=bash 运行文件绝对路径
user=root #指定用户
autostart=true #开机自启
redirect_stderr=true #将标准错误重定向
stdout_logfile=运行文件绝对路径/supervisor.log #输出错误日志文件
stopasgroup=true #是否向子进程发送停止信号
killasgroup=true #是否向子进程发送kill信号
#以上两段实际上是为了一键关闭所开的所有程序
stopsignal=INT #杀死进程时发送的信号,模拟ctrl+c
sudo supervisorctl #进入supervisor客户端的交互终端
update #重新加载新配置文件
status #查看状态
sudo supervisorctl start 配置文件名 #运行你设置自启动的文件
sudo supervisorctl stop 配置文件名 #关闭运行中的自启动文件
其实在这里,应该就已经完成了,但由于学弟学妹需要调出opencv的弹窗进行调试(如果不需要图形化界面教程已经就结束了)。
这里由于Linux内核的原因,会导致程序崩溃。
可以使用以下命令实时查看日志:tail -f supervisor.log 文件的绝对路径
可能会提示"无法连接到X服务器:0.0"(cannot connect to X server :0.0)
需要进行以下的操作。
在需要运行的sh自启动文件里加入:
export DISPLAY=:0
在主目录的.profile文件下加入:
我参考了
xhost +
经过以上操作应该就可以了,开机后如果想看程序是否运行(如果你的程序无显示),其实可以通过:ps -aux
查看所有进程。
可以直接:sudo kill 要杀死程序的pid号
(推荐)也可以通过交互式终端杀死:sudo supervisorctl stop 配置文件名
(这里值得注意的是supervisor是不支持tab补齐的。)
其实如果你开机只有一个自启动文件的话:也可:sudo supervisorctl stop all
二、开机自启动文件
1.关闭用户sudo密码
每次sudo要输入密码都很烦,可以进行以下操作:
sudo nano /etc/sudoers
在文件的最后加入:
用户名 ALL=(ALL:ALL) NOPASSWD:ALL
2.自启动sh文件
代码如下(示例):
#!/bin/bash
sudo chmod 777 /dev/ttyUSB0
export DISPLAY=:0
python3 xxx.py
三、图形化界面的打开与关闭
Linux是非常鄙视图形化界面的,请大家习惯使用非图形化界面。
暂时关闭:sudo init 3
暂时打开:sudo init 5
永久关闭:sudo systemctl set-default multi-user.target
记得reboot
永久打开:sudo systemctl set-default graphical.target
记得reboot
文章来源:https://www.toymoban.com/news/detail-857811.html
总结
希望可以给大家带来简洁的体验,我看网上是修改rc.local,其实这样非常不优雅。文章来源地址https://www.toymoban.com/news/detail-857811.html
到了这里,关于在有无图形化界面 情境下的 Linux 开机自启动文件配置 / superivisor配置 出现:提示“无法连接到X服务器:0.0“(cannot connect to X server :0.0)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!