让linux开机自动运行python服务或者程序
文章目录1 了解运行机制2 编写service3 开启服务4 设置开机启动1 了解运行机制参考https://blog.csdn.net/wo18237095579/article/details/89376857#_4这篇讲的很清楚了大概意思是这样的:Systemd 是系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程。所以按照它的规则编写我们自...
1 了解运行机制
参考https://blog.csdn.net/wo18237095579/article/details/89376857#_4
这篇讲的很清楚了
大概意思是这样的:Systemd 是系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程。
所以按照它的规则编写我们自己的service单元,就可以开机启动程序。
2 编写service
位置: /etc/systemd/system
我们在这个目录下写入我们的yourServiceName.service
[Unit]
Description=yourDescription
After=network.service
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=yourSrcPath
ExecStart=/yourInstallPath/python3 server.py
PrivateTmp=true
Restart=on-failure
[Install]
WantedBy=multi-user.target
ps:大意是
Type指定了我的类型是simple
after指定了启动network.service服务后开始启动我的服务,
ExecStart指定了执行/usr/bin/python3 server.py ,
WorkingDirectory指定了工作空间在
PrivateTmp指定了开启独立的进程空间,
3 开启服务
systemctl start yourServiceName.service
可能会碰到一些问题,比如提示你参数错误,我的是因为文件内容格式有点问题报错,还有可能发生别的错误,这时候它会提示你用status命令查看
systemctl status yourServiceName.service
这里可以看到具体原因
1)Exec format error
2)再比如运行时程序出错退出了,什么的。
通过这两句命令在这里把service调试完毕。如果修改了.service,会提示使用
systemctl daemon-reload 重新加载
另外,貌似通过这种方式启动的,不会在命令行里给你输出,所以print那些就无效了,只能用其功能去测试
通过ps -aux | grep java
可以查看到已启动的python程序
可能的报错:
1)code=exited,status=203/EXEC
systemctl执行.sh脚本文件时,需要在头部指定脚本解释器
#!/bin/sh
4 设置开机启动服务(无界面)
systemctl enable yourServiceName.service
会显示Created symlink from /etc/systemd/system/multi-user.target.wants/jenkins.service to /etc/systemd/system/jenkins.service.
若需要延迟执行,可以编辑.sh文件
sleep 60
xxxxx
5 设置开机启动app(有界面)
以上是开机自启服务,适用于没有图形界面的程序。后来发现一种更加简便的方法,而且可以带界面,适用于ubuntu
首先,sudo gedit ~/.bashrc
将运行程序的命令行语句写在最底部
比如:
python xxx.py
保存后执行source ~/.bashrc
然后设置开机自启动终端就可以运行该程序了。
终端中输入gnome-session-properties打开Ubuntu开机首选项管理
添加,名称随便写,命令gnome-terminal。
更多推荐
所有评论(0)