在有无图形化界面 情境下的 Linux 开机自启动文件配置 / superivisor配置 出现:提示“无法连接到X服务器:0.0“(cannot connect to X server :0.0)

avatar
作者
猴君
阅读量:0

文章目录


前言

近期学弟学妹正在做校电赛,不太会配置开机自启动文件,以下是一个记录。
有问题可以发邮件到邮箱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

总结

希望可以给大家带来简洁的体验,我看网上是修改rc.local,其实这样非常不优雅。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!