龙空技术网

又学了一个新技巧,Linux开机运行自己的脚本文件

蚁哥小课堂 420

前言:

此刻各位老铁们对“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脚本怎么运行