前言:
此刻各位老铁们对“linux开机启动python脚本”大约比较注意,兄弟们都想要分析一些“linux开机启动python脚本”的相关资讯。那么小编同时在网上网罗了一些对于“linux开机启动python脚本””的相关资讯,希望同学们能喜欢,姐妹们一起来学习一下吧!最近项目接近尾声,用户要求实现程序开机自启动功能。系统:ubuntu18.04,软件环境:ROS1,Python3.6。
这个需求可以通过ubuntu系统自带的“启动应用程序”实现,
但是这个方法似乎并不好用,后来查资料发现通过新建服务的方式实现也不难,这里分享给大家,步骤如下:
第一步 新建启动代码的脚本文件,名称是startPY.sh;
如果文件不存在,会新建文件,打开文件后输入如下内容:
第一行是用于告诉内核使用bash来解释运行这个脚本文件;
第二行是设置延时时间的,单位为秒;
第三行是指定运行程序的路径;
第四行是用于声明环境变量,由于ROS支持的python版本是2.x的,通过这个声明则可以正常运行python3.x的脚本文件;
第五行是要运行自定义的脚本程序。还是因为安装了ROS之后,用python3命令和sudo python3命令启动程序有些依赖库是不同的,这个大家可以自己试一试。
保存并关闭该文件。
第二步 然后建立一个服务用于启动该脚本。
在/etc/systemmd/system目录下新建一个文件,名称为defsh.service
在文件中输入如下:
A区是对服务的描述;
B区是服务的启动参数,User指定了该服务的用户名,如果不写这一行,则默认root运行;ExecStart指定第1步中的脚本文件绝对路径。在这里又用到了/bin/bash,起初我没有加这段,一直都没有成功,这里还需要再深入了解一下;
C 区用于指定服务所属的启动级别。例如,multi-user.target是一个常见的启动级别,用于表示系统已经启动到多用户模式,此时应该启动所有与用户交互相关的服务。
关闭保存该文件。
第三步 配置服务
此时服务已经建立了,可以通过下列操作来控制服务:
使能服务:sudo systemctl enable defsh.service
启动服务:sudo systemctl start defsh.service
停止服务:sudo systemctl stop defsh.service
禁止服务:sudo systemctl disable defsh.service
查看服务状态:systemctl status defsh.service
更改完服务内容后,要执行这一句:sudo systemctl daemon-reload
第四步 测试
确认服务开机是否运行成功。我的python脚本test.py中,启动了一个tcpclient,当我运行一个tcpserver后,tcpclient会主动连接到server并发送消息。
好了,这就是Ubuntu系统开机启动运行脚本的制作步骤,希望对大伙儿有所帮助!
标签: #linux开机启动python脚本 #linux开机运行python脚本 #linux 运行python脚本 #linux运行python脚本没有反应 #ubuntu中v脚本怎么运行